- # Build catalog
- var catalog = new Catalog(modelbuilder)
- for mpackage in model.mpackages do
- catalog.deps.add_node(mpackage)
- for mgroup in mpackage.mgroups do
- for mmodule in mgroup.mmodules do
- for imported in mmodule.in_importation.direct_greaters do
- var ip = imported.mpackage
- if ip == null or ip == mpackage then continue
- catalog.deps.add_edge(mpackage, ip)
- end
- end
- end
- catalog.git_info(mpackage)
- catalog.package_page(mpackage)
- end
+ # Build the nitweb config from `toolcontext` options.
+ fun build_config(toolcontext: ToolContext, mainmodule: MModule): NitwebConfig do
+
+ var model = toolcontext.modelbuilder.model
+
+ var filter = new ModelFilter(
+ if toolcontext.opt_no_private.value then protected_visibility else private_visibility,
+ accept_fictive = not toolcontext.opt_no_fictive.value,
+ accept_empty_doc = not toolcontext.opt_no_empty_doc.value,
+ accept_test = not toolcontext.opt_no_test.value,
+ accept_attribute = not toolcontext.opt_no_attribute.value
+ )
+
+ var catalog = build_catalog(toolcontext.modelbuilder, filter)
+
+ 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)
+ var opt_host = toolcontext.opt_host.value
+ if opt_host != null then config.ini["app.host"] = opt_host
+ var opt_port = toolcontext.opt_port.value
+ if opt_port >= 0 then config.ini["app.port"] = opt_port.to_s
+ return config
+ end