diff --git a/spec/usage_spec.lua b/spec/usage_spec.lua index f542714..9f48da2 100644 --- a/spec/usage_spec.lua +++ b/spec/usage_spec.lua @@ -40,6 +40,20 @@ describe("tests related to usage message generation", function() ) end) + it("creates correct usage message for elements with default value", function() + local parser = Parser "foo" + :add_help(false) + parser:argument "output" + :default "a.out" + parser:option "--from" "-f" + :default "there" + + assert.equal( + [=[Usage: foo [--from []] []]=], + parser:prepare():get_usage() + ) + end) + it("creates correct usage message for commands", function() local parser = Parser "foo" :add_help(false) diff --git a/src/argparse.lua b/src/argparse.lua index e43379f..66e9694 100644 --- a/src/argparse.lua +++ b/src/argparse.lua @@ -98,10 +98,16 @@ local Flag = Option:extends { function Argument:get_arg_usage(argname) argname = self._argname or argname local buf = {} + local required_argname = argname + + if self._default then + required_argname = "[" .. argname .. "]" + end + local i = 1 while i <= math.min(self._minargs, 3) do - table.insert(buf, argname) + table.insert(buf, required_argname) i = i+1 end