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