From 61c909e2f28758baa7089649f2ae2569213e8eac Mon Sep 17 00:00:00 2001 From: joey Date: Fri, 24 Mar 2006 21:36:37 +0000 Subject: implemented upgradehooksh --- IkiWiki/Render.pm | 7 ++++--- debian/README.Debian | 8 ++++++++ debian/postinst | 28 ++++++++++++++++++++++++++++ debian/rules | 1 + doc/todo/done/upgradehooks.mdwn | 6 ++++++ doc/todo/upgradehooks.mdwn | 6 ------ 6 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 debian/README.Debian create mode 100755 debian/postinst create mode 100644 doc/todo/done/upgradehooks.mdwn delete mode 100644 doc/todo/upgradehooks.mdwn diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 4e2caa6ce..e6d0bc510 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -315,9 +315,9 @@ sub check_overwrite ($$) { #{{{ } #}}} sub mtime ($) { #{{{ - my $page=shift; + my $file=shift; - return (stat($page))[9]; + return (stat($file))[9]; } #}}} sub findlinks ($$) { #{{{ @@ -418,7 +418,8 @@ sub refresh () { #{{{ push @add, $file; $links{$page}=[]; $pagesources{$page}=$file; - $pagectime{$page}=time unless exists $pagectime{$page}; + $pagectime{$page}=mtime("$config{srcdir}/$file") + unless exists $pagectime{$page}; } } my @del; diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 000000000..3bdeb2a3a --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,8 @@ +It's a good idea, and in some cases a requirement, to rebuild your wiki +when upgrading to a new version of ikiwiki. If you have a lot of different +wikis on a system, this can be a pain to do by hand, and it's a good idea +to automate it anyway. + +This Debian package of ikiwiki supports rebuilding wikis on upgrade. The +file /etc/ikiwiki/wikilist lists the setup files of wikis to rebuild, as +well as the user who owns the wiki. diff --git a/debian/postinst b/debian/postinst new file mode 100755 index 000000000..e716fb2f5 --- /dev/null +++ b/debian/postinst @@ -0,0 +1,28 @@ +#!/bin/sh +set -e +#DEBHELPER# + +wikilist=/etc/ikiwiki/wikilist + +processline () { + user="$1" + setup="$2" + + if [ -z "$user" ] || [ -z "$setup" ]; then + echo "parse failure in /etc/ikiwiki/wikilist, line: '$user $setup'" >&2 + exit 1 + fi + + if [ ! -f "$setup" ]; then + echo "warning: $setup specified in /etc/ikiwiki/wikilist does not exist, skipping" >&2 + else + echo "Rebuilding $setup as user $user ..." + su "$user" -c "ikiwiki -setup $setup" + fi +} + +if [ "$1" = configure ] && [ -e $wikilist ]; then + grep -v '^#' $wikilist | grep -v '^$' | while read line; do + processline $line + done +fi diff --git a/debian/rules b/debian/rules index 6ca612c9e..fc703fc90 100755 --- a/debian/rules +++ b/debian/rules @@ -23,6 +23,7 @@ binary-indep: build dh_clean -k $(MAKE) pure_install INSTALLDIRS=vendor \ PREFIX=$(shell pwd)/debian/ikiwiki/$(shell perl -MConfig -e 'print $$Config{prefix}') + dh_install debian/wikilist etc/ikiwiki dh_installdocs html dh_link usr/share/common-licenses/GPL usr/share/doc/ikiwiki/html/GPL dh_link usr/share/ikiwiki/basewiki \ diff --git a/doc/todo/done/upgradehooks.mdwn b/doc/todo/done/upgradehooks.mdwn new file mode 100644 index 000000000..90ef725ae --- /dev/null +++ b/doc/todo/done/upgradehooks.mdwn @@ -0,0 +1,6 @@ +It's annoying to have to manually run --setup, especially for multiple +blogs, on upgrade. Is the deb is used, there could be a postinst hook to do +this. + +Let there be an /etc/ikiwiki/wikis, which just lists setup files and the +user who owns them. postinst loops through, su's, and runs --setup. Voila! diff --git a/doc/todo/upgradehooks.mdwn b/doc/todo/upgradehooks.mdwn deleted file mode 100644 index 90ef725ae..000000000 --- a/doc/todo/upgradehooks.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -It's annoying to have to manually run --setup, especially for multiple -blogs, on upgrade. Is the deb is used, there could be a postinst hook to do -this. - -Let there be an /etc/ikiwiki/wikis, which just lists setup files and the -user who owns them. postinst loops through, su's, and runs --setup. Voila! -- cgit v1.2.3