Merge: doc: fixed some typos and other misc. corrections
[nit.git] / src / nitweb.nit
index 3617df4..8baf1e8 100644 (file)
@@ -17,7 +17,6 @@ module nitweb
 
 import frontend
 import doc::api
-import doc::doc_down
 
 redef class ToolContext
 
@@ -72,9 +71,9 @@ private class NitwebPhase
                        accept_attribute = not toolcontext.opt_no_attribute.value
                )
 
-               var view = new ModelView(model, mainmodule, filter)
+               var catalog = build_catalog(toolcontext.modelbuilder, filter)
 
-               var config = new NitwebConfig(model, mainmodule, toolcontext.modelbuilder, view)
+               var config = new NitwebConfig(model, mainmodule, toolcontext.modelbuilder, filter, catalog)
                var config_file = toolcontext.opt_config.value
                if config_file == null then config.default_config_file = "nitweb.ini"
                config.parse_options(args)
@@ -88,8 +87,8 @@ private class NitwebPhase
        redef fun process_mainmodule(mainmodule, mmodules)
        do
                var config = build_config(toolcontext, mainmodule)
+               config.model.index # pre load model index
                config.model.nitdoc_md_processor = config.md_processor
-               config.build_catalog
 
                var app = new App
 
@@ -100,10 +99,32 @@ private class NitwebPhase
                app.use("/oauth", new GithubOAuthCallBack(config.github_client_id, config.github_client_secret))
                app.use("/logout", new GithubLogout)
                app.use("/*", new StaticHandler(toolcontext.share_dir / "nitweb", "index.html"))
-               app.use_after("/*", new ConsoleLog)
+               app.use_after("/*", new PopLogger(info_level))
 
                app.listen(config.app_host, config.app_port)
        end
+
+       # Build the catalog
+       #
+       # This method should be called at nitweb startup.
+       fun build_catalog(modelbuilder: ModelBuilder, filter: nullable ModelFilter): Catalog do
+               var catalog = new Catalog(modelbuilder)
+               var mpackages = modelbuilder.model.collect_mpackages(filter)
+               # Compute the poset
+               for p in mpackages do
+                       var g = p.root
+                       assert g != null
+                       modelbuilder.scan_group(g)
+               end
+               # Build the catalog
+               for mpackage in mpackages do
+                       catalog.package_page(mpackage)
+                       catalog.git_info(mpackage)
+                       catalog.mpackage_stats(mpackage)
+               end
+               return catalog
+       end
+
 end
 
 # build toolcontext