aboutsummaryrefslogtreecommitdiff
path: root/ikiwiki-transition
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2008-12-24 16:16:03 -0500
committerJoey Hess <joey@gnu.kitenet.net>2008-12-24 16:16:03 -0500
commit7ba65e7f4bd53c4cbd865fa35a515ef12c183757 (patch)
tree618574a4475953adfede43d7d53e2f5fc5ea2d3d /ikiwiki-transition
parentc58f0eaa7093a01cd37bb1ab2ae732c8c2659526 (diff)
downloadikiwiki-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-xikiwiki-transition52
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