parent
298b09ddc9
commit
0a1bf00701
@ -0,0 +1,36 @@ |
||||
#!/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 |
||||
Loading…
Reference in new issue