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. --- ikiwiki-transition | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) (limited to 'ikiwiki-transition') diff --git a/ikiwiki-transition b/ikiwiki-transition index 802cd643d..9a5dd1362 100755 --- a/ikiwiki-transition +++ b/ikiwiki-transition @@ -159,14 +159,49 @@ sub setupformat { IkiWiki::Setup::dump($setup); } +sub moveprefs { + my $setup=shift; + if (! defined $setup) { + usage(); + } + + require IkiWiki::Setup; + + %config = IkiWiki::defaultconfig(); + IkiWiki::Setup::load($setup); + IkiWiki::checkconfig(); + + eval q{use IkiWiki::UserInfo}; + error $@ if $@; + + foreach my $field (qw{allowed_attachments locked_pages}) { + my $orig=$config{$field}; + foreach my $admin (@{$config{adminuser}}) { + my $a=IkiWiki::userinfo_get($admin, $field); + if (defined $a && length $a && + $a ne $orig && # might already have been moved + defined $config{$field} && + length $config{$field}) { + $config{$field}=IkiWiki::pagespec_merge($config{$field}, $a); + } + } + } + + my %banned=map { $_ => 1 } @{$config{banned_users}}, IkiWiki::get_banned_users(); + $config{banned_users}=[sort keys %banned]; + + IkiWiki::Setup::dump($setup); +} + sub usage { print STDERR "Usage: ikiwiki-transition type ...\n"; print STDERR "Currently supported transition subcommands:\n"; - print STDERR "\tprefix_directives file\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"; + print STDERR "\tmoveprefs setupfile\n"; exit 1; } @@ -188,6 +223,9 @@ elsif ($mode eq 'aggregateinternal') { elsif ($mode eq 'setupformat') { setupformat(@ARGV); } +elsif ($mode eq 'moveprefs') { + moveprefs(@ARGV); +} else { usage(); } @@ -245,3 +283,15 @@ sub oldloadindex { return close($in); } + +# Used to be in IkiWiki/UserInfo, but only used here now. +sub get_banned_users () { + my @ret; + my $userinfo=userinfo_retrieve(); + foreach my $user (keys %{$userinfo}) { + push @ret, $user if $userinfo->{$user}->{banned}; + } + return @ret; +} + +1 -- cgit v1.2.3