diff options
Diffstat (limited to 'Master/texmf-dist/scripts/l3build/l3build.lua')
-rw-r--r-- | Master/texmf-dist/scripts/l3build/l3build.lua | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/l3build/l3build.lua b/Master/texmf-dist/scripts/l3build/l3build.lua new file mode 100644 index 00000000000..cb8a6d674cb --- /dev/null +++ b/Master/texmf-dist/scripts/l3build/l3build.lua @@ -0,0 +1,145 @@ +--[[ + +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. + +--]] + +-- Version information +release_date = "2018-03-08" + +-- File operations are aided by the LuaFileSystem module +local lfs = require("lfs") + +-- Local access to functions + +local assert = assert +local ipairs = ipairs +local lookup = kpse.lookup +local match = string.match +local next = next +local print = print +local select = select +local tonumber = tonumber +local exit = os.exit + +-- l3build setup and functions +kpse.set_program_name("kpsewhich") +build_kpse_path = string.match(lookup("l3build.lua"),"(.*[/])") +local function build_require(s) + require(lookup("l3build-"..s..".lua", { path = build_kpse_path } ) ) +end + +-- Minimal code to do basic checks +build_require("arguments") +build_require("help") + +-- Filter out special cases early +if options["target"] == "help" then + help() + exit(0) +elseif options["target"] == "version" then + version() + exit(0) +end + +build_require("file-functions") +build_require("typesetting") +build_require("aux") +build_require("clean") +build_require("check") +build_require("ctan") +build_require("install") +build_require("unpack") +build_require("manifest") +build_require("manifest-setup") +build_require("tagging") +build_require("stdmain") + +-- Allow main function to be disabled 'higher up' +main = main or stdmain + +-- Load configuration file if running as a script +if match(arg[0], "l3build(%.lua)$") then + -- Look for some configuration details + if fileexists("build.lua") then + dofile("build.lua") + else + print("Error: Cannot find configuration build.lua") + exit(1) + end +end + +-- Load standard settings for variables: +-- comes after any user versions +build_require("variables") + +-- Tidy up the epoch setting +-- Force an epoch if set at the command line +-- Must be done after loading variables, etc. +if options["epoch"] then + epoch = options["epoch"] + forcecheckepoch = true + forcedocepoch = true +end +normalise_epoch() + +-- Sanity check +check_engines() + +-- +-- Deal with multiple configs for tests +-- + +-- When we have specific files to deal with, only use explicit configs +-- (or just the std one) +if options["names"] then + checkconfigs = options["config"] or {stdconfig} +else + checkconfigs = options["config"] or checkconfigs +end + +if options["target"] == "check" then + if #checkconfigs > 1 then + local errorlevel = 0 + local opts = options + for i = 1, #checkconfigs do + opts["config"] = {checkconfigs[i]} + errorlevel = call({"."}, "check", opts) + if errorlevel ~= 0 then exit(1) end + end + -- Avoid running the 'main' set of tests twice + exit(0) + end +end +if #checkconfigs == 1 and + checkconfigs[1] ~= "build" and + (options["target"] == "check" or options["target"] == "save") then + local config = "./" .. checkconfigs[1] .. ".lua" + if fileexists(config) then + dofile(config) + else + print("Error: Cannot find configuration " .. checkconfigs[1]) + exit(1) + end +end + +-- Call the main function +main(options["target"], options["names"]) |