]> hydra-www.ietfng.org Git - csdb/commitdiff
Move iter_gnu_digest_stderr to cdblib
authorNathaniel Wesley Filardo <nwfilardo@gmail.com>
Sat, 19 Feb 2022 10:12:11 +0000 (10:12 +0000)
committerNathaniel Wesley Filardo <nwfilardo@gmail.com>
Sat, 19 Feb 2022 10:12:48 +0000 (10:12 +0000)
cdb
cdblib.lua

diff --git a/cdb b/cdb
index 5a24ada1c82a74fda8dae04167ffce7e0f83cde2..912c97af035a9b7b5d95450e7e7a9a01bf9e620b 100755 (executable)
--- a/cdb
+++ b/cdb
@@ -90,13 +90,6 @@ end
 ----------------------------------------------------------------- }}}
 ----------------------------------------------- Command utilities {{{
 
-local function iter_gnu_digest_stderr(baseiter)
-  local errcb = function(line)
-      io.stderr:write("Bad line: ", line, "\n")
-      return true -- continue iteration
-    end
-  return cdblib.iter_gnu_digest(errcb, baseiter)
-end
 
 local function mk_progress_pair(fn)
   local progeach = function() end
@@ -272,8 +265,8 @@ mksubcmd(function(c)
     end
   end
 
-
-  local mkiter = iter_gnu_digest_stderr(cdblib.iter_lines_or_nul(args.inul))
+  local mkiter = cdblib.iter_gnu_digest_stderr(
+    cdblib.iter_lines_or_nul(args.inul))
   local sth_hash_find = assert(sql_mk_hashid_find(dbh))
   local sth_path_by_hash = assert(sql_mk_pathid_find_by_hash(dbh))
   local sth_superseder_by_hash = assert(sql_mk_superseder_find_by_hash(dbh))
@@ -656,7 +649,7 @@ mksubcmd(function(c)
   local rex = (args.predicate == "in")
   local renderer = renderer_for(args)
   local sth = assert(sql_mk_hashid_find(dbh))
-  for h, p in iter_gnu_digest_stderr(cdblib.iter_lines())() do
+  for h, p in cdblib.iter_gnu_digest_stderr(cdblib.iter_lines())() do
    local res = sql_run_one_x(sth, h)
    if (res ~= nil) == rex then io.write(renderer(h, p)) end
   end
@@ -683,7 +676,7 @@ mksubcmd(function(c)
   local mkiter = cdblib.iter_lines_or_nul(args.inul)
   local mkiter = args.in_paths
    and cdblib.iter_just_paths_as_digest(args.in_paths, mkiter)
-    or iter_gnu_digest_stderr(mkiter)
+    or cdblib.iter_gnu_digest_stderr(mkiter)
 
   local sth = sql_mk_pathid_find(dbh)
   for h, p in mkiter() do
@@ -716,7 +709,8 @@ mksubcmd(function(c)
       FROM path_hash NATURAL JOIN hashes WHERE pathid = ? AND hash != ?]]))
 
   local fail = 0
-  for h, p in iter_gnu_digest_stderr(cdblib.iter_lines_or_nul(args.inul))() do
+  for h, p in cdblib.iter_gnu_digest_stderr(
+                cdblib.iter_lines_or_nul(args.inul))() do
     p = plpath.normpath(plpath.join(args.graft, p))
     local pid = sql_run_one_x(sth_path_find, p)
     if pid == nil then
@@ -904,7 +898,7 @@ mksubcmd(function(c)
 
   local progeach, progfin = mk_progress_pair(args.progress)
 
-  for h, p in iter_gnu_digest_stderr(mkiter)() do
+  for h, p in cdblib.iter_gnu_digest_stderr(mkiter)() do
     local docommit = false
     p = plpath.normpath(plpath.join(args.graft, p))
     local pid = sql_run_one_x(sth_path_upsert, p)[1]
index 69d7acc5e1a5be5961300b4ff27f7c3c6098cfd0..3e3748c800a4ef0055d0736fd7152c5ee6cf2be9 100644 (file)
@@ -29,7 +29,7 @@ _M.unescape_gnu_digest = unescape_gnu_digest
 -- Iterate a GNU digest tool stream, canonicalizing file names into their
 -- unescaped form if necessary.  `errcb` is invoked for lines that do not match
 -- and may return `false` to stop iteration.
-function _M.iter_gnu_digest(errcb, baseiter)
+local function iter_gnu_digest(errcb, baseiter)
   return function() return coroutine.wrap(function()
     for line in baseiter() do
       if line == nil then return nil end
@@ -42,6 +42,16 @@ function _M.iter_gnu_digest(errcb, baseiter)
     end
   end) end
 end
+_M.iter_gnu_digest = iter_gnu_digest
+
+function _M.iter_gnu_digest_stderr(baseiter)
+  local errcb = function(line)
+      io.stderr:write("Bad line: ", line, "\n")
+      return true -- continue iteration
+    end
+  return iter_gnu_digest(errcb, baseiter)
+end
+
 
 function _M.iter_just_paths_as_digest(dummyhash, baseiter)
   return function() return coroutine.wrap(function()