aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/luarocks/argparse.lua36
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
137end} 142end}
138 143
144local 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
155end}
156
139local function parse_boundaries(str) 157local 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
259local Command = class({ 277local 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
308local Option = class({ 328local 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()
531end 553end
532 554
533function Command:_get_label_lines() 555function Command:_get_label_lines()
534 return {table.concat(self._aliases, ", ")} 556 return {table.concat(self._public_aliases, ", ")}
535end 557end
536 558
537function Argument:_get_description() 559function Argument:_get_description()
@@ -569,7 +591,7 @@ end
569function Option:_get_default_target() 591function 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