X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/052ba0de1db046987852e41b14c2fc78ebd905f2..dbf354fca4219193573881c279bfc0091b7323a4:/mr diff --git a/mr b/mr index ee5e5e2..4396e83 100755 --- a/mr +++ b/mr @@ -54,6 +54,11 @@ like git.) The optional -m parameter allows specifying a commit message. +=back + +Actions can be abbreviated to any unambiguous subsctring, so +"mr st" is equivilant to "mr status". + =head1 OPTIONS =over 4 @@ -132,6 +137,7 @@ my $directory=getcwd(); my $config="$ENV{HOME}/.mrconfig"; my $verbose=0; my %config; +my %knownactions; Getopt::Long::Configure("no_permute"); my $result=GetOptions( @@ -142,13 +148,23 @@ my $result=GetOptions( if (! $result || @ARGV < 1) { die("Usage: mr [-d directory] action [params ...]\n"); } -my $action=shift @ARGV; loadconfig(\*DATA); loadconfig($config); #use Data::Dumper; #print Dumper(\%config); +my $action=shift @ARGV; +if (! $knownactions{$action}) { + my @matches = grep { /^\Q$action\E/ } keys %knownactions; + if (@matches == 1) { + $action=$matches[0]; + } + else { + die "mr: ambiguous action \"$action\" (matches @matches)\n"; + } +} + my (@failed, @successful, @skipped); my $first=1; foreach my $topdir (sort keys %config) { @@ -312,6 +328,7 @@ sub loadconfig { $config{$dir}{$section}={ %{$config{$dir}{default}} }; } $config{$dir}{$section}{$parameter}=$value; + $knownactions{$parameter}=1; } else { die "$f line $.: parse error\n"; @@ -350,7 +367,8 @@ commit = \ if [ -d .svn ]; then \ svn commit "$@"; \ elif [ -d .git ]; then \ - git commit -a "$@" && git push --all; \ + echo "foo: $@" \ + git commit -a "$@" \ else \ echo "mr commit: unknown repo type"; \ exit 1; \