diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2008-12-24 16:16:03 -0500 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2008-12-24 16:16:03 -0500 |
commit | 7ba65e7f4bd53c4cbd865fa35a515ef12c183757 (patch) | |
tree | 618574a4475953adfede43d7d53e2f5fc5ea2d3d /ikiwiki-transition | |
parent | c58f0eaa7093a01cd37bb1ab2ae732c8c2659526 (diff) | |
download | ikiwiki-7ba65e7f4bd53c4cbd865fa35a515ef12c183757.tar ikiwiki-7ba65e7f4bd53c4cbd865fa35a515ef12c183757.tar.gz |
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.
Diffstat (limited to 'ikiwiki-transition')
-rwxr-xr-x | ikiwiki-transition | 52 |
1 files changed, 51 insertions, 1 deletions
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 |