lua-any(1) Helper script for multi-Lua-version shebang lines


Some Lua scripts work with multiple versions of Lua but not all of them. The upstream author of the software may hence have chosen the loose shebang line:

                #!/usr/bin/env lua
In Debian /usr/bin/lua is a valid Lua interpreter but it is under the control of the user, that can set its value to the Lua version of its choice, even one that is not able to run the script in question.

lua-any is a helper that understands metadata written in comments and selects a valid Lua interpreter. Example:

                #!/usr/bin/env lua-any
                -- Lua-Versions: 5.1 5.2
lua-any tests in turn the existence of lua5.1 and lua5.2 and executes the script with the first existing interpreter.


lua-any looks only at the first 10 lines of the script for metadata, i.e. it processes the file trough the head utility.

The format of a line is essentially key:value, where leading and trailing spaces are removed from value. The key is matched in a case insensitive way. The Lua comment, --, must have no leading spaces.

The following keys are supported:

Space separated list of Lua versions.
The common root of all interpreters. By default its value is /usr/bin/lua. Each Lua version selected in Lua-Versions is simply appended to it in order to obtain the full name of the interpreter.
Extra arguments to be passed to Lua interpreters, like -l lfs. By default this is empty.


A package using lua-any should declare its dependencies on Lua interpreters using a disjunction. Example:

                Depends: lua-any, lua5.1 | lua5.2


Enrico Tassi <[email protected]>