chiark / gitweb /
Provide `dgit clean'. Closes:#736527.
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 8517c8aebabe207c4e02d4a3a1a2c6e0408b566b..5f1ef2e59bc3864faf7f5d4abcd27409018ee9f3 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -318,7 +318,7 @@ sub url_get {
     my $r = $ua->get(@_) or die $!;
     return undef if $r->code == 404;
     $r->is_success or fail "failed to fetch $what: ".$r->status_line;
-    return $r->decoded_content();
+    return $r->decoded_content(charset => 'none');
 }
 
 our ($dscdata,$dscurl,$dsc,$dsc_checked,$skew_warning_vsn);
@@ -1948,6 +1948,11 @@ sub clean_tree () {
     }
 }
 
+sub cmd_clean () {
+    badusage "clean takes no additional arguments" if @ARGV;
+    clean_tree();
+}
+
 sub build_prep () {
     badusage "-p is not allowed when building" if defined $package;
     check_not_dirty();
@@ -2218,4 +2223,7 @@ if (!@ARGV) {
 }
 my $cmd = shift @ARGV;
 $cmd =~ y/-/_/;
-{ no strict qw(refs); &{"cmd_$cmd"}(); }
+
+my $fn = ${*::}{"cmd_$cmd"};
+$fn or badusage "unknown operation $cmd";
+$fn->();