From 7ba65e7f4bd53c4cbd865fa35a515ef12c183757 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Dec 2008 16:16:03 -0500 Subject: remove deprecated admin prefs A new ikiwiki-transition moveprefs subcommand can pull the old data out of the userdb and inject it into the setup file. Note that it leaves the old values behind in the userdb too. I did this because I didn't want to lose data if it fails writing the setup file for some reason, and the old data in the userdb will only use a small amount of space. Running the command multiple times will mostly not change anything. --- doc/ikiwiki-transition.mdwn | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'doc/ikiwiki-transition.mdwn') diff --git a/doc/ikiwiki-transition.mdwn b/doc/ikiwiki-transition.mdwn index 8b7c3579f..3a3529454 100644 --- a/doc/ikiwiki-transition.mdwn +++ b/doc/ikiwiki-transition.mdwn @@ -8,11 +8,11 @@ ikiwiki-transition type ... # DESCRIPTION -`ikiwiki-transition` aids in converting wiki pages when -there's a major change in ikiwiki syntax. It also handles other transitions -not involving wiki pages. +`ikiwiki-transition` aids in converting wiki pages when there's a major +change in ikiwiki syntax. It also handles other transitions not involving +wiki pages. -# prefix_directives +# prefix_directives file ... The `prefix_directives` mode converts the specified ikiwiki page from the old preprocessor directive syntax, requiring a space, to the new @@ -25,7 +25,7 @@ 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 +# setupformat your.setup The `setupformat` mode converts a setup file from using a single `wrappers` block to using `cgi_wrapper`, `git_wrapper`, etc. @@ -33,25 +33,30 @@ 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 +# aggregateinternal your.setup The `aggregateinternal` mode moves pages aggregated by the aggregate plugin so that the `aggregateinternal` option can be enabled. -# indexdb +# moveprefs your.setup + +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 The `indexdb` mode handles converting a plain text `.ikiwiki/index` file to -a binary `.ikiwiki/indexdb`. In this mode, you should specify the srcdir of -the wiki as the second parameter. 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 necessary. -# hashpassword +# hashpassword srcdir The `hashpassword` mode forces any plaintext passwords stored in the `.ikiwiki/userdb` file to be replaced with password hashes. (The -Authen::Passphrase perl module is needed to do this.) In this mode, you -should specify the srcdir of the wiki as the second parameter. +Authen::Passphrase perl module is needed to do this.) 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 -- cgit v1.2.3 From 04f064e78aedecc234e08bd9b49ae3674cb8f7bd Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 24 Dec 2008 19:43:07 -0500 Subject: 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. --- debian/NEWS | 5 +---- doc/ikiwiki-transition.mdwn | 9 ++++----- doc/plugins/write.mdwn | 2 +- doc/tips/upgrade_to_3.0.mdwn | 13 ++++--------- ikiwiki-transition | 42 ++++++++++++++++++++++++++++++++---------- 5 files changed, 42 insertions(+), 29 deletions(-) (limited to 'doc/ikiwiki-transition.mdwn') diff --git a/debian/NEWS b/debian/NEWS index 1c9763d1a..f9dfc3770 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -110,10 +110,7 @@ ikiwiki (2.40) unstable; urgency=low in their setup files. To convert your wiki to the new syntax, ikiwiki provides a new script - ikiwiki-transition. It will convert preprocessor directives in - 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 + ikiwiki-transition. Even with prefix_directives disabled, ikiwiki now allows an optional '!' prefix on preprocessor directives (but still requires a space). Thus, a diff --git a/doc/ikiwiki-transition.mdwn b/doc/ikiwiki-transition.mdwn index 3a3529454..18836d5f5 100644 --- a/doc/ikiwiki-transition.mdwn +++ b/doc/ikiwiki-transition.mdwn @@ -12,16 +12,15 @@ ikiwiki-transition type ... change in ikiwiki syntax. It also handles other transitions not involving wiki pages. -# prefix_directives file ... +# prefix_directives your.setup -The `prefix_directives` mode converts the specified ikiwiki page from -the old preprocessor directive syntax, requiring a space, to the new -syntax, prefixed by '!'. +The `prefix_directives` mode converts all pages from the old preprocessor +directive syntax, requiring a space, to the new syntax, prefixed by '!'. Preprocessor directives which already use the new syntax will remain 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 treat these as preprocessor directives and convert them. diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index cb7571289..8992fad01 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -486,7 +486,7 @@ use the following hashes, using a page name as the key: destination file. * `%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. ### Library functions diff --git a/doc/tips/upgrade_to_3.0.mdwn b/doc/tips/upgrade_to_3.0.mdwn index 50c420103..3a515a61f 100644 --- a/doc/tips/upgrade_to_3.0.mdwn +++ b/doc/tips/upgrade_to_3.0.mdwn @@ -23,7 +23,7 @@ your wiki is upgraded to 3.0. You can move these preferences into the setup file by running `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 @@ -37,15 +37,10 @@ following to your setup file: prefix_directives => 0, -But it's not hard to convert your wiki to the new syntax. You can use -[[ikiwiki-transition]]. It will convert preprocessor directives in all -files given on the command line. To convert an entire wiki: +To convert to the new syntax, run +`ikiwiki-transition prefix_directives your.setup` - find wikidir/ -type f -name '*.mdwn' -print0 | xargs -0 ikiwiki-transition prefix_directives - -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. +(And then commit the changes it makes to pages in your srcdir.) ## GlobLists diff --git a/ikiwiki-transition b/ikiwiki-transition index 9a5dd1362..b15d9f46b 100755 --- a/ikiwiki-transition +++ b/ikiwiki-transition @@ -1,4 +1,4 @@ -#!/usr/bin/perl -i +#!/usr/bin/perl use warnings; use strict; use IkiWiki; @@ -42,11 +42,33 @@ sub handle_directive { } sub prefix_directives { - $/=undef; # process whole files at once - - while (<>) { - s{$regex}{handle_directive($1, $2, $3, $4)}eg; - print; + my $setup=shift; + if (! defined $setup) { + usage(); + } + + 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; %config = IkiWiki::defaultconfig(); - IkiWiki::Setup::load(); + IkiWiki::Setup::load($setup); IkiWiki::checkconfig(); IkiWiki::Plugin::aggregate::migrate_to_internal(); @@ -196,12 +218,12 @@ sub moveprefs { sub usage { print STDERR "Usage: ikiwiki-transition type ...\n"; print STDERR "Currently supported transition subcommands:\n"; - print STDERR "\tprefix_directives file ...\n"; - print STDERR "\tindexdb srcdir\n"; - print STDERR "\thashpassword srcdir\n"; + print STDERR "\tprefix_directives setupfile ...\n"; 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"; exit 1; } -- cgit v1.2.3