diff --git a/spec/actions_spec.lua b/spec/actions_spec.lua index 64d1dc9..b927417 100644 --- a/spec/actions_spec.lua +++ b/spec/actions_spec.lua @@ -189,7 +189,8 @@ describe("actions", function() args.last = 1 end) parser:flag("-f"):count("0-3") - local foo = parser:command("foo"):action(function(passed_args) + local foo = parser:command("foo"):action(function(passed_args, name) + assert.equals("foo", name) args[2] = passed_args args.last = 2 end) diff --git a/src/argparse.lua b/src/argparse.lua index f14fe17..de44b2a 100644 --- a/src/argparse.lua +++ b/src/argparse.lua @@ -919,7 +919,7 @@ function ParseState:switch(parser) self.parser = parser if parser._action then - table.insert(self.command_actions, parser._action) + table.insert(self.command_actions, {action = parser._action, name = parser._name}) end for _, option in ipairs(parser._options) do @@ -1075,7 +1075,7 @@ function ParseState:finalize() end for i = #self.command_actions, 1, -1 do - self.command_actions[i](self.result) + self.command_actions[i].action(self.result, self.command_actions[i].name) end end