[latex3-commits] [git/l3build] manifest: manifest: split -manifest.lua into two: public and private (f620bb4)

Will Robertson wspr81 at gmail.com
Thu Dec 14 04:06:48 CET 2017


Repository : https://github.com/latex3/l3build
On branch  : manifest
Link       : https://github.com/latex3/l3build/commit/f620bb459e2272872e9003740dbad13772a1769d

>---------------------------------------------------------------

commit f620bb459e2272872e9003740dbad13772a1769d
Author: Will Robertson <wspr81 at gmail.com>
Date:   Thu Dec 14 13:34:15 2017 +1030

    manifest: split -manifest.lua into two: public and private


>---------------------------------------------------------------

f620bb459e2272872e9003740dbad13772a1769d
 l3build-manifest-setup.lua |  247 ++++++++++++++++++++++++++++++++++++++++++++
 l3build-manifest.lua       |  233 +++++------------------------------------
 l3build.lua                |    1 +
 3 files changed, 274 insertions(+), 207 deletions(-)

diff --git a/l3build-manifest-setup.lua b/l3build-manifest-setup.lua
new file mode 100644
index 0000000..9aa3048
--- /dev/null
+++ b/l3build-manifest-setup.lua
@@ -0,0 +1,247 @@
+--[[
+
+File l3build.lua Copyright (C) 2014-2017 The LaTeX3 Project
+
+It may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this
+license or (at your option) any later version.  The latest version
+of this license is in the file
+
+   http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3build bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+-----------------------------------------------------------------------
+
+The development version of the bundle can be found at
+
+   https://github.com/latex3/l3build
+
+for those people who are interested.
+
+--]]
+
+
+--[[
+      L3BUILD MANIFEST SETUP
+      ======================
+      This file contains all of the code that is easily replaceable by the user.
+      Either create a copy of this file, rename, and include alongside your `build.lua`
+      script and load it with `dofile()`, or simply copy/paste the definitions below
+      into your `build.lua` script directly.
+--]]
+
+
+--[[
+      Setup of manifest "groups"
+      --------------------------
+--]]
+
+manifest_setup = manifest_setup or function()
+  local groups = {
+    {
+       name    = "Source files",
+       description = [[
+These are source files for a number of purposes, including the `unpack`
+process which generates the installation files of the package. Additional
+files included here will also be installed for processing such as testing.
+       ]],
+       files   = {sourcefiles},
+    },
+    {
+       name    = "Typeset documentation source files",
+       description = [[
+These files are typeset using LaTeX to produce the PDF documentation for the package.
+       ]],
+       files   = {typesetfiles,typesetsourcefiles,typesetdemofiles},
+    },
+    {
+       name    = "Documentation files",
+       description = [[
+These files form part of the documentation but are not typeset.
+Generally they will be additional input files for the typeset
+documentation files listed above.
+       ]],
+       files   = {docfiles},
+    },
+    {
+       name    = "Text files",
+       files   = {textfiles},
+       extractfiledesc = false,
+    },
+    {
+       name    = "Demo files",
+       files   = {demofiles},
+    },
+    {
+       name    = "Bibliography and index files",
+       files   = {bibfiles,bstfiles,makeindexfiles},
+    },
+    {
+       name    = "Derived files",
+       files   = {installfiles},
+       exclude = {excludefiles,sourcefiles},
+       dir     = unpackdir,
+       extractfiledesc = false,
+    },
+    {
+       name    = "Typeset documents",
+       files   = {typesetfiles,typesetsourcefiles,typesetdemofiles},
+       rename  = {"%.%w+$", ".pdf"},
+    },
+    {
+       name    = "Support files needed for unpacking, typesetting, or checking",
+       files   = {unpacksuppfiles,typesetsuppfiles,checksuppfiles},
+       dir     = supportdir,
+    },
+    {
+       name    = "Checking-specific support files",
+       files   = {"*.*"},
+       exclude = {{".",".."},excludefiles},
+       dir     = testsuppdir,
+    },
+    {
+       name    = "Test files",
+       description = [[
+These files form the test suite for the package.
+`.lvt` or `.lte` files are the individual unit tests,
+and `.tlg` are the stored output for ensuring changes
+to the package produce the same output. These output
+files are sometimes shared and sometime specific for
+different engines (pdfTeX, XeTeX, LuaTeX, etc.).
+       ]],
+       files   = {"*"..lvtext,"*"..lveext,"*"..tlgext},
+       dir     = testfiledir,
+       extractfiledesc = false,
+    },
+  }
+  return groups
+end
+
+--[[
+      Sorting within groups
+      ---------------------
+--]]
+
+manifest_sort_within_glob = manifest_sort_within_glob or function(files)
+  table.sort(files)
+  return files
+end
+
+manifest_sort_within_group = manifest_sort_within_group or function(files)
+  --[[
+      -- no-op by default; make your own definition to customise. E.g.:
+      table.sort(files)
+  --]]
+  return files
+end
+
+--[[
+      Writing to file
+      ---------------
+--]]
+
+manifest_write_opening = manifest_write_opening or function(filehandle)
+
+  filehandle:write("# Manifest for " .. module .. "\n\n")
+  filehandle:write("This file is automatically generated with `texlua build.lua manifest`.\n")
+
+end
+
+manifest_write_group_heading = manifest_write_group_heading or function (filehandle,heading)
+
+   filehandle:write("\n## " .. heading .. "\n\n")
+
+end
+
+manifest_write_group_description = manifest_write_group_description or function(filehandle,description)
+-- Redefine as a no-op if you don't like each group to have a written description.
+
+  filehandle:write(description .. "\n")
+
+end
+
+manifest_write_group_file = manifest_write_group_file or function(filehandle,count,filename,Nchar)
+  --[[
+        filehandle : write file object
+             count : the count of the filename to be written
+          filename : the name of the file to write
+             Nchar : the maximum number of chars of all filenames in this group
+  --]]
+
+  -- no file description: plain bullet list item:
+  filehandle:write("* " .. filename .. "\n")
+
+  --[[
+    -- or if you prefer an enumerated list:
+    filehandle:write(count..". " .. filename .. "\n")
+  --]]
+
+
+end
+
+manifest_write_group_file_descr = manifest_write_group_file_descr or function(filehandle,count,filename,Nchar,descr,NcharD)
+  --[[
+        filehandle : write file object
+             count : the count of the filename to be written
+          filename : the name of the file to write
+             Nchar : the maximum number of chars of all filenames in this group
+             descr : description of the file to write
+            NcharD : the maximum number of chars of all descriptions in this group
+  --]]
+
+  -- filename+description: Github-flavoured Markdown table
+
+  if count==1 then
+    -- header of table
+    manifest_write_group_file_descr(filehandle,-1,"File",Nchar,"Description",NcharD)
+    manifest_write_group_file_descr(filehandle,-1,"---", Nchar,"---",        NcharD)
+  end
+
+  filehandle:write(string.format(
+    "  | %-"..Nchar .."s | %-"..NcharD.."s |\n",
+    filename,descr))
+
+end
+
+--[[
+      Extracting ‘descriptions’ from source files
+      -------------------------------------------
+--]]
+
+manifest_extract_filedesc = manifest_extract_filedesc or function(filehandle)
+-- no-op by default; two examples below
+end
+
+--[[
+
+-- From the first match of a pattern in a file:
+manifest_extract_filedesc = function(filehandle)
+
+  local read_string   = "*all"
+  local matchstr      = "\\section{(.-)}"
+
+  all_file = filehandle:read(read_string)
+
+  return string.match(all_file,matchstr)
+
+end
+
+-- From the match of the 2nd line (say) of a file:
+manifest_extract_filedesc = function(filehandle)
+
+  local end_read_loop = 2
+  local read_string   = "*line"
+  local matchstr      = "%%%S%s+(.*)"
+  local this_line     = ""
+
+  for ii = 1, end_read_loop do
+    this_line = filehandle:read(read_string)
+  end
+
+  return string.match(this_line,matchstr)
+
+end
+
+]]--
diff --git a/l3build-manifest.lua b/l3build-manifest.lua
index 8205c9f..5a54241 100644
--- a/l3build-manifest.lua
+++ b/l3build-manifest.lua
@@ -23,6 +23,16 @@ for those people who are interested.
 --]]
 
 
+--[[
+      L3BUILD MANIFEST
+      ================
+      If desired this entire function can be replaced; if not, it uses a number of
+      auxiliary functions which are included in this file.
+
+      Additional setup can be performed by replacing the functions lists in the file
+      `l3build-manifest-setup.lua`.
+--]]
+
 manifest = manifest or function()
 
   manifest_lists = manifest_setup()
@@ -33,96 +43,17 @@ manifest = manifest or function()
 
   manifest_write(manifest_lists)
 
-end
-
-
+  printline = "Manifest written to " .. manifestfile
+  print((printline:gsub(".","*")))  print(printline)  print((printline:gsub(".","*")))
 
-manifest_setup = manifest_setup or function()
--- this needs to be an array of tables, not a table of tables, to ensure ordering.
-  local groups = {
-    {
-       name    = "Source files",
-       description = [[
-These are source files for a number of purposes, including the `unpack`
-process which generates the installation files of the package. Additional
-files included here will also be installed for processing such as testing.
-       ]],
-       files   = {sourcefiles},
-    },
-    {
-       name    = "Typeset documentation source files",
-       description = [[
-These files are typeset using LaTeX to produce the PDF documentation for the package.
-       ]],
-       files   = {typesetfiles,typesetsourcefiles,typesetdemofiles},
-    },
-    {
-       name    = "Documentation files",
-       description = [[
-These files form part of the documentation but are not typeset.
-Generally they will be additional input files for the typeset
-documentation files listed above.
-       ]],
-       files   = {docfiles},
-    },
-    {
-       name    = "Text files",
-       files   = {textfiles},
-       extractfiledesc = false,
-    },
-    {
-       name    = "Demo files",
-       files   = {demofiles},
-    },
-    {
-       name    = "Bibliography and index files",
-       files   = {bibfiles,bstfiles,makeindexfiles},
-    },
-    {
-       name    = "Derived files",
-       files   = {installfiles},
-       exclude = {excludefiles,sourcefiles},
-       dir     = unpackdir,
-       extractfiledesc = false,
-    },
-    {
-       name    = "Typeset documents",
-       files   = {typesetfiles,typesetsourcefiles,typesetdemofiles},
-       rename  = {"%.%w+$", ".pdf"},
-    },
-    {
-       name    = "Support files needed for unpacking, typesetting, or checking",
-       files   = {unpacksuppfiles,typesetsuppfiles,checksuppfiles},
-       dir     = supportdir,
-    },
-    {
-       name    = "Checking-specific support files",
-       files   = {"*.*"},
-       exclude = {{".",".."},excludefiles},
-       dir     = testsuppdir,
-    },
-    {
-       name    = "Test files",
-       description = [[
-These files form the test suite for the package.
-`.lvt` or `.lte` files are the individual unit tests,
-and `.tlg` are the stored output for ensuring changes
-to the package produce the same output. These output
-files are sometimes shared and sometime specific for
-different engines (pdfTeX, XeTeX, LuaTeX, etc.).
-       ]],
-       files   = {"*"..lvtext,"*"..lveext,"*"..tlgext},
-       dir     = testfiledir,
-       extractfiledesc = false,
-    },
-  }
-  return groups
 end
 
+--[[
+      Internal Manifest functions: build_list
+      ---------------------------------------
+--]]
 
-
-
-manifest_build_list = manifest_build_list or function(manifest_list)
+manifest_build_list = function(manifest_list)
 
   manifest_list = manifest_build_init(manifest_list)
 
@@ -193,9 +124,10 @@ manifest_build_list = manifest_build_list or function(manifest_list)
 
 end
 
-manifest_build_init = manifest_build_init or function(manifest_list)
 
--- currently these aren't customisable; I guess they could/should be?
+manifest_build_init = function(manifest_list)
+
+  -- currently these aren't customisable; I guess they could/should be?
   local manifest_group_defaults = {
     extractfiledesc  = true           ,
     rename           = false          ,
@@ -237,8 +169,12 @@ manifest_build_init = manifest_build_init or function(manifest_list)
 end
 
 
+--[[
+      Internal Manifest functions: write
+      ----------------------------------
+--]]
 
-manifest_write = manifest_write or function(manifest_lists)
+manifest_write = function(manifest_lists)
 
   local f = assert(io.open(manifestfile, "w"))
   manifest_write_opening(f)
@@ -251,15 +187,10 @@ manifest_write = manifest_write or function(manifest_lists)
 
   f:close()
 
-  printline = "Manifest written to " .. manifestfile
-  print((printline:gsub(".","*")))
-  print(printline)
-  print((printline:gsub(".","*")))
-
 end
 
 
-manifest_write_group = manifest_write_group or function(f,manifest_list)
+manifest_write_group = function(f,manifest_list)
 
   manifest_write_group_heading(f,manifest_list.name)
 
@@ -288,115 +219,3 @@ manifest_write_group = manifest_write_group or function(f,manifest_list)
 
 end
 
-
-manifest_write_opening = manifest_write_opening or function(filehandle)
-
-  filehandle:write("# Manifest for " .. module .. "\n\n")
-  filehandle:write("This file is automatically generated with `texlua build.lua manifest`.\n")
-
-end
-
-manifest_write_group_heading = manifest_write_group_heading or function (filehandle,heading)
-
-   filehandle:write("\n## " .. heading .. "\n\n")
-
-end
-
-manifest_write_group_description = manifest_write_group_description or function(filehandle,description)
--- Redefine as a no-op if you don't like each group to have a written description.
-
-  filehandle:write(description .. "\n")
-
-end
-
-manifest_write_group_file = manifest_write_group_file or function(filehandle,count,filename,Nchar)
-  --[[
-        filehandle : write file object
-             count : the count of the filename to be written
-          filename : the name of the file to write
-             Nchar : the maximum number of chars of all filenames in this group
-  --]]
-
-  -- no file description: plain bullet list item:
-  filehandle:write("* " .. filename .. "\n")
-
-  --[[
-    -- or if you prefer an enumerated list:
-    filehandle:write(count..". " .. filename .. "\n")
-  --]]
-
-
-end
-
-manifest_write_group_file_descr = manifest_write_group_file_descr or function(filehandle,count,filename,Nchar,descr,NcharD)
-  --[[
-        filehandle : write file object
-             count : the count of the filename to be written
-          filename : the name of the file to write
-             Nchar : the maximum number of chars of all filenames in this group
-             descr : description of the file to write
-            NcharD : the maximum number of chars of all descriptions in this group
-  --]]
-
-  -- filename+description: Github-flavoured Markdown table
-
-  if count==1 then
-    -- header of table
-    manifest_write_group_file_descr(filehandle,-1,"File",Nchar,"Description",NcharD)
-    manifest_write_group_file_descr(filehandle,-1,"---", Nchar,"---",        NcharD)
-  end
-
-  filehandle:write(string.format(
-    "  | %-"..Nchar .."s | %-"..NcharD.."s |\n",
-    filename,descr))
-
-end
-
-manifest_sort_within_glob = manifest_sort_within_glob or function(files)
-  table.sort(files)
-  return files
-end
-
-manifest_sort_within_group = manifest_sort_within_group or function(files)
-  --[[
-      -- no-op by default; make your own definition to customise. E.g.:
-      table.sort(files)
-  --]]
-  return files
-end
-
-manifest_extract_filedesc = manifest_extract_filedesc or function(filehandle)
--- no-op by default; two examples below
-end
-
---[[
-
--- From the first match of a pattern in a file:
-manifest_extract_filedesc = function(filehandle)
-
-  local read_string   = "*all"
-  local matchstr      = "\\section{(.-)}"
-
-  all_file = filehandle:read(read_string)
-
-  return string.match(all_file,matchstr)
-
-end
-
--- From the match of the 2nd line (say) of a file:
-manifest_extract_filedesc = function(filehandle)
-
-  local end_read_loop = 2
-  local read_string   = "*line"
-  local matchstr      = "%%%S%s+(.*)"
-  local this_line     = ""
-
-  for ii = 1, end_read_loop do
-    this_line = filehandle:read(read_string)
-  end
-
-  return string.match(this_line,matchstr)
-
-end
-
-]]--
diff --git a/l3build.lua b/l3build.lua
index 01e6bd0..34843ff 100644
--- a/l3build.lua
+++ b/l3build.lua
@@ -2362,6 +2362,7 @@ end
 kpse.set_program_name("kpsewhich")
 build_kpse_path = dirname(kpse.lookup("l3build.lua"))
 require( kpse.lookup("l3build-manifest.lua", { path = build_kpse_path } ) )
+require( kpse.lookup("l3build-manifest-setup.lua", { path = build_kpse_path } ) )
 
 
 function version()





More information about the latex3-commits mailing list