diff options
| author | ruki <[email protected]> | 2023-11-17 23:44:42 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2023-11-17 23:44:42 +0800 |
| commit | 8f959aa5b93dd69c97bef2c49a0ee093460d078e (patch) | |
| tree | 48b41664ff2c8fea5444e9789ee3b2da0bb17d59 /xmake/plugins/pack/archive.lua | |
| parent | 08aa2aa500c79d8683629c5861beeebd99683213 (diff) | |
archive package files
Diffstat (limited to 'xmake/plugins/pack/archive.lua')
| -rw-r--r-- | xmake/plugins/pack/archive.lua | 54 |
1 files changed, 51 insertions, 3 deletions
diff --git a/xmake/plugins/pack/archive.lua b/xmake/plugins/pack/archive.lua index cc6b3431a..cd389a43b 100644 --- a/xmake/plugins/pack/archive.lua +++ b/xmake/plugins/pack/archive.lua @@ -23,13 +23,61 @@ import("core.base.option") import("utils.archive") import("batchcmds") +-- get archive directory +function _get_archivedir(package) + return path.join(package:buildir(), "archive", package:format()) +end + +-- run command +function _run_command(package, cmd) + local opt = cmd.opt or {} + local kind = cmd.kind + local archivedir = _get_archivedir(package) + if kind == "cp" then + local srcpath = cmd.srcpath + local dstpath = path.join(archivedir, cmd.dstpath) + os.vcp(srcpath, dstpath, opt) + elseif kind == "rm" then + local filepath = path.join(archivedir, cmd.filepath) + os.tryrm(filepath, opt) + elseif kind == "rmdir" then + local dir = path.join(archivedir, cmd.dir) + if os.isdir(dir) then + os.tryrm(dir, opt) + end + elseif kind == "mv" then + local srcpath = cmd.srcpath + local dstpath = path.join(archivedir, cmd.dstpath) + os.vmv(srcpath, dstpath, opt) + elseif kind == "cd" then + local dir = path.join(archivedir, cmd.dir) + os.cd(dir) + elseif kind == "mkdir" then + local dir = path.join(archivedir, cmd.dir) + os.mkdir(dir) + end +end + +-- run commands +function _run_commands(package, cmds) + for _, cmd in ipairs(cmds) do + _run_command(package, cmd) + end +end + -- pack archive package function _pack_archive(package) - local batchcmds_ = batchcmds.get_installcmds(package) --- batchcmds_:runcmds() + + -- do install + _run_commands(package, batchcmds.get_installcmds(package):cmds()) + + -- archive install files + local archivedir = _get_archivedir(package) + local archivefiles = os.files(path.join(archivedir, "**")) + archive.archive(package:outputfile(), archivefiles) end -function main(package, format) +function main(package) cprint("packing %s", package:outputfile()) _pack_archive(package) end |
