diff options
-rw-r--r-- | src/luarocks/argparse.lua | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/src/luarocks/argparse.lua b/src/luarocks/argparse.lua index dc6cdb0d..f440308d 100644 --- a/src/luarocks/argparse.lua +++ b/src/luarocks/argparse.lua | |||
@@ -130,12 +130,30 @@ local multiname = {"name", function(self, value) | |||
130 | for alias in value:gmatch("%S+") do | 130 | for alias in value:gmatch("%S+") do |
131 | self._name = self._name or alias | 131 | self._name = self._name or alias |
132 | table.insert(self._aliases, alias) | 132 | table.insert(self._aliases, alias) |
133 | table.insert(self._public_aliases, alias) | ||
134 | -- If alias contains '_', accept '-' also. | ||
135 | if alias:find("_", 1, true) then | ||
136 | table.insert(self._aliases, (alias:gsub("_", "-"))) | ||
137 | end | ||
133 | end | 138 | end |
134 | 139 | ||
135 | -- Do not set _name as with other properties. | 140 | -- Do not set _name as with other properties. |
136 | return true | 141 | return true |
137 | end} | 142 | end} |
138 | 143 | ||
144 | local multiname_hidden = {"hidden_name", function(self, value) | ||
145 | typecheck("hidden_name", {"string"}, value) | ||
146 | |||
147 | for alias in value:gmatch("%S+") do | ||
148 | table.insert(self._aliases, alias) | ||
149 | if alias:find("_", 1, true) then | ||
150 | table.insert(self._aliases, (alias:gsub("_", "-"))) | ||
151 | end | ||
152 | end | ||
153 | |||
154 | return true | ||
155 | end} | ||
156 | |||
139 | local function parse_boundaries(str) | 157 | local function parse_boundaries(str) |
140 | if tonumber(str) then | 158 | if tonumber(str) then |
141 | return tonumber(str), tonumber(str) | 159 | return tonumber(str), tonumber(str) |
@@ -257,12 +275,14 @@ local Parser = class({ | |||
257 | }) | 275 | }) |
258 | 276 | ||
259 | local Command = class({ | 277 | local Command = class({ |
260 | _aliases = {} | 278 | _aliases = {}, |
279 | _public_aliases = {} | ||
261 | }, { | 280 | }, { |
262 | args = 3, | 281 | args = 3, |
263 | multiname, | 282 | multiname, |
264 | typechecked("description", "string"), | 283 | typechecked("description", "string"), |
265 | typechecked("epilog", "string"), | 284 | typechecked("epilog", "string"), |
285 | multiname_hidden, | ||
266 | typechecked("summary", "string"), | 286 | typechecked("summary", "string"), |
267 | typechecked("target", "string"), | 287 | typechecked("target", "string"), |
268 | typechecked("usage", "string"), | 288 | typechecked("usage", "string"), |
@@ -307,6 +327,7 @@ local Argument = class({ | |||
307 | 327 | ||
308 | local Option = class({ | 328 | local Option = class({ |
309 | _aliases = {}, | 329 | _aliases = {}, |
330 | _public_aliases = {}, | ||
310 | _mincount = 0, | 331 | _mincount = 0, |
311 | _overwrite = true | 332 | _overwrite = true |
312 | }, { | 333 | }, { |
@@ -317,6 +338,7 @@ local Option = class({ | |||
317 | typechecked("convert", "function", "table"), | 338 | typechecked("convert", "function", "table"), |
318 | boundaries("args"), | 339 | boundaries("args"), |
319 | boundaries("count"), | 340 | boundaries("count"), |
341 | multiname_hidden, | ||
320 | typechecked("target", "string"), | 342 | typechecked("target", "string"), |
321 | typechecked("defmode", "string"), | 343 | typechecked("defmode", "string"), |
322 | typechecked("show_default", "boolean"), | 344 | typechecked("show_default", "boolean"), |
@@ -505,22 +527,22 @@ function Option:_get_label_lines() | |||
505 | 527 | ||
506 | if #argument_list == 0 then | 528 | if #argument_list == 0 then |
507 | -- Don't put aliases for simple flags like `-h` on different lines. | 529 | -- Don't put aliases for simple flags like `-h` on different lines. |
508 | return {table.concat(self._aliases, ", ")} | 530 | return {table.concat(self._public_aliases, ", ")} |
509 | end | 531 | end |
510 | 532 | ||
511 | local longest_alias_length = -1 | 533 | local longest_alias_length = -1 |
512 | 534 | ||
513 | for _, alias in ipairs(self._aliases) do | 535 | for _, alias in ipairs(self._public_aliases) do |
514 | longest_alias_length = math.max(longest_alias_length, #alias) | 536 | longest_alias_length = math.max(longest_alias_length, #alias) |
515 | end | 537 | end |
516 | 538 | ||
517 | local argument_list_repr = table.concat(argument_list, " ") | 539 | local argument_list_repr = table.concat(argument_list, " ") |
518 | local lines = {} | 540 | local lines = {} |
519 | 541 | ||
520 | for i, alias in ipairs(self._aliases) do | 542 | for i, alias in ipairs(self._public_aliases) do |
521 | local line = (" "):rep(longest_alias_length - #alias) .. alias .. " " .. argument_list_repr | 543 | local line = (" "):rep(longest_alias_length - #alias) .. alias .. " " .. argument_list_repr |
522 | 544 | ||
523 | if i ~= #self._aliases then | 545 | if i ~= #self._public_aliases then |
524 | line = line .. "," | 546 | line = line .. "," |
525 | end | 547 | end |
526 | 548 | ||
@@ -531,7 +553,7 @@ function Option:_get_label_lines() | |||
531 | end | 553 | end |
532 | 554 | ||
533 | function Command:_get_label_lines() | 555 | function Command:_get_label_lines() |
534 | return {table.concat(self._aliases, ", ")} | 556 | return {table.concat(self._public_aliases, ", ")} |
535 | end | 557 | end |
536 | 558 | ||
537 | function Argument:_get_description() | 559 | function Argument:_get_description() |
@@ -569,7 +591,7 @@ end | |||
569 | function Option:_get_default_target() | 591 | function Option:_get_default_target() |
570 | local res | 592 | local res |
571 | 593 | ||
572 | for _, alias in ipairs(self._aliases) do | 594 | for _, alias in ipairs(self._public_aliases) do |
573 | if alias:sub(1, 1) == alias:sub(2, 2) then | 595 | if alias:sub(1, 1) == alias:sub(2, 2) then |
574 | res = alias:sub(3) | 596 | res = alias:sub(3) |
575 | break | 597 | break |