summaryrefslogtreecommitdiff
path: root/infra/dgit-repos-policy-debian
diff options
context:
space:
mode:
Diffstat (limited to 'infra/dgit-repos-policy-debian')
-rwxr-xr-xinfra/dgit-repos-policy-debian30
1 files changed, 23 insertions, 7 deletions
diff --git a/infra/dgit-repos-policy-debian b/infra/dgit-repos-policy-debian
index 35c719a..3722833 100755
--- a/infra/dgit-repos-policy-debian
+++ b/infra/dgit-repos-policy-debian
@@ -512,11 +512,21 @@ sub action_check_list () {
return 0;
}
-$action =~ y/-/_/;
-my $fn = ${*::}{"action_$action"};
+my $fn_name;
+
+if ($action eq 'policy-client-query') {
+ getpackage();
+ my $query = shift @ARGV // die "need QUERY-OP";
+ $fn_name = "polclqu_$query";
+} else {
+ $fn_name = "action_$action";
+}
+$fn_name =~ y/-/_/;
+my $fn = ${*::}{$fn_name};
+
if (!$fn) {
- printdebug "dgit-repos-policy-debian: unknown action $action\n";
- exit 0;
+ printdebug "dgit-repos-policy-debian: unknown $fn_name\n";
+ _exit 0;
}
my $sleepy=0;
@@ -543,10 +553,16 @@ for (;;) {
$stderr = '';
$rcode = $fn->();
- die unless defined $rcode;
- $poldbh->commit;
- printdebug "poldbh commit\n";
+ if ($action eq 'policy-client-query') {
+ close STDOUT or die $!;
+ _exit 0;
+ } else {
+ die unless defined $rcode;
+
+ $poldbh->commit;
+ printdebug "poldbh commit\n";
+ }
};
last unless length $@;
die $@ unless ref $@ eq $db_busy_exception;