// file : mod/options.cli -*- C++ -*- // copyright : Copyright (c) 2014-2016 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file include ; include ; include ; namespace brep { // Web module configuration options. // namespace options { // Option groups. // class module { dir_path root = "/" { "" "Repository root. That is, this is the part of the URL between the host name and the start of the repository. For example, root value '\cb{/pkg}' means the repository URL is http://example.org/pkg/. Specify '\cb{/}' to use the web server root (http://example.org/)." } uint16_t verbosity = 0 { "", "Trace verbosity level. Level 0 disables tracing, which is also the default." } }; class db { string db-user { "", "Database user name. If not specified, then operating system (login) name is used." } string db-password { "", "Database password. If not specified, then login without password is expected to work." } string db-name = "brep" { "", "Database name. If not specified, then '\cb{brep}' is used by default." } string db-host { "", "Database host name, address, or socket. If not specified, then connect to \cb{localhost} using the operating system-default mechanism (Unix-domain socket, etc)." } uint16_t db-port = 0 { "", "Database port number. If not specified, the default port is used." } size_t db-max-connections = 5 { "", "The maximum number of concurrent database connections per web server process. If 0, then no limitation is applied. The default is 5." } size_t db-retry = 10 { "", "The maximum number of times to retry database transactions in the face of recoverable failures (deadlock, loss of connection, etc). The default is 10." } }; class page { web::xhtml::fragment logo { "", "Web page logo. It is displayed in the page header aligned to the left edge. The value is treated as an XHTML5 fragment." } vector menu; { "", "Web page menu. Each entry is displayed in the page header in the order specified and aligned to the right edge. A link target that starts with '\cb{/}' or contains '\cb{:}' is used as is. Otherwise, it is prefixed with the repository web interface root." } }; class search { uint16_t search-results = 10 { "", "Number of results per page. The default is 10." } uint16_t search-pages = 5 { "", "Number of pages in navigation (pager). The default is 5." } }; class package { uint16_t package-description = 500 { "", "Number of package description characters to display in brief pages. The default is 500 (~ 80 characters * 6 lines)." } uint16_t package-changes = 5000; { "", "Number of package changes characters to display in brief pages. The default is 5000 (~ 80 chars x 60 lines)." } }; // Module options. // class package_search: search, db, page, module { }; class package_details: package, search, db, page, module { }; class package_version_details: package, db, page, module { }; class repository_details: db, page, module { }; class repository_root: module { }; } // Web module HTTP request parameters. // namespace params { // Use parameters long names in the C++ code, short aliases (if present) // in HTTP URL. // class package_search { // Display package search result list starting from this page. // uint16_t page | p; // Package search criteria. // string query | q; }; class package_details { // Display package version search result list starting from this page. // uint16_t page | p; // Package version search criteria. // string query | q; // Page form. // page_form form | f = page_form::brief; }; class package_version_details { // Page form. // page_form form | f = page_form::brief; }; class repository_details { // No parameters so far. // }; } }