Put newly aggregated pages in the transient underlay

master
Simon McVittie 2010-12-25 23:27:59 +00:00
parent 44b0cea85f
commit d851ae76f6
1 changed files with 17 additions and 6 deletions

View File

@ -162,10 +162,14 @@ sub migrate_to_internal {
$config{aggregateinternal} = 0; $config{aggregateinternal} = 0;
my $oldname = "$config{srcdir}/".htmlfn($data->{page}); my $oldname = "$config{srcdir}/".htmlfn($data->{page});
if (! -e $oldname) {
$oldname = $IkiWiki::Plugin::transient::transientdir."/".htmlfn($data->{page});
}
my $oldoutput = $config{destdir}."/".IkiWiki::htmlpage($data->{page}); my $oldoutput = $config{destdir}."/".IkiWiki::htmlpage($data->{page});
$config{aggregateinternal} = 1; $config{aggregateinternal} = 1;
my $newname = "$config{srcdir}/".htmlfn($data->{page}); my $newname = $IkiWiki::Plugin::transient::transientdir."/".htmlfn($data->{page});
debug "moving $oldname -> $newname"; debug "moving $oldname -> $newname";
if (-e $newname) { if (-e $newname) {
@ -385,13 +389,16 @@ sub garbage_collect () {
foreach my $guid (values %guids) { foreach my $guid (values %guids) {
# any guid whose feed is gone should be removed # any guid whose feed is gone should be removed
if (! exists $feeds{$guid->{feed}}) { if (! exists $feeds{$guid->{feed}}) {
unlink "$config{srcdir}/".htmlfn($guid->{page}) if (exists $guid->{page}) {
if exists $guid->{page}; unlink "$config{srcdir}/".htmlfn($guid->{page});
unlink $IkiWiki::Plugin::transient::transientdir."/".htmlfn($guid->{page});
}
delete $guids{$guid->{guid}}; delete $guids{$guid->{guid}};
} }
# handle expired guids # handle expired guids
elsif ($guid->{expired} && exists $guid->{page}) { elsif ($guid->{expired} && exists $guid->{page}) {
unlink "$config{srcdir}/".htmlfn($guid->{page}); unlink "$config{srcdir}/".htmlfn($guid->{page});
unlink $IkiWiki::Plugin::transient::transientdir."/".htmlfn($guid->{page});
delete $guid->{page}; delete $guid->{page};
delete $guid->{md5}; delete $guid->{md5};
} }
@ -611,6 +618,7 @@ sub add_page (@) {
} }
my $c=""; my $c="";
while (exists $IkiWiki::pagecase{lc $page.$c} || while (exists $IkiWiki::pagecase{lc $page.$c} ||
-e $IkiWiki::Plugin::transient::transientdir."/".htmlfn($page.$c) ||
-e "$config{srcdir}/".htmlfn($page.$c)) { -e "$config{srcdir}/".htmlfn($page.$c)) {
$c++ $c++
} }
@ -622,6 +630,8 @@ sub add_page (@) {
$c=""; $c="";
$page=$feed->{dir}."/item"; $page=$feed->{dir}."/item";
while (exists $IkiWiki::pagecase{lc $page.$c} || while (exists $IkiWiki::pagecase{lc $page.$c} ||
-e $IkiWiki::Plugin::transient::transientdir."/".htmlfn($page.$c) ||
-e "$config{srcdir}/".htmlfn($page.$c)) { -e "$config{srcdir}/".htmlfn($page.$c)) {
$c++ $c++
} }
@ -664,13 +674,14 @@ sub add_page (@) {
if (ref $feed->{tags}) { if (ref $feed->{tags}) {
$template->param(tags => [map { tag => $_ }, @{$feed->{tags}}]); $template->param(tags => [map { tag => $_ }, @{$feed->{tags}}]);
} }
writefile(htmlfn($guid->{page}), $config{srcdir}, writefile(htmlfn($guid->{page}),
$template->output); $IkiWiki::Plugin::transient::transientdir, $template->output);
if (defined $mtime && $mtime <= time) { if (defined $mtime && $mtime <= time) {
# Set the mtime, this lets the build process get the right # Set the mtime, this lets the build process get the right
# creation time on record for the new page. # creation time on record for the new page.
utime $mtime, $mtime, "$config{srcdir}/".htmlfn($guid->{page}); utime $mtime, $mtime,
$IkiWiki::Plugin::transient::transientdir."/".htmlfn($guid->{page});
# Store it in pagectime for expiry code to use also. # Store it in pagectime for expiry code to use also.
$IkiWiki::pagectime{$guid->{page}}=$mtime $IkiWiki::pagectime{$guid->{page}}=$mtime
unless exists $IkiWiki::pagectime{$guid->{page}}; unless exists $IkiWiki::pagectime{$guid->{page}};