In usage message, mark arguments as optional if there is a default value

This commit is contained in:
mpeterv
2014-02-20 12:41:27 +04:00
parent 8bc02caae6
commit e99e047c4d
2 changed files with 21 additions and 1 deletions

View File

@@ -40,6 +40,20 @@ describe("tests related to usage message generation", function()
) )
end) 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 [<from>]] [<output>]]=],
parser:prepare():get_usage()
)
end)
it("creates correct usage message for commands", function() it("creates correct usage message for commands", function()
local parser = Parser "foo" local parser = Parser "foo"
:add_help(false) :add_help(false)

View File

@@ -98,10 +98,16 @@ local Flag = Option:extends {
function Argument:get_arg_usage(argname) function Argument:get_arg_usage(argname)
argname = self._argname or argname argname = self._argname or argname
local buf = {} local buf = {}
local required_argname = argname
if self._default then
required_argname = "[" .. argname .. "]"
end
local i = 1 local i = 1
while i <= math.min(self._minargs, 3) do while i <= math.min(self._minargs, 3) do
table.insert(buf, argname) table.insert(buf, required_argname)
i = i+1 i = i+1
end end