summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2009-05-20 13:26:20 -0400
committerJoey Hess <joey@gnu.kitenet.net>2009-05-20 13:26:20 -0400
commitf7ded1174dd8f4aec3371214bbadc1c1f7fc2e22 (patch)
tree73a35147cbc3d3adc52e94bfe72bf15f1bff4b20
parent305769cebcf390b9abc92b4fe49cf40d8a39880f (diff)
ikiwiki-transition: Allow setup files to be passed to all subcommands that need a srcdir.
-rw-r--r--debian/changelog2
-rw-r--r--doc/ikiwiki-transition.mdwn6
-rwxr-xr-xikiwiki-transition71
3 files changed, 34 insertions, 45 deletions
diff --git a/debian/changelog b/debian/changelog
index 7efa31cf1..c0a4afbc8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -9,6 +9,8 @@ ikiwiki (3.13) UNRELEASED; urgency=low
* Allow curly braces to be used in pagespecs, and avoid a whole class
of potential security problems, by avoiding performing any string
interpolation on user-supplied data when translating pagespecs.
+ * ikiwiki-transition: Allow setup files to be passed to all subcommands
+ that need a srcdir.
-- Joey Hess <joeyh@debian.org> Wed, 06 May 2009 20:45:44 -0400
diff --git a/doc/ikiwiki-transition.mdwn b/doc/ikiwiki-transition.mdwn
index e0b853ecf..6177f5a46 100644
--- a/doc/ikiwiki-transition.mdwn
+++ b/doc/ikiwiki-transition.mdwn
@@ -44,14 +44,14 @@ Moves values that used to be admin preferences into the setup file.
Note that all comments and any unusual stuff like perl code in the setup
file will be lost, as it is entirely rewritten by the move.
-# indexdb srcdir
+# indexdb your.setup|srcdir
The `indexdb` mode handles converting a plain text `.ikiwiki/index` file to
a binary `.ikiwiki/indexdb`. You do not normally need to run
`ikiwiki-transition indexdb`; ikiwiki will automatically run it as
necessary.
-# hashpassword srcdir
+# hashpassword your.setup|srcdir
The `hashpassword` mode forces any plaintext passwords stored in the
`.ikiwiki/userdb` file to be replaced with password hashes. (The
@@ -61,7 +61,7 @@ If this is not done explicitly, a user's plaintext password will be
automatically converted to a hash when a user logs in for the first time
after upgrade to ikiwiki 2.48.
-# deduplinks srcdir
+# deduplinks your.setup|srcdir
In the past, bugs in ikiwiki have allowed duplicate link information
to be stored in its indexdb. This mode removes such duplicate information,
diff --git a/ikiwiki-transition b/ikiwiki-transition
index ce1807309..7e99c878e 100755
--- a/ikiwiki-transition
+++ b/ikiwiki-transition
@@ -42,16 +42,8 @@ sub handle_directive {
}
sub prefix_directives {
- my $setup=shift;
- if (! defined $setup) {
- usage();
- }
-
- require IkiWiki::Setup;
- require IkiWiki::Plugin::aggregate;
+ loadsetup(shift);
- %config = IkiWiki::defaultconfig();
- IkiWiki::Setup::load($setup);
IkiWiki::loadplugins();
IkiWiki::checkconfig();
IkiWiki::loadindex();
@@ -114,31 +106,16 @@ sub hashpassword {
}
sub aggregateinternal {
- my $setup=shift;
- if (! defined $setup) {
- usage();
- }
-
- require IkiWiki::Setup;
+ loadsetup(shift);
require IkiWiki::Plugin::aggregate;
-
- %config = IkiWiki::defaultconfig();
- IkiWiki::Setup::load($setup);
IkiWiki::checkconfig();
-
IkiWiki::Plugin::aggregate::migrate_to_internal();
}
sub setupformat {
my $setup=shift;
- if (! defined $setup) {
- usage();
- }
-
- require IkiWiki::Setup;
- %config = IkiWiki::defaultconfig();
- IkiWiki::Setup::load($setup);
+ loadsetup($setup);
IkiWiki::checkconfig();
# unpack old-format wrappers setting into new fields
@@ -175,14 +152,8 @@ sub setupformat {
sub moveprefs {
my $setup=shift;
- if (! defined $setup) {
- usage();
- }
-
- require IkiWiki::Setup;
- %config = IkiWiki::defaultconfig();
- IkiWiki::Setup::load($setup);
+ loadsetup($setup);
IkiWiki::checkconfig();
eval q{use IkiWiki::UserInfo};
@@ -224,22 +195,38 @@ sub deduplinks {
}
sub setstatedir {
- my $dir=shift;
+ my $dirorsetup=shift;
- if (! defined $dir) {
+ if (! defined $dirorsetup) {
usage();
}
- if (! -d $dir) {
- error("ikiwiki-transition: $dir does not exist");
+ if (-d $dirorsetup) {
+ $config{wikistatedir}=$dirorsetup."/.ikiwiki";
+ }
+ elsif (-f $dirorsetup) {
+ loadsetup($dirorsetup);
+ }
+ else {
+ error("ikiwiki-transition: $dirorsetup does not exist");
}
-
- $config{wikistatedir}=$dir."/.ikiwiki";
if (! -d $config{wikistatedir}) {
error("ikiwiki-transition: $config{wikistatedir} does not exist");
}
}
+
+sub loadsetup {
+ my $setup=shift;
+ if (! defined $setup) {
+ usage();
+ }
+
+ require IkiWiki::Setup;
+
+ %config = IkiWiki::defaultconfig();
+ IkiWiki::Setup::load($setup);
+}
sub usage {
print STDERR "Usage: ikiwiki-transition type ...\n";
@@ -248,9 +235,9 @@ sub usage {
print STDERR "\taggregateinternal setupfile\n";
print STDERR "\tsetupformat setupfile\n";
print STDERR "\tmoveprefs setupfile\n";
- print STDERR "\thashpassword srcdir\n";
- print STDERR "\tindexdb srcdir\n";
- print STDERR "\tdeduplinks srcdir\n";
+ print STDERR "\thashpassword setupfile|srcdir\n";
+ print STDERR "\tindexdb setupfile|srcdir\n";
+ print STDERR "\tdeduplinks setupfile|srcdir\n";
exit 1;
}