summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2016-10-16 21:02:03 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2016-10-23 15:49:21 +0100
commit8e9303a546371cfa631ff5f16ea4d7fdcfa6fad8 (patch)
tree68f05a73a5140ae7dc878ccd26335b4ece6d0c1f
parentd206873437a8ee676eeb2806754a57fa938c9a4c (diff)
dgit: --force-*: Provide framework
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rwxr-xr-xdgit12
1 files changed, 12 insertions, 0 deletions
diff --git a/dgit b/dgit
index ae07145..33306da 100755
--- a/dgit
+++ b/dgit
@@ -73,6 +73,8 @@ our $tagformat_want;
our $tagformat;
our $tagformatfn;
+our %forceopts = map { $_=>0 } ();
+
our %format_ok = map { $_=>1 } ("1.0","3.0 (native)","3.0 (quilt)");
our $suite_re = '[-+.0-9a-z]+';
@@ -222,6 +224,12 @@ END {
sub badcfg { print STDERR "$us: invalid configuration: @_\n"; exit 12; }
+sub forceable_fail ($$) {
+ my ($forceoptsl, $msg) = @_;
+ fail $msg unless grep { $forceopts{$_} } @$forceoptsl;
+ print STDERR "warning: overriding problem due to --force:\n". $msg;
+}
+
sub no_such_package () {
print STDERR "$us: package $package does not exist in suite $isuite\n";
exit 4;
@@ -5176,6 +5184,10 @@ sub parseopts () {
} elsif (m/^--deliberately-($deliberately_re)$/s) {
push @ropts, $_;
push @deliberatelies, $&;
+ } elsif (m/^--force-(.*)/ && defined $forceopts{$1}) {
+ push @ropts, $&;
+ $forceopts{$1} = 1;
+ $_='';
} elsif (m/^--dgit-tag-format=(old|new)$/s) {
# undocumented, for testing
push @ropts, $_;