use PublicInbox::LeiCurl;
use PublicInbox::LeiMirror;
use File::Temp ();
-use PublicInbox::Config;
-use IO::Compress::Gzip qw(gzip $GzipError);
sub new { bless {}, __PACKAGE__ }
}
for my $i (@new_epoch) { $mg->epoch_cfg_set($i) }
if ($ft) {
- if ($mculled) {
- my $json = PublicInbox::Config->json->encode($m1);
- my $fn = $ft->filename;
- my $mtime = (stat($fn))[9];
- gzip(\$json => $fn) or die "gzip: $GzipError";
- utime($mtime, $mtime, $fn) or die "utime(..., $fn): $!";
- }
+ PublicInbox::LeiMirror::dump_manifest($m1 => $ft) if $mculled;
PublicInbox::LeiMirror::ft_rename($ft, $mf, 0666);
}
$lei->child_error($xit << 8) if $fp2 && $xit;
reap_live() while keys(%$LIVE);
}
+sub dump_manifest ($$) {
+ my ($m, $ft) = @_;
+ # write the smaller manifest if epochs were skipped so
+ # users won't have to delete manifest if they +w an
+ # epoch they no longer want to skip
+ my $json = PublicInbox::Config->json->encode($m);
+ my $mtime = (stat($ft))[9];
+ seek($ft, SEEK_SET, 0) or die "seek($ft): $!";
+ truncate($ft, 0) or die "truncate($ft): $!";
+ gzip(\$json => $ft) or die "gzip($ft): $GzipError";
+ $ft->flush or die "flush($ft): $!";
+ utime($mtime, $mtime, "$ft") or die "utime(..., $ft): $!";
+}
+
# FIXME: this gets confused by single inbox instance w/ global manifest.js.gz
sub try_manifest {
my ($self) = @_;
return if $self->{lei}->{child_error} || $self->{dry_run};
# set by clone_v2_prep/-I/--exclude
- if (delete $self->{-culled_manifest}) {
- # write the smaller manifest if epochs were skipped so
- # users won't have to delete manifest if they +w an
- # epoch they no longer want to skip
- my $json = PublicInbox::Config->json->encode($m);
- my $mtime = (stat($ft))[9];
- seek($ft, SEEK_SET, 0) or die "seek($ft): $!";
- truncate($ft, 0) or die "truncate($ft): $!";
- gzip(\$json => $ft) or die "gzip($ft): $GzipError";
- $ft->flush or die "flush($ft): $!";
- utime($mtime, $mtime, "$ft") or die "utime(..., $ft): $!";
- }
+ dump_manifest($m => $ft) if delete $self->{-culled_manifest};
ft_rename($ft, "$self->{dst}/manifest.js.gz", 0666);
open my $x, '>', "$self->{dst}/mirror.done"; # for _wq_done_wait
}