diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2009-05-20 13:26:20 -0400 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2009-05-20 13:26:20 -0400 |
commit | f7ded1174dd8f4aec3371214bbadc1c1f7fc2e22 (patch) | |
tree | 73a35147cbc3d3adc52e94bfe72bf15f1bff4b20 /ikiwiki-transition | |
parent | 305769cebcf390b9abc92b4fe49cf40d8a39880f (diff) |
ikiwiki-transition: Allow setup files to be passed to all subcommands that need a srcdir.
Diffstat (limited to 'ikiwiki-transition')
-rwxr-xr-x | ikiwiki-transition | 71 |
1 files changed, 29 insertions, 42 deletions
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; } |