diff options
| author | ruki <[email protected]> | 2018-09-18 22:39:52 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-09-18 09:59:15 +0800 |
| commit | 0cf22f56641adcf796a12012498e4269343c1f2c (patch) | |
| tree | 9263a3c12e2efd98f2a64302f4595f5e1ca15090 | |
| parent | 5beacb69348c80688db553c0b671c76237866a49 (diff) | |
pass extra info to require action
| -rw-r--r-- | xmake/actions/require/info.lua | 21 | ||||
| -rw-r--r-- | xmake/actions/require/install.lua | 18 | ||||
| -rw-r--r-- | xmake/actions/require/remove.lua | 21 | ||||
| -rw-r--r-- | xmake/actions/require/xmake.lua | 7 |
4 files changed, 62 insertions, 5 deletions
diff --git a/xmake/actions/require/info.lua b/xmake/actions/require/info.lua index efb7810b5..7a7db56c9 100644 --- a/xmake/actions/require/info.lua +++ b/xmake/actions/require/info.lua @@ -24,6 +24,7 @@ -- imports import("core.base.task") +import("core.base.option") import("action.filter") import("package") import("repository") @@ -45,11 +46,29 @@ function main(requires) task.run("repo", {update = true}) end + -- get extra info + local extra = option.get("extra") + local extrainfo = nil + if extra then + local tmpfile = os.tmpfile() .. ".lua" + io.writefile(tmpfile, "{" .. extra .. "}") + extrainfo = io.load(tmpfile) + os.tryrm(tmpfile) + end + + -- init requires extra info + local requires_extra = {} + if extrainfo then + for _, require_str in ipairs(requires) do + requires_extra[require_str] = extrainfo + end + end + -- show title print("The package infos:") -- list all packages - for _, instance in ipairs(package.load_packages(requires)) do + for _, instance in ipairs(package.load_packages(requires, extrainfo and {requires_extra = requires_extra} or nil)) do -- show package name local requireinfo = instance:requireinfo() or {} diff --git a/xmake/actions/require/install.lua b/xmake/actions/require/install.lua index 120d6ed96..e43e99b4d 100644 --- a/xmake/actions/require/install.lua +++ b/xmake/actions/require/install.lua @@ -113,6 +113,24 @@ function main(requires) return end + -- get extra info + local extra = option.get("extra") + local extrainfo = nil + if extra then + local tmpfile = os.tmpfile() .. ".lua" + io.writefile(tmpfile, "{" .. extra .. "}") + extrainfo = io.load(tmpfile) + os.tryrm(tmpfile) + 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 + -- enter environment environment.enter() diff --git a/xmake/actions/require/remove.lua b/xmake/actions/require/remove.lua index d58a780ee..98bfa61c3 100644 --- a/xmake/actions/require/remove.lua +++ b/xmake/actions/require/remove.lua @@ -24,6 +24,7 @@ -- imports import("core.base.task") +import("core.base.option") import("package") import("repository") import("environment") @@ -48,8 +49,26 @@ function main(requires) -- clear the detect cache cache.clear() + -- get extra info + local extra = option.get("extra") + local extrainfo = nil + if extra then + local tmpfile = os.tmpfile() .. ".lua" + io.writefile(tmpfile, "{" .. extra .. "}") + extrainfo = io.load(tmpfile) + os.tryrm(tmpfile) + end + + -- init requires extra info + local requires_extra = {} + if extrainfo then + for _, require_str in ipairs(requires) do + requires_extra[require_str] = extrainfo + end + end + -- remove all packages - for _, instance in ipairs(package.load_packages(requires, {nodeps = true})) do + for _, instance in ipairs(package.load_packages(requires, {nodeps = true, requires_extra = requires_extra})) do local requireinfo = instance:requireinfo() or {} if os.isdir(instance:directory()) then diff --git a/xmake/actions/require/xmake.lua b/xmake/actions/require/xmake.lua index 8fa5e44dd..94d4b9db0 100644 --- a/xmake/actions/require/xmake.lua +++ b/xmake/actions/require/xmake.lua @@ -52,11 +52,12 @@ task("require") , {nil, "info", "k", nil, "Show the given package info." } , {'s', "search", "k", nil, "Search for the given packages from repositories." } , {nil, "remove", "k", nil, "Remove the installed packages." } + , {nil, "extra", "kv", nil, "Set the extra info of packages." } , { } , {nil, "requires", "vs", nil, "The package requires.", ".e.g", - " $ xmake require zlib tboox.tbox", - " $ xmake require \"zlib >=1.2.11\" \"tboox.tbox master\"", - " $ xmake require \"[email protected]:tboox/[email protected] >=1.6.0 <1.6.1 || master\"" } + " $ xmake require zlib tbox", + " $ xmake require \"zlib >=1.2.11\" \"tbox master\"", + " $ xmake require --extra=\"debug=true,system=false\" tbox" } } } |
