nitiwiki: error on --rsync if wiki.rsync_dir is not configured
[nit.git] / contrib / nitiwiki / src / wiki_base.nit
index d53a758..998e47e 100644 (file)
@@ -50,12 +50,17 @@ class Nitiwiki
        # Synchronize local output with the distant `WikiConfig::rsync_dir`.
        fun sync do
                var root = expand_path(config.root_dir, config.out_dir)
-               sys.system "rsync -vr --delete {root}/ {config.rsync_dir}"
+               var rsync_dir = config.rsync_dir
+               if rsync_dir == "" then
+                       message("Error: configure `wiki.rsync_dir` to use rsync.", 0)
+                       return
+               end
+               sys.system "rsync -vr --delete -- {root.escape_to_sh}/ {rsync_dir.escape_to_sh}"
        end
 
        # Pull data from git repository.
        fun fetch do
-               sys.system "git pull {config.git_origin} {config.git_branch}"
+               sys.system "git pull {config.git_origin.escape_to_sh} {config.git_branch.escape_to_sh}"
        end
 
        # Analyze wiki files from `dir` to build wiki entries.
@@ -79,7 +84,6 @@ class Nitiwiki
                print "nitiWiki"
                print "name: {config.wiki_name}"
                print "config: {config.ini_file}"
-               print "url: {config.root_url}"
                print ""
                if root_section.is_dirty then
                        print "There is modified files:"
@@ -194,9 +198,6 @@ class Nitiwiki
                end
                var file = expand_path(config.root_dir, config.templates_dir, name)
                var tpl = new TemplateString.from_file(file)
-               if tpl.has_macro("ROOT_URL") then
-                       tpl.replace("ROOT_URL", config.root_url)
-               end
                if tpl.has_macro("TITLE") then
                        tpl.replace("TITLE", config.wiki_name)
                end
@@ -553,8 +554,10 @@ class WikiArticle
        redef var src_full_path: nullable String = null
 
        redef fun src_path do
+               var src_full_path = self.src_full_path
                if src_full_path == null then return null
-               return src_full_path.substring_from(wiki.config.root_dir.length)
+               var res = wiki.config.root_dir.relpath(src_full_path)
+               return res
        end
 
        # The page markdown source content.
@@ -641,12 +644,6 @@ class WikiConfig
        # * default: ``
        var wiki_logo: String is lazy do return value_or_default("wiki.logo", "")
 
-       # Root url of the wiki.
-       #
-       # * key: `wiki.root_url`
-       # * default: `http://localhost/`
-       var root_url: String is lazy do return value_or_default("wiki.root_url", "http://localhost/")
-
        # Markdown extension recognized by this wiki.
        #
        # We allow only one kind of extension per wiki.
@@ -755,6 +752,14 @@ class WikiConfig
                return value_or_default("wiki.auto_summary", "true") == "true"
        end
 
+       # Automatically add breadcrumbs.
+       #
+       # * key: `wiki.auto_breadcrumbs`
+       # * default: `true`
+       var auto_breadcrumbs: Bool is lazy do
+               return value_or_default("wiki.auto_breadcrumbs", "true") == "true"
+       end
+
        # Sidebar position.
        #
        # Position of the sidebar between `left`, `right` and `none`. Any other value
@@ -811,6 +816,18 @@ class WikiConfig
        # * key: `wiki.git_branch`
        # * default: `master`
        var git_branch: String is lazy do return value_or_default("wiki.git_branch", "master")
+
+       # URL to source versionning used to display last changes
+       #
+       # * key: `wiki.last_changes`
+       # * default: ``
+       var last_changes: String is lazy do return value_or_default("wiki.last_changes", "")
+
+       # URL to source edition.
+       #
+       # * key: `wiki.edit`
+       # * default: ``
+       var edit: String is lazy do return value_or_default("wiki.edit", "")
 end
 
 # WikiSection custom configuration.