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.
36 lines
1.0 KiB
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
|
|
|