add ikiwiki-transition setupformat subcommand.

Also fixed a bug in how aggregateinternal used IkiWiki::Setup::load,
and added checks for arguments to other subcommands.
master
Joey Hess 2008-08-05 20:40:49 -04:00
parent 1d5ba6cf51
commit ea6dc38325
4 changed files with 74 additions and 14 deletions

10
debian/NEWS vendored
View File

@ -1,13 +1,19 @@
ikiwiki (2.60) unstable; urgency=low
Admin preferences are moving from the web interface to the setup file.
There are three new options in the setup file: locked_pages, banned_users,
and allowed_attachments. The admin prefs page can still be used, but
There are three new options in the setup file: `locked_pages`, `banned_users`,
and `allowed_attachments`. The admin prefs page can still be used, but
that's deprecated, and the prefs will be hidden if a value is not already
set. If a value is set in the web interface, you're encouraged to move that
setting to your setup file now, since version 3.0 will remove the deprecated
web interface.
Also, the layout of the setup file has changed in a significant way in this
release. Old setup files will continue to work, but new features, like the
new websetup interface, require a new format setup file. You can convert
old setup files into the new format by running
`ikiwiki-transition setupformat ikiwiki.setup`
-- Joey Hess <joeyh@debian.org> Fri, 01 Aug 2008 17:02:14 -0400
ikiwiki (2.52) unstable; urgency=low

2
debian/changelog vendored
View File

@ -8,6 +8,8 @@ ikiwiki (2.60) UNRELEASED; urgency=low
* Large amounts of internal config data reorg.
* The way wrappers are defined in the setup file has changed. Old setup
files will continue to work, for now.
* ikiwiki-transition setupformat can be used to convert a setup file to the
new format.
* Version control backends promoted to first-class plugins.
* ikiwiki-update-wikilist: Add -r switch to remove. Default behavior is now
always to add.

View File

@ -25,6 +25,14 @@ Note that if the page contains wiki links with spaces, which some
older versions of ikiwiki accepted, the prefix_directives transition will
treat these as preprocessor directives and convert them.
# setupformat
The `setupformat` mode converts a setup file from using a single `wrappers` block
to using `cgi_wrapper`, `git_wrapper`, etc.
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 transition.
# aggregateinternal
The `aggregateinternal` mode moves pages aggregated by the aggregate plugin

View File

@ -51,11 +51,11 @@ sub prefix_directives {
}
sub indexdb {
$config{wikistatedir}=shift()."/.ikiwiki";
if (! defined $config{wikistatedir}) {
my $dir=shift;
if (! defined $dir) {
usage();
}
$config{wikistatedir}=$dir."/.ikiwiki";
# Note: No lockwiki here because ikiwiki already locks it
# before calling this.
@ -74,11 +74,11 @@ sub indexdb {
}
sub hashpassword {
$config{wikistatedir}=shift()."/.ikiwiki";
if (! defined $config{wikistatedir}) {
my $dir=shift;
if (! defined $dir) {
usage();
}
$config{wikistatedir}=$dir."/.ikiwiki";
eval q{use IkiWiki::UserInfo};
eval q{use Authen::Passphrase::BlowfishCrypt};
@ -100,10 +100,16 @@ sub hashpassword {
}
sub aggregateinternal {
my $setup=shift;
if (! defined $setup) {
usage();
}
require IkiWiki::Setup;
require IkiWiki::Plugin::aggregate;
%config = (IkiWiki::defaultconfig(), IkiWiki::Setup::load(shift));
%config = IkiWiki::defaultconfig();
IkiWiki::Setup::load();
IkiWiki::checkconfig();
IkiWiki::Plugin::aggregate::migrate_to_internal();
@ -111,13 +117,48 @@ sub aggregateinternal {
print "... now add aggregateinternal => 1 to your .setup file\n";
}
sub setupformat {
my $setup=shift;
if (! defined $setup) {
usage();
}
require IkiWiki::Setup;
%config = IkiWiki::defaultconfig();
IkiWiki::Setup::load($setup);
IkiWiki::checkconfig();
# unpack old-format wrappers setting into new fields
foreach my $wrapper (@{$config{wrappers}}) {
if ($wrapper->{cgi}) {
print "setting cgi_wrapper to ".$wrapper->{wrapper}."\n";
$config{cgi_wrapper}=$wrapper->{wrapper};
$config{cgi_wrappermode}=$wrapper->{wrappermode}
if exists $wrapper->{wrappermode};
}
elsif ($config{rcs}) {
print "setting $config{rcs}_wrapper to ".$wrapper->{wrapper}."\n";
$config{$config{rcs}."_wrapper"}=$wrapper->{wrapper};
$config{$config{rcs}."_wrappermode"}=$wrapper->{wrappermode}
if exists $wrapper->{wrappermode};
}
else {
die "don't know what to do with wrapper ".$wrapper->{wrapper}."\n";
}
}
IkiWiki::Setup::dump($setup);
}
sub usage {
print STDERR "Usage: ikiwiki-transition type ...\n";
print STDERR "Currently supported transition subcommands:\n";
print STDERR " prefix_directives file\n";
print STDERR " indexdb srcdir\n";
print STDERR " hashpassword srcdir\n";
print STDERR " aggregateinternal setupfile\n";
print STDERR "\tprefix_directives file\n";
print STDERR "\tindexdb srcdir\n";
print STDERR "\thashpassword srcdir\n";
print STDERR "\taggregateinternal setupfile\n";
print STDERR "\tsetupformat setupfile\n";
exit 1;
}
@ -136,6 +177,9 @@ elsif ($mode eq 'indexdb') {
elsif ($mode eq 'aggregateinternal') {
aggregateinternal(@ARGV);
}
elsif ($mode eq 'setupformat') {
setupformat(@ARGV);
}
else {
usage();
}