diff options
| author | ruki <[email protected]> | 2020-02-17 22:49:31 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-02-17 10:57:07 +0800 |
| commit | 82752d654d9f34619e7a8f4e39abb9cbdaf0957a (patch) | |
| tree | 717adf3b1112ff84471d42d758bbe561fa388ce3 /xmake/actions/require/uninstall.lua | |
| parent | 8368581d63ff27a0edc3928a8a391b2cf3e1e4bc (diff) | |
improve to require/install and uninstall
Diffstat (limited to 'xmake/actions/require/uninstall.lua')
| -rw-r--r-- | xmake/actions/require/uninstall.lua | 63 |
1 files changed, 42 insertions, 21 deletions
diff --git a/xmake/actions/require/uninstall.lua b/xmake/actions/require/uninstall.lua index 4c930f502..2ce1d4137 100644 --- a/xmake/actions/require/uninstall.lua +++ b/xmake/actions/require/uninstall.lua @@ -26,14 +26,43 @@ import("impl.package") import("impl.repository") import("impl.environment") --- uninstall the given packages -function main(package_names) +-- get requires and extra config +function _get_requires(requires) - -- no package name? - if not package_names then + -- init requires + local requires_extra = nil + if not requires then + requires, requires_extra = project.requires_str() + end + if not requires or #requires == 0 then return end + -- get extra info + local extra = option.get("extra") + local extrainfo = nil + if extra then + local v, err = string.deserialize(extra) + if err then + raise(err) + else + extrainfo = v + end + end + + -- force to use the given requires extra info + if extrainfo then + requires_extra = requires_extra or {} + for _, require_str in ipairs(requires) do + requires_extra[require_str] = extrainfo + end + end + return requires, requires_extra +end + +-- uninstall the given packages +function main(requires) + -- enter environment environment.enter() @@ -42,23 +71,12 @@ function main(package_names) task.run("repo", {update = true}) end - -- get project requires - local project_requires, requires_extra = project.requires_str() - if not project_requires then - raise("requires(%s) not found in project!", table.concat(requires, " ")) - end - - -- find required package in project - local requires = {} - for _, name in ipairs(package_names) do - for _, require_str in ipairs(project_requires) do - if require_str:split(' ')[1]:lower() == name:lower() then - table.insert(requires, require_str) - end - end - end - if #requires == 0 then - raise("%s not found in project!", table.concat(package_names, " ")) + -- get requires and extra config + local requires_extra = nil + requires, requires_extra = _get_requires(requires) + if not requires or #requires == 0 then + raise("requires(%s) not found!", table.concat(requires, " ")) + return end -- uninstall packages @@ -66,6 +84,9 @@ function main(package_names) for _, instance in ipairs(packages) do print("uninstall: %s%s ok!", instance:name(), instance:version_str() and ("-" .. instance:version_str()) or "") end + if #packages == 0 then + print("local packages not found!") + end -- leave environment environment.leave() |
