ikiwiki-transition: Allow setup files to be passed to all subcommands that need a srcdir.

master
Joey Hess 2009-05-20 13:26:20 -04:00
parent 305769cebc
commit f7ded1174d
3 changed files with 34 additions and 45 deletions

2
debian/changelog vendored
View File

@ -9,6 +9,8 @@ ikiwiki (3.13) UNRELEASED; urgency=low
* Allow curly braces to be used in pagespecs, and avoid a whole class * Allow curly braces to be used in pagespecs, and avoid a whole class
of potential security problems, by avoiding performing any string of potential security problems, by avoiding performing any string
interpolation on user-supplied data when translating pagespecs. 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 -- Joey Hess <joeyh@debian.org> Wed, 06 May 2009 20:45:44 -0400

View File

@ -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 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. 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 The `indexdb` mode handles converting a plain text `.ikiwiki/index` file to
a binary `.ikiwiki/indexdb`. You do not normally need to run a binary `.ikiwiki/indexdb`. You do not normally need to run
`ikiwiki-transition indexdb`; ikiwiki will automatically run it as `ikiwiki-transition indexdb`; ikiwiki will automatically run it as
necessary. necessary.
# hashpassword srcdir # hashpassword your.setup|srcdir
The `hashpassword` mode forces any plaintext passwords stored in the The `hashpassword` mode forces any plaintext passwords stored in the
`.ikiwiki/userdb` file to be replaced with password hashes. (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 automatically converted to a hash when a user logs in for the first time
after upgrade to ikiwiki 2.48. after upgrade to ikiwiki 2.48.
# deduplinks srcdir # deduplinks your.setup|srcdir
In the past, bugs in ikiwiki have allowed duplicate link information In the past, bugs in ikiwiki have allowed duplicate link information
to be stored in its indexdb. This mode removes such duplicate information, to be stored in its indexdb. This mode removes such duplicate information,

View File

@ -42,16 +42,8 @@ sub handle_directive {
} }
sub prefix_directives { sub prefix_directives {
my $setup=shift; loadsetup(shift);
if (! defined $setup) {
usage();
}
require IkiWiki::Setup;
require IkiWiki::Plugin::aggregate;
%config = IkiWiki::defaultconfig();
IkiWiki::Setup::load($setup);
IkiWiki::loadplugins(); IkiWiki::loadplugins();
IkiWiki::checkconfig(); IkiWiki::checkconfig();
IkiWiki::loadindex(); IkiWiki::loadindex();
@ -114,31 +106,16 @@ sub hashpassword {
} }
sub aggregateinternal { sub aggregateinternal {
my $setup=shift; loadsetup(shift);
if (! defined $setup) {
usage();
}
require IkiWiki::Setup;
require IkiWiki::Plugin::aggregate; require IkiWiki::Plugin::aggregate;
%config = IkiWiki::defaultconfig();
IkiWiki::Setup::load($setup);
IkiWiki::checkconfig(); IkiWiki::checkconfig();
IkiWiki::Plugin::aggregate::migrate_to_internal(); IkiWiki::Plugin::aggregate::migrate_to_internal();
} }
sub setupformat { sub setupformat {
my $setup=shift; my $setup=shift;
if (! defined $setup) {
usage();
}
require IkiWiki::Setup; loadsetup($setup);
%config = IkiWiki::defaultconfig();
IkiWiki::Setup::load($setup);
IkiWiki::checkconfig(); IkiWiki::checkconfig();
# unpack old-format wrappers setting into new fields # unpack old-format wrappers setting into new fields
@ -175,14 +152,8 @@ sub setupformat {
sub moveprefs { sub moveprefs {
my $setup=shift; my $setup=shift;
if (! defined $setup) {
usage();
}
require IkiWiki::Setup; loadsetup($setup);
%config = IkiWiki::defaultconfig();
IkiWiki::Setup::load($setup);
IkiWiki::checkconfig(); IkiWiki::checkconfig();
eval q{use IkiWiki::UserInfo}; eval q{use IkiWiki::UserInfo};
@ -224,22 +195,38 @@ sub deduplinks {
} }
sub setstatedir { sub setstatedir {
my $dir=shift; my $dirorsetup=shift;
if (! defined $dir) { if (! defined $dirorsetup) {
usage(); usage();
} }
if (! -d $dir) { if (-d $dirorsetup) {
error("ikiwiki-transition: $dir does not exist"); $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}) { if (! -d $config{wikistatedir}) {
error("ikiwiki-transition: $config{wikistatedir} does not exist"); 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 { sub usage {
print STDERR "Usage: ikiwiki-transition type ...\n"; print STDERR "Usage: ikiwiki-transition type ...\n";
@ -248,9 +235,9 @@ sub usage {
print STDERR "\taggregateinternal setupfile\n"; print STDERR "\taggregateinternal setupfile\n";
print STDERR "\tsetupformat setupfile\n"; print STDERR "\tsetupformat setupfile\n";
print STDERR "\tmoveprefs setupfile\n"; print STDERR "\tmoveprefs setupfile\n";
print STDERR "\thashpassword srcdir\n"; print STDERR "\thashpassword setupfile|srcdir\n";
print STDERR "\tindexdb srcdir\n"; print STDERR "\tindexdb setupfile|srcdir\n";
print STDERR "\tdeduplinks srcdir\n"; print STDERR "\tdeduplinks setupfile|srcdir\n";
exit 1; exit 1;
} }