X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/e660714cc8dc3848bc7c7386e7f0e64adf14dbd0..a4bfe55f8b70c7ca67f63e15932fda080872207b:/mr?ds=sidebyside diff --git a/mr b/mr index be2bac6..afac24d 100755 --- a/mr +++ b/mr @@ -152,6 +152,11 @@ C. You can retrieve the config file by other means and pass its B as C. +=item standard input + +If source C consists in a single dash C<->, config file is read from +standard input. + =back The directory will be created if it does not exist. If no directory is @@ -1002,7 +1007,7 @@ sub record { system((getpwuid($<))[8], "-i"); } push @failed, $dir; - print "\n" unless $quiet; + print "\n"; } elsif ($ret == SKIPPED) { push @skipped, $dir; @@ -1149,7 +1154,8 @@ sub is_trusted_config { while () { chomp; s/^~\//$ENV{HOME}\//; - $trusted{abs_path($_)}=1; + my $d=abs_path($_); + $trusted{$d}=1 if defined $d; } close TRUST; } @@ -1568,10 +1574,7 @@ sub dispatch { my $action=shift; # actions that do not operate on all repos - if ($action eq 'help') { - help(@ARGV); - } - elsif ($action eq 'config') { + if ($action eq 'config') { config(@ARGV); } elsif ($action eq 'register') { @@ -1599,7 +1602,27 @@ sub dispatch { } sub help { - exec($config{''}{DEFAULT}{help}) || die "exec: $!"; + my $help=q# + case `uname -s` in + SunOS) + SHOWMANFILE="man -f" + ;; + Darwin) + SHOWMANFILE="man" + ;; + *) + SHOWMANFILE="man" + ;; + esac + if [ ! -e "$MR_PATH" ]; then + error "cannot find program path" + fi + tmp=$(mktemp -t mr.XXXXXXXXXX) || error "mktemp failed" + trap "rm -f $tmp" exit + pod2man -c mr "$MR_PATH" > "$tmp" || error "pod2man failed" + $SHOWMANFILE "$tmp" || error "man failed" + #; + exec($help) || die "exec: $!"; } sub config { @@ -1715,6 +1738,10 @@ sub bootstrap { if $downloader[0] eq 'curl' && $status >> 8 == 60; die "mr bootstrap: download of $src failed\n" if $status != 0; } + elsif ($src eq '-') { + # Config file is read from stdin. + copy(\*STDIN, $tmpconfig) || die "stdin: $!"; + } else { # Config file is local. die "mr bootstrap: cannot read file '$src'" @@ -1853,6 +1880,7 @@ sub exitstats { sub main { getopts(); init(); + help(@ARGV) if $ARGV[0] eq 'help'; startingconfig(); loadconfig($HOME_MR_CONFIG); @@ -2104,30 +2132,12 @@ bzr_trusted_checkout = bzr checkout|clone|branch|get $url $repo hg_trusted_checkout = hg clone $url $repo darcs_trusted_checkout = darcs get $url $repo git_bare_trusted_checkout = git clone --bare $url $repo -vcsh_trusted_checkout = vcsh run "$MR_REPO" git clone $url $repo +vcsh_old_trusted_checkout = vcsh run "$MR_REPO" git clone $url $repo +vcsh_trusted_checkout = vcsh clone $url $repo # fossil: messy to do veracity_trusted_checkout = vv clone $url $repo -help = - case `uname -s` in - SunOS) - SHOWMANFILE="man -f" - ;; - Darwin) - SHOWMANFILE="man" - ;; - *) - SHOWMANFILE="man" - ;; - esac - if [ ! -e "$MR_PATH" ]; then - error "cannot find program path" - fi - tmp=$(mktemp -t mr.XXXXXXXXXX) || error "mktemp failed" - trap "rm -f $tmp" exit - pod2man -c mr "$MR_PATH" > "$tmp" || error "pod2man failed" - $SHOWMANFILE "$tmp" || error "man failed" list = true config = bootstrap =