From 90f7a9cc972f30545441ac959fb7a2017df87116 Mon Sep 17 00:00:00 2001 From: Lorenzo Cappelletti Date: Fri, 25 Apr 2014 14:34:49 +0200 Subject: [PATCH] bootstrap: add support to local files --- 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: $!"; } -- 2.39.2