summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-09-18 22:39:52 +0800
committerruki <[email protected]>2018-09-18 09:59:15 +0800
commit0cf22f56641adcf796a12012498e4269343c1f2c (patch)
tree9263a3c12e2efd98f2a64302f4595f5e1ca15090
parent5beacb69348c80688db553c0b671c76237866a49 (diff)
pass extra info to require action
-rw-r--r--xmake/actions/require/info.lua21
-rw-r--r--xmake/actions/require/install.lua18
-rw-r--r--xmake/actions/require/remove.lua21
-rw-r--r--xmake/actions/require/xmake.lua7
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" }
}
}