+if ($defaultrepo =~ /:/) {
+ # HTTP or SSH
+ $defaultrepo_base = $defaultrepo;
+ $defaultrepo_base =~ s#/[^/]+/?$##;
+ $defaultrepo_lib = "$defaultrepo_base/packages";
+}
+elsif ($defaultrepo =~ /^\//) {
+ # Local filesystem, absolute path (assumes a checked-out tree):
+ $defaultrepo_base = $defaultrepo;
+ $defaultrepo_lib = "$defaultrepo/libraries";
+}
+elsif ($defaultrepo =~ /^..\//) {
+ # Local filesystem, relative path (assumes a checked-out tree):
+ $defaultrepo_base = $defaultrepo;
+ $defaultrepo_lib = "$defaultrepo/libraries";
+}
+else {
+ die "Couldn't work out defaultrepo";
+}
+
+my $verbose = 1;
+my $ignore_failure = 0;
+
+# --extra says we grab the extra libs with 'get'. It has no effect on
+# the other commands.
+my $extra = 0;
+# --nofib/--testsuite tell get to also grab the respective repos.
+# They have no effect on the other commands.
+my $nofib = 0;
+my $testsuite = 0;
+
+sub message {
+ if ($verbose) {
+ print "@_\n";
+ }
+}
+
+sub warning {
+ print "warning: @_\n";
+}
+
+sub darcs {
+ message "== running darcs @_";
+ system ("darcs", @_) == 0
+ or $ignore_failure
+ or die "darcs failed: $?";
+}