X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/f3e4e5d7a71887dbaa32d33a2e3b376b311fa1a8..a6af578542ff49bdbac29fb5773c24ff2ed4ef5c:/mr diff --git a/mr b/mr index f26b144..1741812 100755 --- a/mr +++ b/mr @@ -14,6 +14,8 @@ B [options] status B [options] commit [-m "message"] +B [options] diff + B [options] action [params ...] =head1 DESCRIPTION @@ -54,6 +56,14 @@ like git.) The optional -m parameter allows specifying a commit message. +=item diff + +Show a diff of uncommitted changes. + +=item help + +Displays this help. + =back Actions can be abbreviated to any unambiguous subsctring, so @@ -167,7 +177,9 @@ my $result=GetOptions( "v" => \$verbose, ); if (! $result || @ARGV < 1) { - die("Usage: mr [-d directory] action [params ...]\n"); + die("Usage: mr [-d directory] action [params ...]\n". + "(Use mr help for man page.)\n"); + } loadconfig(\*DATA); @@ -175,6 +187,11 @@ loadconfig($config); #use Data::Dumper; #print Dumper(\%config); +eval { + use FindBin qw($Bin $Script); + $ENV{MR_PATH}=$Bin."/".$Script; +}; + # alias expansion and command stemming my $action=shift @ARGV; if (! exists $knownactions{$action}) { @@ -193,6 +210,10 @@ if (! exists $knownactions{$action}) { } } +if ($action eq 'help') { + exec($config{''}{default}{help}); +} + # handle being in a subdir of a repository foreach my $topdir (sort keys %config) { foreach my $subdir (sort keys %{$config{$topdir}}) { @@ -217,7 +238,6 @@ foreach my $topdir (sort keys %config) { } action($action, $dir, $topdir, $subdir); - } } @@ -436,3 +456,17 @@ commit = \ else \ error "unknown repo type"; \ fi +diff = \ + if [ -d .svn ]; then \ + svn diff "$@"; \ + elif [ -d .git ]; then \ + git diff "$@"; \ + else \ + error "unknown repo type"; \ + fi +help = \ + if [ ! -e "$MR_PATH" ]; then \ + error "cannot find program path";\ + fi; \ + (pod2man -c mr "$MR_PATH" | man -l -) || \ + error "pod2man or man failed"