]>
git.madduck.net Git - code/myrepos.git/blobdiff - mr
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
repository in the current directory is registered, or you can specify a
directory to register.
repository in the current directory is registered, or you can specify a
directory to register.
+By default it registers it to the ~/.mrconfig file. To make it write to a
+different file, use the -c option.
+
=item config
Adds, modifies, removes, or prints a value from the mrconfig file. The next
=item config
Adds, modifies, removes, or prints a value from the mrconfig file. The next
use Getopt::Long;
use Cwd qw(getcwd abs_path);
use Getopt::Long;
use Cwd qw(getcwd abs_path);
+$SIG{INT}=sub {
+ print STDERR "mr: interrupted\n";
+ exit 2;
+};
+
$ENV{MR_CONFIG}="$ENV{HOME}/.mrconfig";
my $directory=getcwd();
my $verbose=0;
$ENV{MR_CONFIG}="$ENV{HOME}/.mrconfig";
my $directory=getcwd();
my $verbose=0;
Getopt::Long::Configure("no_permute");
my $result=GetOptions(
"d|directory=s" => sub { $directory=abs_path($_[1]) },
Getopt::Long::Configure("no_permute");
my $result=GetOptions(
"d|directory=s" => sub { $directory=abs_path($_[1]) },
- "c|config=s" => \$ENV{MR_CONFIG },
+ "c|config=s" => sub { $ENV{MR_CONFIG}=abs_path($_[1]) },
"v|verbose" => \$verbose,
"s|stats" => \$stats,
);
"v|verbose" => \$verbose,
"s|stats" => \$stats,
);
}
my $section=shift;
if ($section=~/^\//) {
}
my $section=shift;
if ($section=~/^\//) {
- # try to convert to a path relative to $config's dir
+ # try to convert to a path relative to the config file
my ($dir)=$ENV{MR_CONFIG}=~/^(.*\/)[^\/]+$/;
if ($section=~/^\Q$dir\E(.*)/) {
$section=$1;
my ($dir)=$ENV{MR_CONFIG}=~/^(.*\/)[^\/]+$/;
if ($section=~/^\Q$dir\E(.*)/) {
$section=$1;
my $test="set -e;".$lib.$config{$topdir}{$subdir}{deleted};
print "mr $action: running deleted test >>$test<<\n" if $verbose;
my $ret=system($test);
my $test="set -e;".$lib.$config{$topdir}{$subdir}{deleted};
print "mr $action: running deleted test >>$test<<\n" if $verbose;
my $ret=system($test);
- if ($ret >> 8 == 0) {
- print STDERR "mr error: $dir should be deleted yet still exists\n\n";
- push @failed, $dir;
- return;
+ if ($ret != 0) {
+ if (($? & 127) == 2) {
+ print STDERR "mr $action: interrupted\n";
+ exit 2;
+ }
+ elsif ($? & 127) {
+ print STDERR "mr $action: deleted test received signal ".($? & 127)."\n";
+ }
+ if ($ret >> 8 == 0) {
+ print STDERR "mr error: $dir should be deleted yet still exists\n\n";
+ push @failed, $dir;
+ return;
+ }
push @skipped, $dir;
return;
}
push @skipped, $dir;
return;
}
$dir=~s/^(.*)\/[^\/]+\/?$/$1/;
$dir=~s/^(.*)\/[^\/]+\/?$/$1/;
+
+ if (! -d $dir) {
+ print "mr $action: creating parent directory $dir\n" if $verbose;
+ my $ret=system("mkdir", "-p", $dir);
+ }
}
elsif ($action eq 'update') {
if (! -d $dir) {
}
elsif ($action eq 'update') {
if (! -d $dir) {
"my_action(){ $config{$topdir}{$subdir}{skip}\n }; my_action '$action'";
print "mr $action: running skip test >>$test<<\n" if $verbose;
my $ret=system($test);
"my_action(){ $config{$topdir}{$subdir}{skip}\n }; my_action '$action'";
print "mr $action: running skip test >>$test<<\n" if $verbose;
my $ret=system($test);
- if ($ret >> 8 == 0) {
- print "mr $action: $dir skipped per config file\n" if $verbose;
- push @skipped, $dir;
- return;
+ if ($ret != 0) {
+ if (($? & 127) == 2) {
+ print STDERR "mr $action: interrupted\n";
+ exit 2;
+ }
+ elsif ($? & 127) {
+ print STDERR "mr $action: skip test received signal ".($? & 127)."\n";
+ exit 1;
+ }
+ if ($ret >> 8 == 0) {
+ print "mr $action: $dir skipped per config file\n" if $verbose;
+ push @skipped, $dir;
+ return;
+ }
print STDERR "mr $action: running >>$command<<\n" if $verbose;
my $ret=system($command);
if ($ret != 0) {
print STDERR "mr $action: running >>$command<<\n" if $verbose;
my $ret=system($command);
if ($ret != 0) {
+ if (($? & 127) == 2) {
+ print STDERR "mr $action: interrupted\n";
+ exit 2;
+ }
+ elsif ($? & 127) {
+ print STDERR "mr $action: received signal ".($? & 127)."\n";
+ }
print STDERR "mr $action: failed ($ret)\n" if $verbose;
push @failed, $dir;
if ($ret >> 8 != 0) {
print STDERR "mr $action: failed ($ret)\n" if $verbose;
push @failed, $dir;
if ($ret >> 8 != 0) {
print "mr $action: (skipped: ".join(" ", @skipped).")\n";
}
if (@failed) {
print "mr $action: (skipped: ".join(" ", @skipped).")\n";
}
if (@failed) {
- print "mr $action: (failed: ".join(" ", @failed).")\n";
+ print STDERR "mr $action: (failed: ".join(" ", @failed).")\n";
$knownactions{$parameter}=1;
if ($parameter eq 'chain' &&
length $dir && $section ne "DEFAULT" &&
$knownactions{$parameter}=1;
if ($parameter eq 'chain' &&
length $dir && $section ne "DEFAULT" &&
- -e $dir.$section."/.mrconfig" &&
- system($value) >> 8 == 0) {
- push @toload, $dir.$section."/.mrconfig";
+ -e $dir.$section."/.mrconfig") {
+ my $ret=system($value);
+ if ($ret != 0) {
+ if (($? & 127) == 2) {
+ print STDERR "mr $action: chain test interrupted\n";
+ exit 2;
+ }
+ elsif ($? & 127) {
+ print STDERR "mr $action: chain test received signal ".($? & 127)."\n";
+ }
+ }
+ else {
+ push @toload, $dir.$section."/.mrconfig";
+ }