make ikiwiki-transition prefix_directives take a setup file
This is easier to remeber, and less error-prone than passing it all the pages in the wiki.master
parent
c1fa208f25
commit
04f064e78a
|
@ -110,10 +110,7 @@ ikiwiki (2.40) unstable; urgency=low
|
||||||
in their setup files.
|
in their setup files.
|
||||||
|
|
||||||
To convert your wiki to the new syntax, ikiwiki provides a new script
|
To convert your wiki to the new syntax, ikiwiki provides a new script
|
||||||
ikiwiki-transition. It will convert preprocessor directives in
|
ikiwiki-transition.
|
||||||
all files given on the command line. To convert an entire wiki:
|
|
||||||
|
|
||||||
find wikidir/ -type f -name '*.mdwn' -print0 | xargs -0 ikiwiki-transition prefix_directives
|
|
||||||
|
|
||||||
Even with prefix_directives disabled, ikiwiki now allows an optional '!'
|
Even with prefix_directives disabled, ikiwiki now allows an optional '!'
|
||||||
prefix on preprocessor directives (but still requires a space). Thus, a
|
prefix on preprocessor directives (but still requires a space). Thus, a
|
||||||
|
|
|
@ -12,16 +12,15 @@ ikiwiki-transition type ...
|
||||||
change in ikiwiki syntax. It also handles other transitions not involving
|
change in ikiwiki syntax. It also handles other transitions not involving
|
||||||
wiki pages.
|
wiki pages.
|
||||||
|
|
||||||
# prefix_directives file ...
|
# prefix_directives your.setup
|
||||||
|
|
||||||
The `prefix_directives` mode converts the specified ikiwiki page from
|
The `prefix_directives` mode converts all pages from the old preprocessor
|
||||||
the old preprocessor directive syntax, requiring a space, to the new
|
directive syntax, requiring a space, to the new syntax, prefixed by '!'.
|
||||||
syntax, prefixed by '!'.
|
|
||||||
|
|
||||||
Preprocessor directives which already use the new syntax will remain
|
Preprocessor directives which already use the new syntax will remain
|
||||||
unchanged.
|
unchanged.
|
||||||
|
|
||||||
Note that if the page contains wiki links with spaces, which some
|
Note that if a page contains wiki links with spaces, which some
|
||||||
older versions of ikiwiki accepted, the prefix_directives transition will
|
older versions of ikiwiki accepted, the prefix_directives transition will
|
||||||
treat these as preprocessor directives and convert them.
|
treat these as preprocessor directives and convert them.
|
||||||
|
|
||||||
|
|
|
@ -486,7 +486,7 @@ use the following hashes, using a page name as the key:
|
||||||
destination file.
|
destination file.
|
||||||
* `%pagesources` contains the name of the source file for each page.
|
* `%pagesources` contains the name of the source file for each page.
|
||||||
|
|
||||||
Also, the %IkiWiki::version variable contains the version number for the
|
Also, the `%IkiWiki::version` variable contains the version number for the
|
||||||
ikiwiki program.
|
ikiwiki program.
|
||||||
|
|
||||||
### Library functions
|
### Library functions
|
||||||
|
|
|
@ -23,7 +23,7 @@ your wiki is upgraded to 3.0.
|
||||||
You can move these preferences into the setup file by running
|
You can move these preferences into the setup file by running
|
||||||
`ikiwiki-transition moveprefs your.setup`
|
`ikiwiki-transition moveprefs your.setup`
|
||||||
|
|
||||||
(Make sure you have converted the setuop file to the new format first.)
|
(Make sure you have converted the setup file to the new format first.)
|
||||||
|
|
||||||
## prefix directives
|
## prefix directives
|
||||||
|
|
||||||
|
@ -37,15 +37,10 @@ following to your setup file:
|
||||||
|
|
||||||
prefix_directives => 0,
|
prefix_directives => 0,
|
||||||
|
|
||||||
But it's not hard to convert your wiki to the new syntax. You can use
|
To convert to the new syntax, run
|
||||||
[[ikiwiki-transition]]. It will convert preprocessor directives in all
|
`ikiwiki-transition prefix_directives your.setup`
|
||||||
files given on the command line. To convert an entire wiki:
|
|
||||||
|
|
||||||
find wikidir/ -type f -name '*.mdwn' -print0 | xargs -0 ikiwiki-transition prefix_directives
|
(And then commit the changes it makes to pages in your srcdir.)
|
||||||
|
|
||||||
Be sure to modify the find to list all pages in the wiki if you're using
|
|
||||||
other markup than markdown. You will probably want to commit the changes
|
|
||||||
when you're done too.
|
|
||||||
|
|
||||||
## GlobLists
|
## GlobLists
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/perl -i
|
#!/usr/bin/perl
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
use IkiWiki;
|
use IkiWiki;
|
||||||
|
@ -42,11 +42,33 @@ sub handle_directive {
|
||||||
}
|
}
|
||||||
|
|
||||||
sub prefix_directives {
|
sub prefix_directives {
|
||||||
$/=undef; # process whole files at once
|
my $setup=shift;
|
||||||
|
if (! defined $setup) {
|
||||||
while (<>) {
|
usage();
|
||||||
s{$regex}{handle_directive($1, $2, $3, $4)}eg;
|
}
|
||||||
print;
|
|
||||||
|
require IkiWiki::Setup;
|
||||||
|
require IkiWiki::Plugin::aggregate;
|
||||||
|
|
||||||
|
%config = IkiWiki::defaultconfig();
|
||||||
|
IkiWiki::Setup::load($setup);
|
||||||
|
IkiWiki::loadplugins();
|
||||||
|
IkiWiki::checkconfig();
|
||||||
|
IkiWiki::loadindex();
|
||||||
|
|
||||||
|
if (! %pagesources) {
|
||||||
|
error "ikiwiki has not built this wiki yet, cannot transition";
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $page (values %pagesources) {
|
||||||
|
next unless defined pagetype($page) &&
|
||||||
|
-f $config{srcdir}."/".$page;
|
||||||
|
my $content=readfile($config{srcdir}."/".$page);
|
||||||
|
my $oldcontent=$content;
|
||||||
|
$content=~s{$regex}{handle_directive($1, $2, $3, $4)}eg;
|
||||||
|
if ($oldcontent ne $content) {
|
||||||
|
writefile($page, $config{srcdir}, $content);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +131,7 @@ sub aggregateinternal {
|
||||||
require IkiWiki::Plugin::aggregate;
|
require IkiWiki::Plugin::aggregate;
|
||||||
|
|
||||||
%config = IkiWiki::defaultconfig();
|
%config = IkiWiki::defaultconfig();
|
||||||
IkiWiki::Setup::load();
|
IkiWiki::Setup::load($setup);
|
||||||
IkiWiki::checkconfig();
|
IkiWiki::checkconfig();
|
||||||
|
|
||||||
IkiWiki::Plugin::aggregate::migrate_to_internal();
|
IkiWiki::Plugin::aggregate::migrate_to_internal();
|
||||||
|
@ -196,12 +218,12 @@ sub moveprefs {
|
||||||
sub usage {
|
sub usage {
|
||||||
print STDERR "Usage: ikiwiki-transition type ...\n";
|
print STDERR "Usage: ikiwiki-transition type ...\n";
|
||||||
print STDERR "Currently supported transition subcommands:\n";
|
print STDERR "Currently supported transition subcommands:\n";
|
||||||
print STDERR "\tprefix_directives file ...\n";
|
print STDERR "\tprefix_directives setupfile ...\n";
|
||||||
print STDERR "\tindexdb srcdir\n";
|
|
||||||
print STDERR "\thashpassword srcdir\n";
|
|
||||||
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 "\tindexdb srcdir\n";
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue