summaryrefslogtreecommitdiff
path: root/xmake/plugins/pack/main.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2023-11-24 23:09:46 +0800
committerGitHub <[email protected]>2023-11-24 23:09:46 +0800
commit51efaa718683a9bf18cd6859e60f1d5240c10c5d (patch)
tree0ae3485ef5434f8acfc70210b6910356aa5adfc5 /xmake/plugins/pack/main.lua
parent16f74fe53b4c240c8bee69e1d06dc821067f2817 (diff)
parent43ac546cbd551bf06ae37a8211c8a65d9eadbb0b (diff)
Merge pull request #4415 from xmake-io/makeself
pack runself
Diffstat (limited to 'xmake/plugins/pack/main.lua')
-rw-r--r--xmake/plugins/pack/main.lua56
1 files changed, 35 insertions, 21 deletions
diff --git a/xmake/plugins/pack/main.lua b/xmake/plugins/pack/main.lua
index 3f145cf86..c9576774f 100644
--- a/xmake/plugins/pack/main.lua
+++ b/xmake/plugins/pack/main.lua
@@ -26,6 +26,28 @@ import("private.service.remote_build.action", {alias = "remote_build_action"})
import("actions.build.main", {rootdir = os.programdir(), alias = "build_action"})
import("xpack")
+-- get packages
+function _get_packages()
+
+ -- get need formats
+ local formats_need = option.get("formats")
+ if formats_need then
+ formats_need = formats_need:split(",")
+ if formats_need[1] == "all" then
+ formats_need = nil
+ end
+ end
+
+ local packages = {}
+ for _, package in ipairs(xpack.packages()) do
+ if not formats_need or table.contains(formats_need, package:format()) then
+ table.insert(packages, package)
+ end
+ end
+ return packages
+end
+
+-- load package
function _load_package(package)
-- ensure build and output directories
@@ -39,50 +61,42 @@ function _load_package(package)
end
end
+-- pack the given package
function _on_package(package)
import(package:format())(package)
end
function _pack_package(package)
- -- get need formats
- local formats_need = option.get("formats")
- if formats_need then
- formats_need = formats_need:split(",")
- if formats_need[1] == "all" then
- formats_need = nil
- end
- end
-
-- do pack
local scripts = {
package:script("package_before"),
package:script("package", _on_package),
package:script("package_after")
}
- if not formats_need or table.contains(formats_need, package:format()) then
- _load_package(package)
- for i = 1, 3 do
- local script = scripts[i]
- if script ~= nil then
- script(package)
- end
+ _load_package(package)
+ for i = 1, 3 do
+ local script = scripts[i]
+ if script ~= nil then
+ script(package)
end
end
end
function _pack_packages()
- for _, package in ipairs(xpack.packages()) do
+ for _, package in ipairs(_get_packages()) do
_pack_package(package)
end
end
function _build_targets()
local targetnames = {}
- for _, package in ipairs(xpack.packages()) do
- local targets = package:get("targets")
- if targets then
- table.join2(targetnames, targets)
+ for _, package in ipairs(_get_packages()) do
+ if package:from_binary() then
+ local targets = package:get("targets")
+ if targets then
+ table.join2(targetnames, targets)
+ end
end
end
if #targetnames > 0 then