Implemented {#.} and unittest.

This commit is contained in:
Ole Tange 2010-07-14 23:33:38 +02:00
parent 248fa1c940
commit cf05dae1b1
2 changed files with 38 additions and 15 deletions

View file

@ -80,7 +80,7 @@ B<{.}> can be used the same places as B<{}>. The replacement string
B<{.}> can be changed with B<-U>. B<{.}> can be changed with B<-U>.
=item B<{>I<n>B<}> =item B<{>I<n>B<}> (beta testing)
Argument from argument file I<n> or the I<n>'th argument. See B<-a> Argument from argument file I<n> or the I<n>'th argument. See B<-a>
and B<-N>. and B<-N>.
@ -88,6 +88,14 @@ and B<-N>.
B<{>I<n>B<}> can be used the same places as B<{}>. B<{>I<n>B<}> can be used the same places as B<{}>.
=item B<{>I<n>.B<}> (beta testing)
Argument from argument file I<n> or the I<n>'th argument without
extension. Similar to B<{.}>. See B<-a> and B<-N>.
B<{>I<n>.B<}> can be used the same places as B<{.}>.
=item B<:::> I<arguments> (beta testing) =item B<:::> I<arguments> (beta testing)
Use arguments from the command line as input instead of from stdin Use arguments from the command line as input instead of from stdin
@ -111,9 +119,9 @@ stdin (standard input) will be passed to the first process run.
If B<--arg-file> is set arguments from that file will be appended. If B<--arg-file> is set arguments from that file will be appended.
=item B<::::> I<argfiles> (beta test) =item B<::::> I<argfiles> (beta testing)
Alternative version of B<-a> I<argfile1> B<-a> I<argfile2> ... Another way to write B<-a> I<argfile1> B<-a> I<argfile2> ...
See B<-a>. See B<-a>.
@ -419,7 +427,7 @@ Implies B<-X> unless B<-m> is set.
Use at most I<max-args> arguments per command line. Like B<-n> but Use at most I<max-args> arguments per command line. Like B<-n> but
also makes replacement strings B<{1}> .. B<{>I<max-args>B<}> that also makes replacement strings B<{1}> .. B<{>I<max-args>B<}> that
represents argument 1 .. I<max-args>. If too few args the {I<n>} will represents argument 1 .. I<max-args>. If too few args the B<{>I<n>B<}> will
be empty. be empty.
This will set the owner of the homedir to the user: This will set the owner of the homedir to the user:
@ -2127,9 +2135,9 @@ sub generate_command_line {
} }
$is_substituted = 1; $is_substituted = 1;
} }
if(defined $job_line and $::opt_N and $job_line =~/\{\d+\}/o) { if(defined $job_line and $::opt_N) {
if($job_line =~/\{\d+\}/o) {
# substitute {#} with args # substitute {#} with args
my $argno=1;
for my $argno (1..$::opt_N) { for my $argno (1..$::opt_N) {
my $arg = $quoted_args->[$argno-1]; my $arg = $quoted_args->[$argno-1];
if(defined $arg) { if(defined $arg) {
@ -2137,10 +2145,22 @@ sub generate_command_line {
} else { } else {
$job_line =~ s/\{$argno\}//g; $job_line =~ s/\{$argno\}//g;
} }
$argno++;
} }
$is_substituted = 1; $is_substituted = 1;
} }
if($job_line =~/\{\d+\.\}/o) {
# substitute {#.} with args
for my $argno (1..$::opt_N) {
my $arg = no_extension($quoted_args->[$argno-1]);
if(defined $arg) {
$job_line =~ s/\{$argno\.\}/$arg/g;
} else {
$job_line =~ s/\{$argno\.\}//g;
}
}
$is_substituted = 1;
}
}
if (not $is_substituted) { if (not $is_substituted) {
# append args # append args
my $arg=join(" ",@$quoted_args); my $arg=join(" ",@$quoted_args);

View file

@ -42,3 +42,6 @@ parallel -kv echo {2} {1} :::: <(echo a) <(echo b) <(echo c)
echo '### Multiple -a: nonexistent' echo '### Multiple -a: nonexistent'
stdout parallel -kv echo {2} {1} :::: nonexist nonexist2 stdout parallel -kv echo {2} {1} :::: nonexist nonexist2
stdout parallel -kv -a nonexist -a nonexist2 echo {2} {1} stdout parallel -kv -a nonexist -a nonexist2 echo {2} {1}
echo '### Test {#.}'
parallel -kv -a <(echo a-noext) -a <(echo b-withext.extension) -a <(echo c-ext.gif) echo {3.} {2.} {1.}