From: Ian Jackson Date: Sat, 16 Jun 2018 12:41:00 +0000 (+0100) Subject: exit status: Introdude Debian::Dgit::ExitStatus X-Git-Tag: archive/debian/5.0~52 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=1d6ce76f63bcbe787e7184a1fa5aa568a2a18873;ds=sidebyside exit status: Introdude Debian::Dgit::ExitStatus No callers yet. Also, no version for dgit-infrastructure. The one perl script in dgit-infrastructure that cares a lot about its exit status (dgit-repos-policy-debian) already has an END { } and uses _exit, which is a bit like our approach here, but simpler. Signed-off-by: Ian Jackson --- diff --git a/Debian/Dgit/ExitStatus.pm b/Debian/Dgit/ExitStatus.pm new file mode 100644 index 00000000..b69d42de --- /dev/null +++ b/Debian/Dgit/ExitStatus.pm @@ -0,0 +1,26 @@ +# -*- perl -*- + +package Debian::Dgit::ExitStatus; + +# To use this, at the top (before use strict, even): +# +# END { $? = $Debian::Dgit::ExitStatus::desired // -1; }; +# use Debian::Dgit::ExitStatus; +# +# and then replace every call to `exit' with `finish'. +# Add a `finish 0' to the end of the program. + +BEGIN { + use Exporter; + @ISA = qw(Exporter); + @EXPORT = qw(finish $desired); +} + +our $desired; + +sub finish ($) { + $desired = $_[0] // 0; + exit $desired; +} + +1; diff --git a/Makefile b/Makefile index 2e47c0bb..21ccc1b7 100644 --- a/Makefile +++ b/Makefile @@ -46,7 +46,7 @@ MAN7PAGES=dgit.7 \ dgit-sponsorship.7 TXTDOCS=README.dsc-import -PERLMODULES=Debian/Dgit.pm +PERLMODULES=Debian/Dgit.pm Debian/Dgit/ExitStatus.pm ABSURDITIES=git INFRA_PROGRAMS=dgit-repos-server dgit-ssh-dispatch \