nitdoc: use --share-dir option
[nit.git] / src / doc / doc_phases / doc_html.nit
index ebc1193..a8d86b6 100644 (file)
@@ -28,35 +28,32 @@ import html_templates
 redef class ToolContext
 
        # File pattern used to link documentation to source code.
-       var opt_source = new OptionString("link for source (%f for filename, " +
+       var opt_source = new OptionString("Format to link source code (%f for filename, " +
                "%l for first line, %L for last line)", "--source")
 
-       # Directory where the CSS and JS is stored.
-       var opt_sharedir = new OptionString("directory containing nitdoc assets", "--sharedir")
-
        # Use a shareurl instead of copy shared files.
        #
        # This is usefull if you don't want to store the Nitdoc templates with your
        # documentation.
-       var opt_shareurl = new OptionString("use shareurl instead of copy shared files", "--shareurl")
+       var opt_shareurl = new OptionString("Use shareurl instead of copy shared files", "--shareurl")
 
        # Use a custom title for the homepage.
-       var opt_custom_title = new OptionString("custom title for homepage", "--custom-title")
+       var opt_custom_title = new OptionString("Custom title for homepage", "--custom-title")
 
        # Display a custom brand or logo in the documentation top menu.
-       var opt_custom_brand = new OptionString("custom link to external site", "--custom-brand")
+       var opt_custom_brand = new OptionString("Custom link to external site", "--custom-brand")
 
        # Display a custom introduction text before the packages overview.
-       var opt_custom_intro = new OptionString("custom intro text for homepage", "--custom-overview-text")
+       var opt_custom_intro = new OptionString("Custom intro text for homepage", "--custom-overview-text")
        # Display a custom footer on each documentation page.
        #
        # Generally used to display the documentation or product version.
-       var opt_custom_footer = new OptionString("custom footer text", "--custom-footer-text")
+       var opt_custom_footer = new OptionString("Custom footer text", "--custom-footer-text")
 
        # Piwik tracker URL.
        #
        # If you want to monitor your visitors.
-       var opt_piwik_tracker = new OptionString("Piwik tracker URL (ex: nitlanguage.org/piwik/)", "--piwik-tracker")
+       var opt_piwik_tracker = new OptionString("Piwik tracker URL (ex: `nitlanguage.org/piwik/`)", "--piwik-tracker")
 
        # Piwik tracker site id.
        var opt_piwik_site_id = new OptionString("Piwik site ID", "--piwik-site-id")
@@ -70,14 +67,18 @@ redef class ToolContext
        # FIXME redo the plugin
        var opt_github_gitdir = new OptionString("Git working directory used to resolve path name (ex: /home/me/mypackage/)", "--github-gitdir")
 
+       # Do not produce HTML files
+       var opt_no_render = new OptionBool("Do not render HTML files", "--no-render")
+
        redef init do
                super
 
                option_context.add_option(
-                       opt_source, opt_sharedir, opt_shareurl, opt_custom_title,
+                       opt_source, opt_share_dir, opt_shareurl, opt_custom_title,
                        opt_custom_footer, opt_custom_intro, opt_custom_brand,
                        opt_github_upstream, opt_github_base_sha1, opt_github_gitdir,
-                       opt_piwik_tracker, opt_piwik_site_id)
+                       opt_piwik_tracker, opt_piwik_site_id,
+                       opt_no_render)
        end
 
        redef fun process_options(args) do
@@ -103,6 +104,7 @@ class RenderHTMLPhase
        var name_sorter = new MEntityNameSorter
 
        redef fun apply do
+               if ctx.opt_no_render.value then return
                init_output_dir
                for page in doc.pages.values do
                        page.render(self, doc).write_to_file("{ctx.output_dir.to_s}/{page.html_url}")
@@ -115,15 +117,7 @@ class RenderHTMLPhase
                var output_dir = ctx.output_dir
                if not output_dir.file_exists then output_dir.mkdir
                # locate share dir
-               var sharedir = ctx.opt_sharedir.value
-               if sharedir == null then
-                       var dir = ctx.nit_dir
-                       sharedir = dir/"share/nitdoc"
-                       if not sharedir.file_exists then
-                               print "Error: cannot locate nitdoc share files. Uses --sharedir or envvar NIT_DIR"
-                               abort
-                       end
-               end
+               var sharedir = ctx.share_dir / "nitdoc"
                # copy shared files
                if ctx.opt_shareurl.value == null then
                        sys.system("cp -r -- {sharedir.to_s.escape_to_sh}/* {output_dir.to_s.escape_to_sh}/")
@@ -334,8 +328,8 @@ redef class MModulePage
                # TODO filter here?
                super
                var mclasses = new HashSet[MClass]
-               mclasses.add_all mentity.collect_intro_mclasses(v.ctx.min_visibility)
-               mclasses.add_all mentity.collect_redef_mclasses(v.ctx.min_visibility)
+               mclasses.add_all mentity.collect_intro_mclasses(v.doc)
+               mclasses.add_all mentity.collect_redef_mclasses(v.doc)
                if mclasses.is_empty then return
                var list = new UnorderedList
                list.css_classes.add "list-unstyled list-labeled"
@@ -442,8 +436,8 @@ redef class MClassPage
 
        private fun mclass_inherited_mprops(v: RenderHTMLPhase, doc: DocModel): Set[MProperty] do
                var res = new HashSet[MProperty]
-               var local = mentity.collect_local_mproperties(v.ctx.min_visibility)
-               for mprop in mentity.collect_inherited_mproperties(v.ctx.min_visibility) do
+               var local = mentity.collect_local_mproperties(v.doc)
+               for mprop in mentity.collect_inherited_mproperties(v.doc) do
                        if local.has(mprop) then continue
                        #if mprop isa MMethod and mprop.is_init then continue
                        if mprop.intro.mclassdef.mclass.name == "Object" and