DEPRECATED: to be replaced by Lua Code Compile Kept because the Statement filter still relies on it.
A simple builder to combine several Lua source files into one.
Requires a Lua interpreter installed.
lua lua-builder [path/to/source.lua] [-o path/to/output] [-n] [-h] [-v] [-q]The script searches through source.lua for lines of the forms:
!input filename
--!input 'filename.lua'
!input path/to/thirdfile -- a third file to readAnd replaces them with the contents of the files in question.
If first tries .lua, and if not found, .
Thus the second line above will in fact first look for
filename.lua.lua then filename.lua. See
Import line syntax below for more detail.
Contents are imported as they are. They replace the entire input line, including anything after the input command - even if it is followed by a semicolon.
!input filepath the rest of this line is ignoredFor legibility, though, I recommend adding -- before any
comment at the end of your line.
Filepaths for imported files are assumed to be relative to the source file's path. For instance, if we run:
lua lua-builder src/source.lua -o output.luaand src/source.lua contains:
input filepath/fileThe script will look for src/filepath/file.lua. If found, it
replaces the require line with the contents of the file.
The script is recursive, that is, it processes the imported files too. Paths are assumed to be relative to the imported file.
For example, if the main file includes:
input mods/moduleand mods/module.lua includes the line:
input helpers/submodulethe script attempts to import <sourcepath>mods/helpers/submodule.lua
into <sourcepath>mods/module.lua before importing the latter into
the main file.
You can disable recursion with the -n or --no-recursion option.
Import lines start with (spaces/tabs and) !input or --!input.
!inputis meant for necessary imports. If you run the source file without building it, they will generate errors. They're also more visible in syntax highlighting.--!input(two dashes, no space between them and!input) is for optional imports. The script will still import the files indicated at these lines. But if you can run the source file without building, these lines will simply be treated as comments.- Any other way of commenting out an input line deactivates it, e.g.
-- !input,-- --!input,----!inputetc.
Illustration:
!input necessary_file -- necessary import, error when running the unbuilt script
--!input optional_file -- optional import, doesn't generate an error
-- --!input third_file -- deactivated input line, won't import anythingWarning. Input lines in Lua multi-line comments aren't deactivated. Example:
--[[-- This multi-line Lua comment
contains an input line
!input somefile -- somefile.lua will be imported here
]]To trigger an import, a line must have one of the forms below (the bracketed components are optional):
[spaces] !input spaces <filepath> [spaces] [-- comment]
[spaces] !input spaces '<filepath>' [spaces] [-- comment]
[spaces] !input spaces "<filepath>" [spaces] [-- comment]
[spaces] --!input spaces <filepath> [spaces] [-- comment]
[spaces] --!input spaces '<filepath>' [spaces] [-- comment]
[spaces] --!input spaces "<filepath>" [spaces] [-- comment]There must be at least one space or tab between !input and your
<filepath>. If <filepath> contains spaces, it must be enclosed
within quotes.
The script looks for <filepath> and <filepath>.lua. If you
don't want it to look for <filepath>.lua variants, use the
-s or --strict flag.
The entire line is replaced, including any comment ending the line.
-n,--no-recursiondo not process imported files-s,--strictdo not add.luato filenames-h,--helpfor help-v,--verboseverbose mode, displays info messages-q,--quietquiet mode, no dot display warnings
If you're not sure about what the script is trying to import, use the verbose mode.
lua lua-builder main.lua -o result.lua --verboseThe script can be used in pipes. It reads from stdin if no input file is provided and writes to stdout if no output file is provided.
cat source.lua | lua lua-builder.lua | cat