diff options
| author | ruki <[email protected]> | 2020-10-06 00:56:46 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-10-06 00:56:46 +0800 |
| commit | c73161f573ea50e24494114166d5ae6d25e56196 (patch) | |
| tree | 468e6d79e8d1a6eb535b946b4edb8b34560a55ef | |
| parent | 3b57dab66edacc4f0f17cebf20c5c726def7a993 (diff) | |
improve install/uninstall/package
| -rw-r--r-- | xmake/actions/clean/main.lua | 3 | ||||
| -rw-r--r-- | xmake/actions/install/install.lua | 32 | ||||
| -rw-r--r-- | xmake/actions/package/main.lua | 34 | ||||
| -rw-r--r-- | xmake/actions/uninstall/uninstall.lua | 36 |
4 files changed, 29 insertions, 76 deletions
diff --git a/xmake/actions/clean/main.lua b/xmake/actions/clean/main.lua index b1767d021..798333907 100644 --- a/xmake/actions/clean/main.lua +++ b/xmake/actions/clean/main.lua @@ -166,9 +166,6 @@ function main() -- config it first task.run("config", {target = targetname, require = false, verbose = false}) - -- init finished states - _g.finished = {} - -- enter project directory local oldir = os.cd(project.directory()) diff --git a/xmake/actions/install/install.lua b/xmake/actions/install/install.lua index 624868f42..99bbff9b5 100644 --- a/xmake/actions/install/install.lua +++ b/xmake/actions/install/install.lua @@ -104,41 +104,27 @@ function _install_target(target) os.cd(oldir) end --- install the given target and deps -function _install_target_and_deps(target) - - -- this target have been finished? - if _g.finished[target:name()] then - return - end - - -- install for all dependent targets - for _, depname in ipairs(target:get("deps")) do - _install_target_and_deps(project.target(depname)) +-- install the given targets +function _install_targets(targets) + for _, target in ipairs(targets) do + _install_target(target) end - - -- install target - _install_target(target) - - -- finished - _g.finished[target:name()] = true end -- install targets function main(targetname) - -- init finished states - _g.finished = {} - -- install the given target? if targetname and not targetname:startswith("__") then - _install_target_and_deps(project.target(targetname)) + local target = project.target(targetname) + _install_targets(target:orderdeps()) + _install_target(target) else -- install default or all targets - for _, target in pairs(project.targets()) do + for _, target in ipairs(project.ordertargets()) do local default = target:get("default") if default == nil or default == true or targetname == "__all" then - _install_target_and_deps(target) + _install_target(target) end end end diff --git a/xmake/actions/package/main.lua b/xmake/actions/package/main.lua index 0ed5a892a..fef550bd8 100644 --- a/xmake/actions/package/main.lua +++ b/xmake/actions/package/main.lua @@ -141,7 +141,7 @@ function _on_package_target(target) end -- package the given target -function _package(target) +function _package_target(target) -- enter project directory local oldir = os.cd(project.directory()) @@ -194,24 +194,11 @@ function _package(target) os.cd(oldir) end --- package the given target and deps -function _package_target_and_deps(target) - - -- this target have been finished? - if _g.finished[target:name()] then - return - end - - -- package for all dependent targets - for _, depname in ipairs(target:get("deps")) do - _package_target_and_deps(project.target(depname)) +-- package the given targets +function _package_targets(targets) + for _, target in ipairs(targets) do + _package_target(target) end - - -- package target - _package(target) - - -- finished - _g.finished[target:name()] = true end -- main @@ -236,18 +223,17 @@ function main() -- build it first task.run("build", {target = targetname, all = option.get("all")}) - -- init finished states - _g.finished = {} - -- package the given target? if targetname then - _package_target_and_deps(project.target(targetname)) + local target = project.target(targetname) + _package_targets(target:orderdeps()) + _package_target(target) else -- package default or all targets - for _, target in pairs(project.targets()) do + for _, target in ipairs(project.ordertargets()) do local default = target:get("default") if default == nil or default == true or option.get("all") then - _package_target_and_deps(target) + _package_target(target) end end end diff --git a/xmake/actions/uninstall/uninstall.lua b/xmake/actions/uninstall/uninstall.lua index d566d923d..b1f1aa071 100644 --- a/xmake/actions/uninstall/uninstall.lua +++ b/xmake/actions/uninstall/uninstall.lua @@ -104,39 +104,23 @@ function _uninstall_target(target) os.cd(oldir) end --- uninstall the given target and deps -function _uninstall_target_and_deps(target) - - -- this target have been finished? - if _g.finished[target:name()] then - return - end - - -- uninstall for all dependent targets - for _, depname in ipairs(target:get("deps")) do - _uninstall_target_and_deps(project.target(depname)) +-- uninstall the given targets +function _uninstall_targets(targets) + for _, target in ipairs(targets) do + _uninstall_target(target) end - - -- uninstall target - _uninstall_target(target) - - -- finished - _g.finished[target:name()] = true end -- uninstall function main(targetname) - -- init finished states - _g.finished = {} - - -- uninstall given target? - if targetname then - _uninstall_target_and_deps(project.target(targetname)) + -- uninstall the given target? + if targetname and not targetname:startswith("__") then + local target = project.target(targetname) + _uninstall_targets(target:orderdeps()) + _uninstall_target(target) else -- uninstall all targets - for _, target in pairs(project.targets()) do - _uninstall_target_and_deps(target) - end + _uninstall_targets(project.ordertargets()) end end |
