use IkiWiki::UserInfo;
use Term::ReadLine;
use File::Path;
+use Encode;
-sub ask ($$) { #{{{
+sub ask ($$) {
my ($question, $default)=@_;
my $r=Term::ReadLine->new("ikiwiki");
- $r->readline($question." ", $default);
-} #}}}
+ $r->readline(encode_utf8($question)." ", $default);
+}
-sub prettydir ($) { #{{{
+sub prettydir ($) {
my $dir=shift;
$dir=~s/^\Q$ENV{HOME}\E\//~\//;
return $dir;
-} #}}}
+}
-sub import (@) { #{{{
+sub import (@) {
my $this=shift;
IkiWiki::Setup::merge({@_});
foreach my $key (qw{srcdir destdir repository dumpsetup}) {
next unless exists $config{$key};
my $add="";
- while (-e $add.$config{$key}) {
+ my $dir=IkiWiki::dirname($config{$key})."/";
+ my $base=IkiWiki::basename($config{$key});
+ while (-e $dir.$add.$base) {
$add=1 if ! $add;
$add++;
}
- $config{$key}=$add.$config{$key};
+ $config{$key}=$dir.$add.$base;
}
# Set up wrapper
elsif ($config{rcs} eq 'svn') {
$config{svn_wrapper}=$config{repository}."/hooks/post-commit";
}
+ elsif ($config{rcs} eq 'monotone') {
+ $config{mtn_wrapper}=$config{srcdir}."_MTN/ikiwiki-netsync-hook";
+ }
elsif ($config{rcs} eq 'bzr') {
# TODO
}
print "\n\nSetting up $config{wikiname} ...\n";
- # Set up the repository.
+ # Set up the srcdir.
mkpath($config{srcdir}) || die "mkdir $config{srcdir}: $!";
+ # Copy in example wiki.
+ if (exists $config{example}) {
+ # cp -R is POSIX
+ # Another reason not to use -a is so that pages such as blog
+ # posts will not have old creation dates on this new wiki.
+ system("cp -R $IkiWiki::installdir/share/ikiwiki/examples/$config{example}/* $config{srcdir}");
+ delete $config{example};
+ }
+
+ # Set up the repository.
delete $config{repository} if ! $config{rcs} || $config{rcs}=~/bzr|mercurial/;
if ($config{rcs}) {
my @params=($config{rcs}, $config{srcdir});
print "To modify settings, edit ".prettydir($config{dumpsetup})." and then run:\n";
print " ikiwiki -setup ".prettydir($config{dumpsetup})."\n";
exit 0;
-} #}}}
+}
1