From: Joey Hess Date: Thu, 11 Oct 2007 17:38:18 +0000 (-0400) Subject: add help and diff commands X-Git-Url: https://git.madduck.net/code/myrepos.git/commitdiff_plain/a6af578542ff49bdbac29fb5773c24ff2ed4ef5c?ds=sidebyside add help and diff commands --- diff --git a/INSTALL b/INSTALL index 69af33f..d2b5370 100644 --- a/INSTALL +++ b/INSTALL @@ -1 +1,5 @@ +mr is intended to be very self-contained, since it might be useful to check +it into ~/bin when keeping your home in version control. It has no +dependencies aside from basic perl. + Just copy mr into your PATH somewhere, and set up ~/.mrconfig diff --git a/debian/rules b/debian/rules index cb8604b..76c53e8 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,7 @@ #!/usr/bin/make -f build: - pod2man -c mr mr > mr.1 + ./mr help > mr.1 clean: dh_testdir 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"