From b3565971e4ea5525da149268b1cd372b8d77f42c Mon Sep 17 00:00:00 2001
From: Philipp Gesang <phg@phi-gamma.net>
Date: Thu, 19 Nov 2015 08:11:22 +0100
Subject: [import] allow passing search location on command line
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

And btw don’t hard code my own homedir =)
---
 scripts/mkimport | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

(limited to 'scripts')

diff --git a/scripts/mkimport b/scripts/mkimport
index e8b83c0..9ea224a 100755
--- a/scripts/mkimport
+++ b/scripts/mkimport
@@ -51,7 +51,7 @@ local tableconcat      = table.concat
 -- config
 -------------------------------------------------------------------------------
 
-local context_root        = "/home/phg/context/tex/texmf-context"
+local parms               = { }
 local our_prefix          = "fontloader"
 local luatex_fonts_prefix = "luatex"
 local fontloader_subdir   = "src/fontloader"
@@ -69,7 +69,6 @@ local subdirs = {
 local searchdirs = {
   --- order is important!
   fontloader_subdir,
-  context_root
 }
 
 local prefixes = {
@@ -259,7 +258,7 @@ end
 
 local derive_category_path = function (cat)
   local subpath  = origin_paths[cat] or die ("category " .. cat .. " unknown")
-  local location = file.join (context_root, subpath)
+  local location = file.join (parms.context_root, subpath)
   if not lfsisdir (location) then
     die ("invalid base path defined for category "
          .. cat .. " at " .. location)
@@ -482,7 +481,8 @@ end --[[ [local import_file = function (name, kind)] ]]
 
 local import = function (arg)
   if #arg > 1 then
-    local name = arg[2] or die ("invalid filename " .. tostring (arg[2]))
+    local tgt  = parms.target
+    local name = tgt or die ("invalid filename " .. tostring (tgt))
     local stat = import_file (name)
     if stat == import_failed then
       die ("failed to import file " .. name)
@@ -526,10 +526,10 @@ local search_paths = function (target)
 
   end
 
-  local found = find_in_path (context_root, origin_paths.context, target)
+  local found = find_in_path (parms.context_root, origin_paths.context, target)
   if found then return found end
 
-  local found = find_in_path (context_root, origin_paths.fontloader, target)
+  local found = find_in_path (parms.context_root, origin_paths.fontloader, target)
   if found then return found end
   return false
 end
@@ -656,7 +656,7 @@ local describe = function (target, location)
 end
 
 local tell = function (arg)
-  local target = arg[2]
+  local target = parms.target
   if not target then die "no filename given" end
 
   local location = search (target)
@@ -846,12 +846,31 @@ local check_job = function (j)
   return job_kind[j] or die ("invalid job type “%s”.", j)
 end
 
+local parse_argv = function (argv)
+  local job
+  local tgt
+  local pth
+
+  local argc = #arg
+  if argc < 1 or argc > 3 then return "help" end
+  job = arg[1] or "help"
+  if argc > 1 then
+    tgt = arg[2]
+    if argc == 3 then pth = arg[3] end
+  end
+  if not pth then pth = "~/context/tex/texmf-context" end
+  parms.context_root = kpse.expand_path (pth)
+  parms.target       = tgt
+  searchdirs [#searchdirs + 1] = pth
+  return job
+end
+
 -------------------------------------------------------------------------------
 -- entry point
 -------------------------------------------------------------------------------
 
 local main = function ()
-  local job = arg[1] or "help"
+  local job = parse_argv (arg)
   local runner = check_job (job)
   return runner(arg)
 end
-- 
cgit v1.2.3