Skip to content

Commit

Permalink
Support for multi sub main
Browse files Browse the repository at this point in the history
  • Loading branch information
patrickas committed Jun 9, 2010
1 parent a546773 commit f0e5fe6
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions src/core/MAIN.pm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
our sub process-cmd-args(@args, %named) {
our sub process-cmd-args(@args is copy, %named) {
my (@positional-arguments, %named-arguments , $negate);
while ( @args ) {
my $passed_value = @args.shift;
Expand Down Expand Up @@ -67,9 +67,18 @@ our sub MAIN_HELPER() {
unless $m {
return;
}
my @named-params = $m.signature.params.grep: {.named && .type ~~ Bool};
my %named-params = @named-params».name».substr(1) Z=> @named-params».type;
my @positional = process-cmd-args(@*ARGS, %named-params);
my %named = @positional.pop;
$m(|@positional, |%named);
my $correct-main-found = False;
my @subs = $m ~~ Multi ?? $m.candidates !! ($m);
for @subs -> $main {
my @named-params = $main.signature.params.grep: {.named && .type ~~ Bool};
my %named-params = @named-params».name».substr(1) Z=> @named-params».type;
my @positional = process-cmd-args(@*ARGS, %named-params);
my %named = @positional.pop;
try {
$main(|@positional, |%named);
$correct-main-found = True;
}
return if $correct-main-found;
#TODO: Call USAGE HERE
}
}

0 comments on commit f0e5fe6

Please sign in to comment.