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
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

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
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,

View File

@ -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();
@ -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,23 +195,39 @@ 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";
print STDERR "Currently supported transition subcommands:\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;
}