lua_cliargs
lua_cliargs copied to clipboard
No way to make the value of an option optional
In the 2.x series of releases it was possible to setup an option that had no value if not set, a default value if just the flag was added but no value given, and additionally a custom value if a value was passed. In 3.x this does not seem to be possible. Flags cannot take values and options always require a value. The default for options is only parsed in the event the option flag is not even passed.
As an example, I would like the value of a --foo=[VALUE] option to be optional with a default value if set, but allow the user to set (or not set) foo. If this is optopt.lua:
#!/usr/bin/env lua
local cli = require("cliargs")
cli:set_name("optopt")
cli:set_description("optional arg test")
cli:option("-f, --foo=[VALUE]", "foo val default to fiz", "fiz")
cli:flag("-h, --help", "display this help, then exit")
local opts, err = cli:parse(_G.arg)
if not opts and err then
print(err)
os.exit(1)
end
print("foo is", opts.foo)
What I get vs. what I expect:
# as expected
$ ./optopt.lua -f buz
foo is buz
# unexpected, no option should mean no value
$ ./optopt.lua
foo is fiz
# unexpected, setting the option should enable the default value if no value passed
$ ./optopt.lua -f
option -f requires a value to be set