Недоступная опция командной строки в MAIN - PullRequest
7 голосов
/ 05 мая 2019

zef search включает :$update в качестве именованного аргумента:

 multi MAIN('search', Int :$wrap = False, :$update, *@terms ($, *@))

Однако оно не распознается как таковое:

% zef search --update
Usage:
  /home/jmerelo/.rakudobrew/bin/../moar-2019.03.1/install/share/perl6/site/bin/zef [--wrap=<Int>] search [<terms> ...] -- Get a list of possible distribution candidates for the given terms
  /home/jmerelo/.rakudobrew/bin/../moar-2019.03.1/install/share/perl6/site/bin/zef [--version] -- Detailed version information
  /home/jmerelo/.rakudobrew/bin/../moar-2019.03.1/install/share/perl6/site/bin/zef [-h|--help]

Чего мне не хватаетВот?Как я могу присвоить значение этому $update?

1 Ответ

5 голосов
/ 05 мая 2019

Если я запускаю этот MAIN кандидат сам по себе, он работает:

$ perl6 -e 'multi MAIN("search", Int :$wrap = False, :$update, *@terms ($, *@)) { say "foo" }' search --update
foo

, поэтому мне кажется, что существует более одного подходящего кандидата, и это приводит к появлению сообщения обратной связи USAGE.

Именованные параметры используются только в качестве прерывателей, если только они не сделаны обязательными (что делает их фактически частью процесса отправки).Поэтому, возможно, решение состоит в том, чтобы сделать двух кандидатов:

multi MAIN('search', Int :$wrap = False, :$update!, *@terms ($, *@)) { ... }
multi MAIN('search', Int :$wrap = False,            *@terms ($, *@)) { ... }

?

...