[PATCH 1/5] bootstrap: add support to local files
Lorenzo Cappelletti
lorenzo.cappelletti at gmail.com
Fri Apr 25 14:34:49 CEST 2014
Signed-off-by: Lorenzo Cappelletti <lorenzo.cappelletti at gmail.com>
---
mr | 37 ++++++++++++++++++++++++-------------
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/mr b/mr
index ddc0738..8601aeb 100755
--- a/mr
+++ b/mr
@@ -1669,30 +1669,43 @@ sub register {
}
sub bootstrap {
+ eval q{use File::Copy};
+ die $@ if $@;
+
my $url=shift @ARGV;
my $dir=shift @ARGV || ".";
if (! defined $url || ! length $url) {
die "mr: bootstrap requires url\n";
}
-
- # Download the config file to a temporary location.
+
+ # Retrieve config file.
eval q{use File::Temp};
die $@ if $@;
my $tmpconfig=File::Temp->new();
- my @downloader;
- if ($url =~ m!^ssh://(.*)!) {
- @downloader = ("scp", $1, $tmpconfig);
+ if ($url =~ m!^[\w\d]+://!) {
+ # Download the config file to a temporary location.
+ my @downloader;
+ if ($url =~ m!^ssh://(.*)!) {
+ @downloader = ("scp", $1, $tmpconfig);
+ }
+ else {
+ @downloader = ("curl", "-A", "mr", "-L", "-s", $url, "-o", $tmpconfig);
+ push(@downloader, "-k") if $insecure;
+ }
+ my $status = system(@downloader);
+ die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n"
+ if $downloader[0] eq 'curl' && $status >> 8 == 60;
+ die "mr bootstrap: download of $url failed\n" if $status != 0;
}
else {
- @downloader = ("curl", "-A", "mr", "-L", "-s", $url, "-o", $tmpconfig);
- push(@downloader, "-k") if $insecure;
+ # Config file is local.
+ die "mr bootstrap: cannot read file '$url'"
+ unless -r $url;
+ copy($url, $tmpconfig) || die "copy: $!";
}
- my $status = system(@downloader);
- die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n"
- if $downloader[0] eq 'curl' && $status >> 8 == 60;
- die "mr bootstrap: download of $url failed\n" if $status != 0;
+ # Sanity check on destination directory.
if (! -e $dir) {
system("mkdir", "-p", $dir);
}
@@ -1710,8 +1723,6 @@ sub bootstrap {
print STDERR "mr bootstrap: .mrconfig file already exists, not overwriting with $url\n";
}
else {
- eval q{use File::Copy};
- die $@ if $@;
move($tmpconfig, ".mrconfig") || die "rename: $!";
}
--
1.9.2
More information about the vcs-home
mailing list