add --refresh and make it with with --setup
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 26 Mar 2006 05:08:41 +0000 (05:08 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 26 Mar 2006 05:08:41 +0000 (05:08 +0000)
IkiWiki/CGI.pm
IkiWiki/Setup.pm
IkiWiki/Setup/Standard.pm
doc/bugs.mdwn
doc/usage.mdwn
ikiwiki

index 560377f0e4709d32bc0356b97185a0425ce40729..f472413b80765be538d293b82ec77297f5a45102 100644 (file)
@@ -513,7 +513,7 @@ sub cgi () { #{{{
                # is entered
                my $page=lc($q->param('title'));
                $page=~y/ /_/;
-               $page=~s/([^-A-Za-z0-9_:+/])/"__".ord($1)."__"/eg;
+               $page=~s/([^-A-Za-z0-9_:+\/])/"__".ord($1)."__"/eg;
                # if the page already exist, munge it to be unique
                my $from=$q->param('from');
                my $add="";
index 0c8ad9208d50768d8f2eb37473ddc2f5d85187f4..40ed788624a16ba5f38413e74be6802f7fb1ad5f 100644 (file)
@@ -19,6 +19,7 @@ sub setup () { # {{{
 
        eval $code;
        error($@) if $@;
+
        exit;
 } #}}}
 
index c5a67afdf7cce69f4e1fea08f7dae4b377f14111..b26df006b9d3e1d0ae58249ed4417f0f3c9f3746 100644 (file)
@@ -20,21 +20,27 @@ package IkiWiki;
 sub setup_standard {
        my %setup=%{$_[1]};
 
-       debug("generating wrappers..");
-       my %startconfig=(%config);
-       foreach my $wrapper (@{$setup{wrappers}}) {
-               %config=(%startconfig, verbose => 0, %setup, %{$wrapper});
-               checkconfig();
-               gen_wrapper();
+       if (! $config{refresh}) {
+               debug("generating wrappers..");
+               my %startconfig=(%config);
+               foreach my $wrapper (@{$setup{wrappers}}) {
+                       %config=(%startconfig, verbose => 0, %setup, %{$wrapper});
+                       checkconfig();
+                       gen_wrapper();
+               }
+               %config=(%startconfig);
        }
-       %config=(%startconfig);
-       
-       debug("rebuilding wiki..");
        foreach my $c (keys %setup) {
                $config{$c}=possibly_foolish_untaint($setup{$c})
                        if defined $setup{$c} && ! ref $setup{$c};
        }
-       $config{rebuild}=1;
+       if (! $config{refresh}) {
+               $config{rebuild}=1;
+               debug("rebuilding wiki..");
+       }
+       else {
+               debug("refreshing wiki..");
+       }
 
        checkconfig();
        lockwiki();
index ede1c48377b02236e8567c6e76eb36dd763b0648..3d6ea906b00ce07fe13ec813ef3dec1deda544b8 100644 (file)
@@ -25,3 +25,6 @@
   will linger around and not be deleted.
 * Currently only one blog is supported per page. Attempts to add more
   will make it only update one of the blogs on the page.
+* If I edit blog/entry/blog_moved, add a link to code/ikiwiki, and hit
+  preview, it doesn't get the link right because it makes it relative to
+  where the page will be saved to, not to where the cgi script is.
index aa4978773552d90f0f0e2287dc4fcfd8edc722c6..f2f0fba9af39ec714c97b6dd77f2b479d2954601 100644 (file)
@@ -30,6 +30,11 @@ flags such as --verbose can be negated with --no-verbose.
 
   Force a rebuild of all pages.
 
+* --refresh
+
+  Refresh the wiki, updating any changes pages. This is the default
+  behavior so you don't normally need to specify it.
+
 * --fixctime
 
   Pull last changed time for all pages out of the revision control system.
@@ -117,12 +122,12 @@ flags such as --verbose can be negated with --no-verbose.
 * --setup configfile
 
   In setup mode, ikiwiki reads the config file, which is really a perl
-  program that can call ikiwiki internal functions. Uses of this are
-  various; the normal one is to automatically generate wrappers for a
-  wiki based on data in a config file.
-  
-  Note that the wiki will be (re)built as part of the setup process to
-  ensure that any changes take effect.
+  program that can call ikiwiki internal functions.
+
+  The default action when --setup is specified is to automatically generate
+  wrappers for a wiki based on data in a config file, and rebuild the wiki.
+  If you also pass the --refresh option, ikiwiki will instead just refresh
+  the wiki described in the setup file.
 
   [[ikiwiki.setup]] is an example of such a config file.
 
diff --git a/ikiwiki b/ikiwiki
index ab9f3fc2f68d862284787258c699ebc33bdcd410..c5ac7c0b824549d5ef895953fd6b93b04784950a 100755 (executable)
--- a/ikiwiki
+++ b/ikiwiki
@@ -34,6 +34,7 @@ sub getconfig () { #{{{
                        anonok => 0,
                        rss => 0,
                        rebuild => 0,
+                       refresh => 0,
                        getctime => 0,
                        wrapper => undef,
                        wrappermode => undef,
@@ -50,6 +51,7 @@ sub getconfig () { #{{{
                        "wikiname=s" => \$config{wikiname},
                        "verbose|v!" => \$config{verbose},
                        "rebuild!" => \$config{rebuild},
+                       "refresh!" => \$config{refresh},
                        "getctime" => \$config{getctime},
                        "wrappermode=i" => \$config{wrappermode},
                        "svn!" => \$config{svn},