Lua runner with rich builtin stdlib ("lunascript")
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
luna/lua/demo/args.lua

36 lines
1.0 KiB

#!/usr/bin/env luna
-- Showcase os.args(): the command-line arguments passed to the script.
--
-- Try:
-- luna lua/demo/args.lua greet --name=World extra
-- luna --sandbox lua/demo/args.lua -- greet --name=World
-- or make the file executable and call it directly (the shebang works too):
-- chmod +x lua/demo/args.lua
-- ./lua/demo/args.lua greet --name=World
local args = os.args()
print("os.args() = " .. utils.dump(args))
if #args == 0 then
print("no arguments given — try: luna lua/demo/args.lua greet --name=World extra")
return
end
-- A tiny argument parser: --key=value pairs become options, the rest positionals.
local opts, positional = {}, {}
for _, arg in ipairs(args) do
local key, value = arg:match("^%-%-([%w-]+)=(.*)$")
if key then
opts[key] = value
else
table.insert(positional, arg)
end
end
print("options = " .. utils.dump(opts))
print("positionals = " .. utils.dump(positional))
if positional[1] == "greet" then
print(("Hello, %s!"):format(opts.name or "stranger"))
end