From 93347db1241f8c803c24c6cf615389cb237f0031 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Mon, 25 Apr 2022 15:24:56 +0100 Subject: 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. --- spec/util_argparse_spec.lua | 2 +- 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 { -- cgit v1.2.3