X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/29fed14147b460b1c873afc005ecc99698c97caf..85ecfb40a19334d7ea53de8b982915eff3cae07d:/mr diff --git a/mr b/mr index abfbfaa..b5d5c11 100755 --- a/mr +++ b/mr @@ -219,6 +219,12 @@ Be verbose. Be quiet. +=item -k + +=item --insecure + +Accept untrusted SSL certificates when bootstrapping. + =item -s =item --stats @@ -433,6 +439,7 @@ my $config_overridden=0; my $verbose=0; my $quiet=0; my $stats=0; +my $insecure=0; my $interactive=0; my $max_depth; my $no_chdir=0; @@ -780,6 +787,13 @@ sub repolist { } @list; } +sub repodir { + my $repo=shift; + my $topdir=$repo->{topdir}; + my $subdir=$repo->{subdir}; + return abs_path(($subdir =~/^\//) ? $subdir : $topdir.$subdir); +} + # figure out which repos to act on sub selectrepos { my @repos; @@ -788,7 +802,7 @@ sub selectrepos { my $subdir=$repo->{subdir}; next if $subdir eq 'DEFAULT'; - my $dir=($subdir =~/^\//) ? $subdir : $topdir.$subdir; + my $dir=repodir($repo); my $d=$directory; $dir.="/" unless $dir=~/\/$/; $d.="/" unless $d=~/\/$/; @@ -808,7 +822,7 @@ sub selectrepos { my $subdir=$repo->{subdir}; next if $subdir eq 'DEFAULT'; - my $dir=($subdir =~/^\//) ? $subdir : $topdir.$subdir; + my $dir=repodir($repo); my $d=$directory; $dir.="/" unless $dir=~/\/$/; $d.="/" unless $d=~/\/$/; @@ -1343,9 +1357,11 @@ sub bootstrap { eval q{use File::Temp}; die $@ if $@; my $tmpconfig=File::Temp->new(); - if (system("curl", "-A", "mr", "-s", $url, "-o", $tmpconfig) != 0) { - die "mr bootstrap: download of $url failed\n"; - } + my @curlargs = ("curl", "-A", "mr", "-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; if (! -e $dir) { system("mkdir", "-p", $dir); @@ -1369,7 +1385,8 @@ sub bootstrap { move($tmpconfig, ".mrconfig") || die "rename: $!"; } - # Load the config file and checkout everything else. + # Reload the config file (in case we got a different version) + # and checkout everything else. startingconfig(); loadconfig(".mrconfig"); dispatch("checkout"); @@ -1423,6 +1440,7 @@ sub getopts { "v|verbose" => \$verbose, "q|quiet" => \$quiet, "s|stats" => \$stats, + "k|insecure" => \$insecure, "i|interactive" => \$interactive, "n|no-recurse:i" => \$max_depth, "j|jobs:i" => \$jobs,