#!/usr/bin/perl
+#man{{{
+
=head1 NAME
mr - a Multiple Repository management tool
=cut
+#}}}
+
use warnings;
use strict;
use Getopt::Long;
action($action, @$repo);
}
-sub action {
+sub action { #{{{
my ($action, $dir, $topdir, $subdir) = @_;
my $lib= exists $config{$topdir}{$subdir}{lib} ?
print "\n";
}
-}
+} #}}}
-sub showstat {
+sub showstat { #{{{
my $count=shift;
my $singular=shift;
my $plural=shift;
return "$count ".($count > 1 ? $plural : $singular);
}
return;
-}
+} #}}}
if (! @ok && ! @failed && ! @skipped) {
die "mr $action: no repositories found to work on\n";
}
exit 0;
my %loaded;
-sub loadconfig {
+sub loadconfig { #{{{
my $f=shift;
my @toload;
close $in;
my $section;
+ my $line=0;
while (@lines) {
$_=shift @lines;
+ $line++;
chomp;
next if /^\s*\#/ || /^\s*$/;
if (/^\[([^\]]*)\]\s*$/) {
# continued value
while (@lines && $lines[0]=~/^\s(.+)/) {
shift(@lines);
+ $line++;
$value.="\n$1";
chomp $value;
}
}
}
else {
- die "$f line $.: parse error\n";
+ die "$f line $line: parse error\n";
}
}
foreach (@toload) {
loadconfig($_);
}
-}
+} #}}}
-sub modifyconfig {
+sub modifyconfig { #{{{
my $f=shift;
# the section to modify or add
my $targetsection=shift;
open(my $out, ">", $f) || die "mr: write $f: $!\n";
print $out @out;
close $out;
-}
+} #}}}
# Finally, some useful actions that mr knows about by default.
# These can be overridden in ~/.mrconfig.
+#DATA{{{
__DATA__
[ALIAS]
co = checkout
ed = echo "A horse is a horse, of course, of course.."
T = echo "I pity the fool."
+#}}}