chiark / gitweb /
Provide for checking git presence via http[s].
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 8f4a71c2a3683087b020520dcc05fea6eb8a1fe5..70ff8c4b7a6a351bf866feb111956388b6ad8721 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -1058,6 +1058,24 @@ sub check_for_git () {
        }
        failedcmd @cmd unless $r =~ m/^[01]$/;
        return $r+0;
+    } elsif ($how eq 'url') {
+       my $prefix = access_cfg('git-check-url','git-url');
+       my $suffix = access_cfg('git-check-suffix','git-suffix',
+                               'RETURN-UNDEF') // '.git';
+       my $url = "$prefix/$package$suffix";
+       my @cmd = (qw(curl -sS -I), $url);
+       my $result = cmdoutput @cmd;
+       $result =~ m/^\S+ (404|200) /s or
+           fail "unexpected results from git check query - ".
+               Dumper($prefix, $result);
+       my $code = $1;
+       if ($code eq '404') {
+           return 0;
+       } elsif ($code eq '200') {
+           return 1;
+       } else {
+           die;
+       }
     } elsif ($how eq 'true') {
        return 1;
     } elsif ($how eq 'false') {