diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3build/l3build-manifest.lua')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3build/l3build-manifest.lua | 280 |
1 files changed, 0 insertions, 280 deletions
diff --git a/Master/texmf-dist/tex/latex/l3build/l3build-manifest.lua b/Master/texmf-dist/tex/latex/l3build/l3build-manifest.lua deleted file mode 100644 index 3b899d55fd8..00000000000 --- a/Master/texmf-dist/tex/latex/l3build/l3build-manifest.lua +++ /dev/null @@ -1,280 +0,0 @@ ---[[ - -File l3build-manifest.lua Copyright (C) 2017-2018 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 - ================ - 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() - - -- build list of ctan files - ctanfiles = {} - for _,f in ipairs(filelist(ctandir.."/"..ctanpkg,"*.*")) do - ctanfiles[f] = true - end - tdsfiles = {} - for _,subdir in ipairs({"/doc/","/source/","/tex/"}) do - for _,f in ipairs(filelist(tdsdir..subdir..moduledir,"*.*")) do - tdsfiles[f] = true - end - end - - local manifest_entries = manifest_setup() - - for ii,_ in ipairs(manifest_entries) do - manifest_entries[ii] = manifest_build_list(manifest_entries[ii]) - end - - manifest_write(manifest_entries) - - printline = "Manifest written to " .. manifestfile - print((printline:gsub(".","*"))) print(printline) print((printline:gsub(".","*"))) - -end - ---[[ - Internal Manifest functions: build_list - --------------------------------------- ---]] - -manifest_build_list = function(entry) - - if not(entry.subheading) then - - entry = manifest_build_init(entry) - - -- build list of excluded files - for _,glob_list in ipairs(entry.exclude) do - for _,this_glob in ipairs(glob_list) do - for _,this_file in ipairs(filelist(maindir,this_glob)) do - entry.excludes[this_file] = true - end - end - end - - -- build list of matched files - for _,glob_list in ipairs(entry.files) do - for _,this_glob in ipairs(glob_list) do - - local these_files = filelist(entry.dir,this_glob) - these_files = manifest_sort_within_match(these_files) - - for _,this_file in ipairs(these_files) do - entry = manifest_build_file(entry,this_file) - end - - entry.files_ordered = manifest_sort_within_group(entry.files_ordered) - - end - end - - end - - return entry - -end - - -manifest_build_init = function(entry) - - -- currently these aren't customisable; I guess they could be? - local manifest_group_defaults = { - skipfiledescription = false , - rename = false , - dir = maindir , - exclude = {excludefiles} , - flag = true , - } - - -- internal data added to each group in the table that needs to be initialised - local manifest_group_init = { - N = 0 , -- # matched files - ND = 0 , -- # descriptions - matches = {} , - excludes = {} , - files_ordered = {} , - descr = {} , - Nchar_file = 4 , -- TODO: generalise - Nchar_descr = 11 , -- TODO: generalise - } - - -- copy default options to each group if necessary - for kk,ll in pairs(manifest_group_defaults) do - if entry[kk] == nil then - entry[kk] = ll - end - -- can't use "entry[kk] = entry[kk] or ll" because false/nil are indistinguishable! - end - - -- initialisation for internal data - for kk,ll in pairs(manifest_group_init) do - entry[kk] = ll - end - - -- allow nested tables by requiring two levels of nesting - if type(entry.files[1])=="string" then - entry.files = {entry.files} - end - if type(entry.exclude[1])=="string" then - entry.exclude = {entry.exclude} - end - - return entry - -end - - -manifest_build_file = function(entry,this_file) - - if entry.rename then - this_file = this_file:gsub(entry.rename[1],entry.rename[2]) - end - - if not entry.excludes[this_file] then - - entry.N = entry.N+1 - if not(entry.matches[this_file]) then - - entry.matches[this_file] = true -- store the file name - entry.files_ordered[entry.N] = this_file -- store the file order - entry.Nchar_file = math.max(entry.Nchar_file,this_file:len()) - - end - - if not(entry.skipfiledescription) then - - local ff = assert(io.open(entry.dir .. "/" .. this_file, "r")) - this_descr = manifest_extract_filedesc(ff,this_file) - ff:close() - - if this_descr and this_descr ~= "" then - entry.descr[this_file] = this_descr - entry.ND = entry.ND+1 - entry.Nchar_descr = math.max(entry.Nchar_descr,this_descr:len()) - end - - end - end - - return entry - -end - ---[[ - Internal Manifest functions: write - ---------------------------------- ---]] - -manifest_write = function(manifest_entries) - - local f = assert(io.open(manifestfile, "w")) - manifest_write_opening(f) - - for ii,vv in ipairs(manifest_entries) do - if manifest_entries[ii].subheading then - manifest_write_subheading(f,manifest_entries[ii].subheading,manifest_entries[ii].description) - elseif manifest_entries[ii].N > 0 then - manifest_write_group(f,manifest_entries[ii]) - end - end - - f:close() - -end - - -manifest_write_group = function(f,entry) - - manifest_write_group_heading(f,entry.name,entry.description) - - if entry.ND > 0 then - - for ii,file in ipairs(entry.files_ordered) do - local descr = entry.descr[file] or "" - local param = { - dir = entry.dir , - count = ii , - filemaxchar = entry.Nchar_file , - descmaxchar = entry.Nchar_descr , - ctanfile = ctanfiles[file] , - tdsfile = tdsfiles[file] , - flag = false , - } - - if entry.flag then - param.flag = " " - if tdsfiles[file] and not(ctanfiles[file]) then - param.flag = "† " - elseif ctanfiles[file] then - param.flag = "‡ " - end - end - - if ii == 1 then - -- header of table - -- TODO: generalise - local p = {} - for k,v in pairs(param) do p[k] = v end - p.count = -1 - p.flag = p.flag and "Flag" - manifest_write_group_file_descr(f,"File","Description",p) - p.flag = p.flag and "--- " - manifest_write_group_file_descr(f,"---","---",p) - end - - manifest_write_group_file_descr(f,file,descr,param) - end - - else - - for ii,file in ipairs(entry.files_ordered) do - local param = { - dir = entry.dir , - count = ii , - filemaxchar = entry.Nchar_file , - ctanfile = ctanfiles[file] , - tdsfile = tdsfiles[file] , - } - if entry.flag then - param.flag = "" - if tdsfiles[file] and not(ctanfiles[file]) then - param.flag = "†" - elseif ctanfiles[file] then - param.flag = "‡" - end - end - manifest_write_group_file(f,file,param) - end - - end - -end - |