password prompt for admin user
authorJoey Hess <joey@kodama.kitenet.net>
Sun, 27 Jul 2008 19:44:11 +0000 (15:44 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Sun, 27 Jul 2008 19:44:11 +0000 (15:44 -0400)
IkiWiki/Setup/Automator.pm
doc/setup.mdwn

index af98c9847234f45fa9caf641914a8e65713117df..202c5541c700c78848f191ee71e73c090490ffc7 100644 (file)
@@ -6,6 +6,7 @@ package IkiWiki::Setup::Automator;
 use warnings;
 use strict;
 use IkiWiki;
 use warnings;
 use strict;
 use IkiWiki;
+use IkiWiki::UserInfo;
 use Term::ReadLine;
 use File::Path;
 
 use Term::ReadLine;
 use File::Path;
 
@@ -36,11 +37,11 @@ sub import (@) { #{{{
        foreach my $key (qw{srcdir destdir repository dumpsetup}) {
                next unless exists $config{$key};
                my $add="";
        foreach my $key (qw{srcdir destdir repository dumpsetup}) {
                next unless exists $config{$key};
                my $add="";
-               while (-e $config{$key}.$add) {
+               while (-e $add.$config{$key}) {
                        $add=1 if ! $add;
                        $add++;
                }
                        $add=1 if ! $add;
                        $add++;
                }
-               $config{$key}.=$add;
+               $config{$key}=$add.$config{$key};
        }
 
        IkiWiki::checkconfig();
        }
 
        IkiWiki::checkconfig();
@@ -76,10 +77,37 @@ sub import (@) { #{{{
        }
        IkiWiki::Setup::dump($config{dumpsetup});
 
        }
        IkiWiki::Setup::dump($config{dumpsetup});
 
-       # Build the wiki.
+       # Build the wiki, but w/o wrappers, so it's not live yet.
        mkpath($config{destdir}) || die "mkdir $config{destdir}: $!";
        mkpath($config{destdir}) || die "mkdir $config{destdir}: $!";
-       if (system("ikiwiki", "--setup", $config{dumpsetup}) != 0) {
-               die "ikiwiki --setup $config{dumpsetup} failed";
+       if (system("ikiwiki", "--refresh", "--setup", $config{dumpsetup}) != 0) {
+               die "ikiwiki --refresh --setup $config{dumpsetup} failed";
+       }
+
+       # Create admin user(s).
+       foreach my $admin (@{$config{adminuser}}) {
+               next if $admin=~/^http\?:\/\//; # openid
+               
+               # Prompt for password w/o echo.
+               system('stty -echo 2>/dev/null');
+               local $|=1;
+               print "\n\nCreating wiki admin $admin ...\n";
+               print "Choose a password: ";
+               chomp(my $password=<STDIN>);
+               print "\n\n\n";
+               system('stty sane 2>/dev/null');
+
+               if (IkiWiki::userinfo_setall($admin, { regdate => time }) &&
+                   IkiWiki::Plugin::passwordauth::setpassword($admin, $password)) {
+                       IkiWiki::userinfo_set($admin, "email", $config{adminemail}) if defined $config{adminemail};
+               }
+               else {
+                       error("problem setting up $admin user");
+               }
+       }
+       
+       # Add wrappers, make live.
+       if (system("ikiwiki", "--wrappers", "--setup", $config{dumpsetup}) != 0) {
+               die "ikiwiki --wrappers --setup $config{dumpsetup} failed";
        }
 
        # Done!
        }
 
        # Done!
index bc93da7b39d52e525f7488b548d98b4423f6b220..09ca550384f90f59466e1acbd0d2bdc49707f2a2 100644 (file)
@@ -15,6 +15,7 @@ and answer a couple of questions.
        % ikiwiki -setup /etc/ikiwiki/simple.setup
        What will the wiki be named? mywiki
        What revision control system to use? git
        % ikiwiki -setup /etc/ikiwiki/simple.setup
        What will the wiki be named? mywiki
        What revision control system to use? git
+       What wiki user (or openid) will be wiki admin? joey
 
 Wait for it to tell you an url for your new wiki.. Done!
 
 
 Wait for it to tell you an url for your new wiki.. Done!