From 48943c996e780f150d1f25e7c8f0e66912ec30fc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 5 Jul 2012 09:08:23 -0600 Subject: [PATCH] mr bootstrap: Now supports ssh:// urls. --- debian/changelog | 1 + mr | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index c5c31f8..a1dca16 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ mr (1.13) UNRELEASED; urgency=low * Pass -q to cvs diff and update. Closes: #673367 + * mr bootstrap: Now supports ssh:// urls. -- Joey Hess Fri, 18 May 2012 12:27:45 -0400 diff --git a/mr b/mr index 21d2677..60801f6 100755 --- a/mr +++ b/mr @@ -116,8 +116,10 @@ These commands are also available: =item bootstrap url [directory] -Causes mr to download the url, and use it as a .mrconfig file -to checkout the repositories listed in it, into the specified directory. +Causes mr to download the url, and use it as a .mrconfig file to checkout +the repositories listed in it, into the specified directory. + +To use scp to download, the url may have the form ssh://[user@]host:file The directory will be created if it does not exist. If no directory is specified, the current directory will be used. @@ -1661,11 +1663,18 @@ sub bootstrap { eval q{use File::Temp}; die $@ if $@; my $tmpconfig=File::Temp->new(); - my @curlargs = ("curl", "-A", "mr", "-L", "-s", $url, "-o", $tmpconfig); - push(@curlargs, "-k") if $insecure; - my $curlstatus = system(@curlargs); - die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n" if $curlstatus >> 8 == 60; - die "mr bootstrap: download of $url failed\n" if $curlstatus != 0; + 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; if (! -e $dir) { system("mkdir", "-p", $dir); -- 2.39.2