summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/mkimport83
1 files changed, 49 insertions, 34 deletions
diff --git a/scripts/mkimport b/scripts/mkimport
index e393a7a..cd44450 100755
--- a/scripts/mkimport
+++ b/scripts/mkimport
@@ -667,6 +667,23 @@ local tell = function (arg)
return describe (target, location)
end
+local build_paths = function (argv)
+ if not argv or type (argv) ~= "table" then die "build_paths" end
+
+ local orig_dir = lfs.currentdir ()
+ local base_dir = orig_dir .. loader_orig_dir
+
+ local ret = {
+ orig_dir = orig_dir,
+ base_dir = base_dir,
+ merge_name = base_dir .. loader_merge_name,
+ target_name = orig_dir .. loader_target_dir
+ .. stringformat (loader_target_name, os.date ("%F")),
+ output_name = base_dir .. loader_output_name,
+ }
+ return ret
+end
+
--[[doc--
Packaging works as follows:
@@ -685,44 +702,40 @@ end
--doc]]--
-local package = function (args)
- local t0 = osgettimeofday ()
- local orig_dir = lfs.currentdir ()
- local base_dir = orig_dir .. loader_orig_dir
- local merge_name = base_dir .. loader_merge_name
- --- output name is fixed so we have to deal with it but maybe we can
- --- get a patch to mtx-package upstreamed in the future
- local output_name = base_dir .. loader_output_name
- local target_name = orig_dir .. loader_target_dir
- .. stringformat (loader_target_name, os.date ("%F"))
- status ("assuming fontloader source in %s", base_dir)
- status ("reading merge instructions from %s", merge_name)
- status ("mtx-package result at %s", output_name)
- status ("writing output to %s", target_name)
+local package = function (argv)
+ local t0 = osgettimeofday ()
+ local paths = build_paths (argv)
+
+ status ("assuming fontloader source in %s", paths.base_dir)
+ status ("reading merge instructions from %s", paths.merge_name)
+ status ("mtx-package result at %s", paths.output_name)
+ status ("writing output to %s", paths.target_name)
--- check preconditions
- if not lfsisdir (base_dir) then die ("directory %s does not exist", emphasis (base_dir )) end
- if not lfsisfile (merge_name) then die ("missing merge file at %s", emphasis (merge_name )) end
- if not fileiswritable (output_name) then die ("cannot write to %s", emphasis (output_name)) end
- if not fileiswritable (target_name) then die ("cannot write to %s", emphasis (target_name)) end
- if not lfschdir (base_dir) then die ("failed to cd into %s", emphasis (base_dir )) end
+ if not lfsisdir (paths.base_dir) then die ("directory %s does not exist", emphasis (paths.base_dir )) end
+ if not lfsisfile (paths.merge_name) then die ("missing merge file at %s", emphasis (paths.merge_name )) end
+ if not fileiswritable (paths.output_name) then die ("cannot write to %s", emphasis (paths.output_name)) end
+ if not fileiswritable (paths.target_name) then die ("cannot write to %s", emphasis (paths.target_name)) end
+ if not lfschdir (paths.base_dir) then die ("failed to cd into %s", emphasis (paths.base_dir )) end
- if lfsisfile (output_name) then
- status ("output file already exists at “%s”, unlinking", output_name)
- local ret, err = os.remove (output_name)
+ if lfsisfile (paths.output_name) then
+ status ("output file already exists at “%s”, unlinking",
+ paths.output_name)
+ local ret, err = os.remove (paths.output_name)
if ret == nil then
- if not lfschdir (orig_dir) then
- status ("warning: failed to cd retour into %s", emphasis (orig_dir))
+ if not lfschdir (paths.orig_dir) then
+ status ("warning: failed to cd retour into %s",
+ emphasis (paths.orig_dir))
end
die ("failed to remove existing merge package")
end
end
- --die ("missing merge file at %s", emphasis (merge_name )) end
+ --die ("missing merge file at %s", emphasis (paths.merge_name )) end
--- perform merge
- local cmd = { "mtxrun", "--script", "package", "--merge", merge_name }
+ local cmd = { "mtxrun", "--script", "package", "--merge", paths.merge_name }
local shl = tableconcat (cmd, " ")
status ("invoking %s as “%s”", emphasis "mtx-package", shl)
@@ -730,8 +743,9 @@ local package = function (args)
local fh = iopopen (shl, "r")
if not fh then
- if not lfschdir (orig_dir) then
- status ("warning: failed to cd retour into %s", emphasis (orig_dir))
+ if not lfschdir (paths.orig_dir) then
+ status ("warning: failed to cd retour into %s",
+ emphasis (paths.orig_dir))
end
die ("merge failed; failed to invoke mtxrun")
end
@@ -747,27 +761,28 @@ local package = function (args)
--- clean up
- if not lfschdir (orig_dir) then
- status ("warning: failed to cd retour into %s", emphasis (orig_dir))
+ if not lfschdir (paths.orig_dir) then
+ status ("warning: failed to cd retour into %s",
+ emphasis (paths.orig_dir))
end
--- check postconditions
- if not lfsisfile (output_name) then die ("merge failed; package not found at " .. output_name) end
+ if not lfsisfile (paths.output_name) then die ("merge failed; package not found at " .. paths.output_name) end
--- at this point we know that mtxrun was invoked correctly and the
--- result file has been created
- local res, err = osrename (output_name, target_name)
+ local res, err = osrename (paths.output_name, paths.target_name)
if res == nil then
die ("merge failed; failed to move package from %s to %s",
- output_name, target_name)
+ paths.output_name, paths.target_name)
end
status ("merge complete; operation finished in %.0f ms",
(osgettimeofday() - t0) * 1000)
- status ("a fresh fontloader at %s is ready to roll", target_name)
+ status ("a fresh fontloader at %s is ready to roll", paths.target_name)
end
local help = function ()