diff options
| author | Paul Ouellette <oue.paul18@gmail.com> | 2020-01-14 15:35:33 -0300 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2020-01-14 15:36:00 -0300 |
| commit | 4aa2098be12fe8093bff230c6368b608dbdef13b (patch) | |
| tree | 75413cb45d426c0f5adaaf2ebdbbc1dfda5d8a68 | |
| parent | d2867542c34f1779be323c3e195216cd9301c9db (diff) | |
| download | luarocks-4aa2098be12fe8093bff230c6368b608dbdef13b.tar.gz luarocks-4aa2098be12fe8093bff230c6368b608dbdef13b.tar.bz2 luarocks-4aa2098be12fe8093bff230c6368b608dbdef13b.zip | |
Add hidden command and option aliases
| -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 |
