X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/1ca191b5707ef38af5cbe196e314d57cd5c8c065..e31a9c4d0916397773882be259d7fbf33411e418:/ikiwiki-transition diff --git a/ikiwiki-transition b/ikiwiki-transition index b15d9f46b..ce1807309 100755 --- a/ikiwiki-transition +++ b/ikiwiki-transition @@ -73,11 +73,7 @@ sub prefix_directives { } sub indexdb { - my $dir=shift; - if (! defined $dir) { - usage(); - } - $config{wikistatedir}=$dir."/.ikiwiki"; + setstatedir(shift); # Note: No lockwiki here because ikiwiki already locks it # before calling this. @@ -96,11 +92,7 @@ sub indexdb { } sub hashpassword { - my $dir=shift; - if (! defined $dir) { - usage(); - } - $config{wikistatedir}=$dir."/.ikiwiki"; + setstatedir(shift); eval q{use IkiWiki::UserInfo}; eval q{use Authen::Passphrase::BlowfishCrypt}; @@ -201,10 +193,15 @@ sub moveprefs { 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); + # might already have been moved + (! defined $orig || $a ne $orig)) { + if (defined $config{$field} && + length $config{$field}) { + $config{$field}=IkiWiki::pagespec_merge($config{$field}, $a); + } + else { + $config{$field}=$a; + } } } } @@ -215,6 +212,35 @@ sub moveprefs { IkiWiki::Setup::dump($setup); } +sub deduplinks { + setstatdir(shift); + IkiWiki::loadindex(); + foreach my $page (keys %links) { + my %l; + $l{$_}=1 foreach @{$links{$page}}; + $links{$page}=[keys %l] + } + IkiWiki::saveindex(); +} + +sub setstatedir { + my $dir=shift; + + if (! defined $dir) { + usage(); + } + + if (! -d $dir) { + error("ikiwiki-transition: $dir does not exist"); + } + + $config{wikistatedir}=$dir."/.ikiwiki"; + + if (! -d $config{wikistatedir}) { + error("ikiwiki-transition: $config{wikistatedir} does not exist"); + } +} + sub usage { print STDERR "Usage: ikiwiki-transition type ...\n"; print STDERR "Currently supported transition subcommands:\n"; @@ -224,6 +250,7 @@ sub usage { print STDERR "\tmoveprefs setupfile\n"; print STDERR "\thashpassword srcdir\n"; print STDERR "\tindexdb srcdir\n"; + print STDERR "\tdeduplinks srcdir\n"; exit 1; } @@ -248,6 +275,9 @@ elsif ($mode eq 'setupformat') { elsif ($mode eq 'moveprefs') { moveprefs(@ARGV); } +elsif ($mode eq 'deduplinks') { + deduplinks(@ARGV); +} else { usage(); }