diff options
author | Matthew Wild <mwild1@gmail.com> | 2022-04-25 15:24:56 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2022-04-25 15:24:56 +0100 |
commit | 93347db1241f8c803c24c6cf615389cb237f0031 (patch) | |
tree | efd0cea0857752dd9778c0f70b9953fa3bfe168a | |
parent | 0eef6dde1e3193ec86f949acc114e91c36c5f365 (diff) | |
download | prosody-93347db1241f8c803c24c6cf615389cb237f0031.tar.gz prosody-93347db1241f8c803c24c6cf615389cb237f0031.zip |
util.argparse: Revise 553c6204fe5b with a different approach
The second return value is (not insensibly) assumed to be an error. Instead of
returning a value there in the success case, copy the positional arguments
into the existing opts table.
-rw-r--r-- | spec/util_argparse_spec.lua | 2 | ||||
-rw-r--r-- | util/argparse.lua | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/spec/util_argparse_spec.lua b/spec/util_argparse_spec.lua index 3994a041..0f2430b7 100644 --- a/spec/util_argparse_spec.lua +++ b/spec/util_argparse_spec.lua @@ -20,7 +20,7 @@ describe("parse", function() local arg = { "--foo"; "bar"; "--baz" }; local opts, err = parse(arg); assert.falsy(err); - assert.same({ foo = true }, opts); + assert.same({ foo = true, "bar", "--baz" }, opts); assert.same({ "bar"; "--baz" }, arg); end); diff --git a/util/argparse.lua b/util/argparse.lua index 6d227b5b..9ece050a 100644 --- a/util/argparse.lua +++ b/util/argparse.lua @@ -5,7 +5,7 @@ local function parse(arg, config) local parsed_opts = {}; if #arg == 0 then - return parsed_opts, arg; + return parsed_opts; end while true do local raw_param = arg[1]; @@ -47,7 +47,10 @@ local function parse(arg, config) end parsed_opts[param_k] = param_v; end - return parsed_opts, arg; + for i = 1, #arg do + parsed_opts[i] = arg[i]; + end + return parsed_opts; end return { |