Skip to content

Commit

Permalink
Introduce &*ARGS-TO-CAPTURE and &*GENERATE-USAGE
Browse files Browse the repository at this point in the history
Two dynamic variables representing the default handlers that can be
used inside a ARGS-TO-CAPTURE or GENERATE-USAGE respectively.
  • Loading branch information
lizmat committed Oct 12, 2018
1 parent 9894eda commit 2c43d2b
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions src/core/Main.pm6
Expand Up @@ -13,13 +13,14 @@ my sub RUN-MAIN(&main, $mainline, :$in-as-argsfiles) {
my $provided-g-u := %caller-my<&GENERATE-USAGE>;

my &args-to-capture := $provided-a-to-c // &default-args-to-capture;
my &generate-usage := $provided-g-u // &default-generate-usage;
my %sub-main-opts := %*SUB-MAIN-OPTS // {};

# Set up proxy for default generated usage
my $usage-produced;
my $*USAGE := Proxy.new(
FETCH => -> | {
$usage-produced //= default-generate-usage(\())
$usage-produced //= default-generate-usage(&main)
},
STORE => -> | {
die 'Cannot assign to $*USAGE. Please create a '
Expand Down Expand Up @@ -98,7 +99,7 @@ my sub RUN-MAIN(&main, $mainline, :$in-as-argsfiles) {
}

# Generate $?USAGE string (default usage info for MAIN)
sub default-generate-usage($capture) {
sub default-generate-usage(&, |capture) {
my $no-named-after = nqp::isfalse(%sub-main-opts<named-anywhere>);

my @help-msgs;
Expand Down Expand Up @@ -147,7 +148,7 @@ my sub RUN-MAIN(&main, $mainline, :$in-as-argsfiles) {
.grep: { nqp::not_i(nqp::can($_,'is-hidden-from-USAGE')) }
}

for usage-candidates($capture) -> $sub {
for usage-candidates(capture) -> $sub {
my @required-named;
my @optional-named;
my @positional;
Expand Down Expand Up @@ -256,6 +257,10 @@ my sub RUN-MAIN(&main, $mainline, :$in-as-argsfiles) {
False
}

# set up other new style dynamic variables
my &*ARGS-TO-CAPTURE := &default-args-to-capture;
my &*GENERATE-USAGE := &default-generate-usage;

# Process command line arguments
my $capture := args-to-capture(&main, @*ARGS);

Expand Down Expand Up @@ -290,15 +295,11 @@ my sub RUN-MAIN(&main, $mainline, :$in-as-argsfiles) {

# Display the default USAGE message on either STDOUT/STDERR
elsif $capture<help> {
$*OUT.say: $provided-g-u
?? $provided-g-u(&main,|$capture)
!! default-generate-usage($capture);
$*OUT.say: generate-usage(&main,|$capture);
exit 0;
}
else {
$*ERR.say: $provided-g-u
?? $provided-g-u(&main,|$capture)
!! default-generate-usage($capture);
$*ERR.say: generate-usage(&main,|$capture);
exit 2;
}
}
Expand Down

0 comments on commit 2c43d2b

Please sign in to comment.