]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - ikiwiki-calendar.in
Add preprocessed 'use lib' line to ikiwiki-transition and ikiwiki-calendar if necessa...
[git.ikiwiki.info.git] / ikiwiki-calendar.in
diff --git a/ikiwiki-calendar.in b/ikiwiki-calendar.in
new file mode 100755 (executable)
index 0000000..9738ea5
--- /dev/null
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use lib '.'; # For use in nonstandard directory, munged by Makefile.
+use IkiWiki;
+use IkiWiki::Setup;
+use Getopt::Long;
+
+sub usage () {
+       die gettext("usage: ikiwiki-calendar [-f] your.setup [pagespec] [year]"), "\n";
+}
+
+my $force=0;
+GetOptions(
+       "force" => \$force,
+) || usage();
+my $setup=shift                || usage();
+my $pagespec=shift     || "*";
+my $startyear=shift    || 1900+(localtime(time))[5];
+my $endyear=shift      || $startyear;
+
+%config=IkiWiki::defaultconfig();
+IkiWiki::Setup::load($setup);
+IkiWiki::loadplugins();
+IkiWiki::checkconfig();
+
+my $archivebase = 'archives';
+$archivebase = $config{archivebase} if defined $config{archivebase};
+
+sub writearchive ($$;$) {
+       my $template=template(shift);
+       my $year=shift;
+       my $month=shift;
+
+       my $page=defined $month ? "$year/$month" : $year;
+
+       my $pagefile=newpagefile("$archivebase/$page", $config{default_pageext});
+       $template->param(pagespec => $pagespec);
+       $template->param(year => $year);
+       $template->param(month => $month) if defined $month;
+
+       if ($force || ! -e "$config{srcdir}/$pagefile") {
+               writefile($pagefile, $config{srcdir}, $template->output);
+               IkiWiki::rcs_add($pagefile) if $config{rcs};
+       }
+}
+
+foreach my $y ($startyear..$endyear) {
+       writearchive("calendaryear.tmpl", $y);
+       foreach my $m (qw{01 02 03 04 05 06 07 08 09 10 11 12}) {
+               writearchive("calendarmonth.tmpl", $y, $m);
+       }
+}
+
+IkiWiki::rcs_commit_staged(gettext("calendar update"), undef, undef)
+       if $config{rcs};
+
+system("ikiwiki", "-setup", $setup, "-refresh");