our $distro = shift @ARGV // die "need DISTRO";
our $repos = shift @ARGV // die "need DGIT-REPOS-DIR";
+our $dgitlive = shift @ARGV // die "need DGIT-LIVE-DIR";
our $action = shift @ARGV // die "need ACTION";
our $publicmode = 02775;
sub apiquery ($) {
my ($subpath) = @_;
local $/=undef;
- $!=0; $?=0; my $json = `dgit -d $distro archive-api-query $subpath`;
+ my $cmd = "$dgitlive/dgit -d $distro ".
+ "\$DGIT_TEST_OPTS \$DGIT_TEST_DEBUG archive-api-query $subpath";
+ $!=0; $?=0; my $json = `$cmd`;
defined $json or die "$subpath $! $?";
return decode_json $json;
}
return 0;
}
-sub getpackage () {
- die unless @ARGV >= 1;
- $pkg = shift @ARGV;
- die unless $pkg =~ m/^$package_re$/;
-
- $pkgdir = "$repos/$pkg";
+sub statpackage () {
+ $pkgdir = "$repos/$pkg.git";
if (!stat_exists $pkgdir) {
$pkg_exists = 0;
} else {
}
}
+sub getpackage () {
+ die unless @ARGV >= 1;
+ $pkg = shift @ARGV;
+ die unless $pkg =~ m/^$package_re$/;
+
+ statpackage();
+}
+
sub add_taint ($$) {
my ($refobj, $reason);
}
sub action_push_confirm () {
+ getpackage();
+ die unless @ARGV;
+ my $freshrepo = shift @ARGV;
+
my $initq = $poldbh->prepare(<<END);
SELECT taint_id, gitobjid FROM taints t
WHERE (package = ? OR package = '')
return 1;
}
+ if (length $freshrepo) {
+ if (!good_suite_has_vsn_in_our_history()) {
+ stat $freshrepo or die "$freshrepo $!";
+ my $oldmode = ((stat _)[2]);
+ my $oldwrites = $oldmode & 0222;
+ # remove r and x bits which have corresponding w bits clear
+ my $newmode = $oldmode & ($oldwrites << 1) & ($oldwrites > 1);
+ chmod $newmode, $freshrepo or die $!;
+ }
+ }
+
+ return 0;
+}
+
+sub action_check_list () {
+ opendir L, "$repos" or die "$repos $!";
+ while (defined (my $dent = readdir L)) {
+ next unless $dent =~ m/^($package_re)\.git$/;
+ $pkg = $1;
+ statpackage();
+ next unless $pkg_exists;
+ next unless $pkg_secret;
+ print "$pkg\n" or die $!;
+ }
+ closedir L or die $!;
+ close STDOUT or die $!;
return 0;
}