X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/3c66e1552b70fe5ed5211aafcf127c647d79b481..43e895ec78a00a53aca31a5b38c18e8ef4ab6842:/ikiwiki-transition diff --git a/ikiwiki-transition b/ikiwiki-transition index f17868d73..398b1a3c8 100755 --- a/ikiwiki-transition +++ b/ikiwiki-transition @@ -42,16 +42,8 @@ sub handle_directive { } sub prefix_directives { - my $setup=shift; - if (! defined $setup) { - usage(); - } + loadsetup(shift); - require IkiWiki::Setup; - require IkiWiki::Plugin::aggregate; - - %config = IkiWiki::defaultconfig(); - IkiWiki::Setup::load($setup); IkiWiki::loadplugins(); IkiWiki::checkconfig(); IkiWiki::loadindex(); @@ -73,11 +65,7 @@ sub prefix_directives { } sub indexdb { - my $dir=shift; - if (! defined $dir) { - usage(); - } - $config{wikistatedir}=$dir."/.ikiwiki"; + setstatedir(shift); # Note: No lockwiki here because ikiwiki already locks it # before calling this. @@ -96,11 +84,7 @@ sub indexdb { } sub hashpassword { - my $dir=shift; - if (! defined $dir) { - usage(); - } - $config{wikistatedir}=$dir."/.ikiwiki"; + setstatedir(shift); eval q{use IkiWiki::UserInfo}; eval q{use Authen::Passphrase::BlowfishCrypt}; @@ -122,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 @@ -183,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}; @@ -221,11 +184,9 @@ sub moveprefs { } sub deduplinks { - my $dir=shift; - if (! defined $dir) { - usage(); - } - $config{wikistatedir}=$dir."/.ikiwiki"; + loadsetup(shift); + IkiWiki::loadplugins(); + IkiWiki::checkconfig(); IkiWiki::loadindex(); foreach my $page (keys %links) { my %l; @@ -235,6 +196,40 @@ sub deduplinks { IkiWiki::saveindex(); } +sub setstatedir { + my $dirorsetup=shift; + + if (! defined $dirorsetup) { + usage(); + } + + if (-d $dirorsetup) { + $config{wikistatedir}=$dirorsetup."/.ikiwiki"; + } + elsif (-f $dirorsetup) { + loadsetup($dirorsetup); + } + else { + error("ikiwiki-transition: $dirorsetup does not exist"); + } + + 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"; print STDERR "Currently supported transition subcommands:\n"; @@ -242,9 +237,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\n"; exit 1; }