]>
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:
You can retrieve the config file by other means and pass its B<path> as C<src>.
You can retrieve the config file by other means and pass its B<path> as C<src>.
+=item standard input
+
+If source C<src> 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
=back
The directory will be created if it does not exist. If no directory is
sub loadconfig {
my $f=shift;
my $dir=shift;
sub loadconfig {
my $f=shift;
my $dir=shift;
- my $bootstrap_url =shift;
+ my $bootstrap_src =shift;
my $trusterror = sub {
my $msg=shift;
my $trusterror = sub {
my $msg=shift;
- if (defined $bootstrap_url ) {
- die "mr: $msg in untrusted $bootstrap_url line $lineno\n".
+ if (defined $bootstrap_src ) {
+ die "mr: $msg in untrusted $bootstrap_src line $lineno\n".
"(To trust this url, --trust-all can be used; but please use caution;\n".
"this can allow arbitrary code execution!)\n";
}
"(To trust this url, --trust-all can be used; but please use caution;\n".
"this can allow arbitrary code execution!)\n";
}
eval q{use File::Copy};
die $@ if $@;
eval q{use File::Copy};
die $@ if $@;
my $dir=shift @ARGV || ".";
my $dir=shift @ARGV || ".";
- if (! defined $url || ! length $url ) {
+ if (! defined $src || ! length $src ) {
die "mr: bootstrap requires source\n";
}
die "mr: bootstrap requires source\n";
}
eval q{use File::Temp};
die $@ if $@;
my $tmpconfig=File::Temp->new();
eval q{use File::Temp};
die $@ if $@;
my $tmpconfig=File::Temp->new();
- if ($url =~ m!^[\w\d]+://!) {
+ if ($src =~ m!^[\w\d]+://!) {
# Download the config file to a temporary location.
my @downloader;
# Download the config file to a temporary location.
my @downloader;
- if ($url =~ m!^ssh://(.*)!) {
+ if ($src =~ m!^ssh://(.*)!) {
@downloader = ("scp", $1, $tmpconfig);
}
else {
@downloader = ("scp", $1, $tmpconfig);
}
else {
- @downloader = ("curl", "-A", "mr", "-L", "-s", $url , "-o", $tmpconfig);
+ @downloader = ("curl", "-A", "mr", "-L", "-s", $src , "-o", $tmpconfig);
push(@downloader, "-k") if $insecure;
}
my $status = system(@downloader);
push(@downloader, "-k") if $insecure;
}
my $status = system(@downloader);
- die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n"
+ die "mr bootstrap: invalid SSL certificate for $src (consider -k)\n"
if $downloader[0] eq 'curl' && $status >> 8 == 60;
if $downloader[0] eq 'curl' && $status >> 8 == 60;
- die "mr bootstrap: download of $url failed\n" if $status != 0;
+ 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.
}
else {
# Config file is local.
- die "mr bootstrap: cannot read file '$url '"
- unless -r $url ;
- copy($url , $tmpconfig) || die "copy: $!";
+ die "mr bootstrap: cannot read file '$src '"
+ unless -r $src ;
+ copy($src , $tmpconfig) || die "copy: $!";
}
# Sanity check on destination directory.
}
# Sanity check on destination directory.
# would normally be skipped.
my $topdir=abs_path(".")."/";
my @repo=($topdir, $topdir, ".");
# would normally be skipped.
my $topdir=abs_path(".")."/";
my @repo=($topdir, $topdir, ".");
- loadconfig($tmpconfig, $topdir, $url );
+ loadconfig($tmpconfig, $topdir, $src );
record(\@repo, action("checkout", @repo, 1))
if exists $config{$topdir}{"."}{"checkout"};
if (-e ".mrconfig") {
record(\@repo, action("checkout", @repo, 1))
if exists $config{$topdir}{"."}{"checkout"};
if (-e ".mrconfig") {
- print STDERR "mr bootstrap: .mrconfig file already exists, not overwriting with $url \n";
+ print STDERR "mr bootstrap: .mrconfig file already exists, not overwriting with $src \n";
}
else {
move($tmpconfig, ".mrconfig") || die "rename: $!";
}
else {
move($tmpconfig, ".mrconfig") || die "rename: $!";