chiark / gitweb /
Fail if a required config item is missing.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 22 Aug 2013 08:21:45 +0000 (09:21 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 22 Aug 2013 08:21:45 +0000 (09:21 +0100)
TODO
debian/changelog
dgit

diff --git a/TODO b/TODO
index 4cd9ec3..4959a91 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,5 +1,4 @@
 manpage better descriptions
-die on config missing
 distro option
 autocommit not on HEAD, optionally
 field access error checks
index 1e6ac24..e898a90 100644 (file)
@@ -3,6 +3,7 @@ dgit (0.4) experimental; urgency=low
   * Use dgit.debian.net vhost on alioth.  Closes #720172.
   * Usage message.  Closes #720085.
   * Assorted manpage fixes.
+  * Fail if a required config item is missing.
 
  --
 
diff --git a/dgit b/dgit
index a67cc7d..33da111 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -211,6 +211,7 @@ our %defcfg = ('dgit.default.distro' => 'debian',
 
 sub cfg {
     foreach my $c (@_) {
+       return undef if $c =~ /RETURN-UNDEF/;
        my @cmd = (@git, qw(config --), $c);
        my $v;
        {
@@ -225,7 +226,7 @@ sub cfg {
        my $dv = $defcfg{$c};
        return $dv if defined $dv;
     }
-    return undef;
+    badcfg "need value for one of: @_";
 }
 
 sub access_distro () {
@@ -245,7 +246,7 @@ sub access_someuserhost ($) {
     my ($some) = @_;
     my $user = access_cfg("$some-user",'username');
     my $host = access_cfg("$some-host");
-    return defined($user) && length($user) ? "$user\@$host" : $host;
+    return length($user) ? "$user\@$host" : $host;
 }
 
 sub access_gituserhost () {
@@ -253,7 +254,7 @@ sub access_gituserhost () {
 }
 
 sub access_giturl () {
-    my $url = access_cfg('git-url');
+    my $url = access_cfg('git-url','RETURN-UNDEF');
     if (!defined $url) {
        $url =
            access_cfg('git-proto').
@@ -292,8 +293,8 @@ our %rmad;
 
 sub archive_query ($) {
     my ($method) = @_;
-    my $query = access_cfg('archive-query');
-    if (!$query) {
+    my $query = access_cfg('archive-query','RETURN-UNDEF');
+    if (!defined $query) {
        my $distro = access_distro();
        if ($distro eq 'debian') {
            $query = "sshdakls:".
@@ -771,7 +772,7 @@ sub dopush () {
        runcmd_ordryrun @debsign_cmd;
     }
     runcmd_ordryrun @git, qw(push),access_giturl(),"refs/tags/$tag";
-    my $host = access_cfg('upload-host');
+    my $host = access_cfg('upload-host','RETURN-UNDEF');
     my @hostarg = defined($host) ? ($host,) : ();
     runcmd_ordryrun @dput, @hostarg, $changesfile;
     printdone "pushed and uploaded $dsc->{Version}";