diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2024-04-10 22:24:34 -0400 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2024-04-10 23:08:18 -0400 |
commit | 90873fabd7451e1dd8c4b39303906e19bdc481f7 (patch) | |
tree | 2dbb0e41f3e9c761645c8b37dafe979a01d38d32 /src/doc_reform/io_in/read_config_files.d | |
parent | 0.15.0 (diff) |
0.16.0 sisudoc (src/sisudoc sisudoc spine)
- src/sisudoc (replaces src/doc_reform)
- sisudoc spine (used more)
Diffstat (limited to 'src/doc_reform/io_in/read_config_files.d')
-rw-r--r-- | src/doc_reform/io_in/read_config_files.d | 279 |
1 files changed, 0 insertions, 279 deletions
diff --git a/src/doc_reform/io_in/read_config_files.d b/src/doc_reform/io_in/read_config_files.d deleted file mode 100644 index f9f7fb0..0000000 --- a/src/doc_reform/io_in/read_config_files.d +++ /dev/null @@ -1,279 +0,0 @@ -/+ -- Name: Spine, Doc Reform [a part of] - - Description: documents, structuring, processing, publishing, search - - static content generator - - - Author: Ralph Amissah - [ralph.amissah@gmail.com] - - - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. - - - License: AGPL 3 or later: - - Spine (SiSU), a framework for document structuring, publishing and - search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU AFERO General Public License as published by the - Free Software Foundation, either version 3 of the License, or (at your - option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see [https://www.gnu.org/licenses/]. - - If you have Internet connection, the latest version of the AGPL should be - available at these locations: - [https://www.fsf.org/licensing/licenses/agpl.html] - [https://www.gnu.org/licenses/agpl.html] - - - Spine (by Doc Reform, related to SiSU) uses standard: - - docReform markup syntax - - standard SiSU markup syntax with modified headers and minor modifications - - docReform object numbering - - standard SiSU object citation numbering & system - - - Homepages: - [https://www.sisudoc.org] - [https://www.doc-reform.org] - - - Git - [https://git.sisudoc.org/] - -+/ -/++ - read configuration files<BR> - - read config files<BR> - meta_config_files.d -+/ -module doc_reform.io_in.read_config_files; -@safe: -import - std.file, - std.path; -import - doc_reform.meta, - doc_reform.io_in.paths_source, - doc_reform.meta.rgx_files, - doc_reform.meta.rgx; -template readConfigSite() { - @system final auto readConfigSite(Cf,O,Cfg)(Cf _conf_file_details, O _opt_action, Cfg _cfg) { - mixin spineRgxIn; - static auto rgx = RgxI(); - string conf_filename = "NONE"; - string config_file_str; - string default_config_file_str = format(q"┃ -flag: - act0: "--html" - act1: "--html --epub" -output: - path: "%s" -default: - language: "en" - papersize: "a4" - text_wrap: "80" - digest: "sha256" -webserv: - http: "%s" - host: "%s" - data_http: "%s" - data_host: "%s" - data_root_url: "%s" - data_root_path: "%s" - data_root_part: "" - images_root_part: "image" - cgi_search_form_title: "%s" - cgi_http: "%s" - cgi_host: "%s" - cgi_bin_url: "%s" - cgi_bin_subpath: "%s" - cgi_bin_path: "%s" - cgi_search_script: "%s" - cgi_port: "" - cgi_user: "" - cgi_action: "%s" - db_sqlite_path: "%s" - db_sqlite_filename: "%s" - db_pg_table: "" - db_pg_user: "" -┃", - _cfg.processing_path_doc_root, // doc root - _cfg.http_request_type, // http - _cfg.http_host, // host / domain - _cfg.http_request_type, // data "http" or "https" - _cfg.http_host, // data domain "localhost" - _cfg.www_url_doc_root, // data root url "http://locahost" "https://sisudoc.org" - _cfg.processing_path_doc_root, // data root path - _cfg.cgi_search_form_title, // cgi title // e.g. "≅ SiSU Spine search" - _cfg.http_request_type, // cgi http - _cfg.http_host, // cgi host - _cfg.cgi_url_root, // cgi bin url - _cfg.cgi_bin_subpath, // cgi bin path - _cfg.cgi_bin_root, // cgi bin path - _cfg.cgi_filename, // cgi filename - _cfg.cgi_url_action, // cgi action - _cfg.db_sqlite_path, // sqlite db path - _cfg.db_sqlite_filename, // sqlite db filename -); - foreach(conf_fn; [_conf_file_details.config_filename_site]) { - foreach(pth; _conf_file_details.possible_config_path_locations.config_local_site) { - char[] conf_file; - conf_filename = conf_fn; - if (exists(pth)) { - auto f_attrib = pth.getLinkAttributes; - if ( - _conf_file_details.possible_config_path_locations.config_local_site.length == 1 - && f_attrib.attrIsFile - ) { - conf_file = pth.to!(char[]); - conf_filename = pth.baseName; - } else if (f_attrib.attrIsDir) { - conf_file = ((chainPath(pth.to!string, conf_fn)).asNormalizedPath).array; - conf_filename = conf_fn; - } - try { - if (exists(conf_file)) { - if (conf_file.getLinkAttributes.attrIsFile) { - if (_opt_action.vox_gt1 || _opt_action.debug_do) { - writeln("config file used: \"", conf_file, "\" (cli flag settings override config file's individual settings)"); - } - config_file_str = conf_file.readText; - break; - } - } - } catch (ErrnoException ex) { - } catch (FileException ex) { - } - } - } - if (config_file_str.length > 0) { break; } - } - if (config_file_str.length > 0) { - import dyaml; - Node yaml_root; - try { - yaml_root = Loader.fromString(config_file_str).load(); - } catch (Throwable) { - import std.stdio; - writeln("ERROR failed to read config file content, not parsed as yaml, program default used"); - conf_filename = "VIRTUAL"; - config_file_str = default_config_file_str; - } - } - if (config_file_str.length == 0) { /+ use dummy default config file +/ - // writeln("WARNING config file NOT found, default provided"); - conf_filename = "VIRTUAL"; - config_file_str = default_config_file_str; - } - struct _ConfContent { - string filename() { - return conf_filename; - } - string filetype() { - string _ft = ""; - if (content.match(rgx.yaml_config)) { - _ft = "yaml"; - } - return _ft; - } - string content() { - return config_file_str; - } - } - return _ConfContent(); - } -} -static template readConfigDoc() { - import - std.file, - std.path; - import - doc_reform.meta, - doc_reform.io_in.paths_source, - doc_reform.meta.rgx_files, - doc_reform.meta.rgx; - @system final auto readConfigDoc(M,E)(M _manifested, E _env) { - mixin spineRgxIn; - static auto rgx = RgxI(); - mixin spineRgxFiles; - static auto rgx_files = RgxFiles(); - string config_file_str; - string conf_filename = "NONE"; - auto _conf_file_details = configFilePaths!()(_manifested, _env); - string[] possible_config_path_locations = _conf_file_details.possible_config_path_locations.dr_document_make; - foreach(conf_fn; [_conf_file_details.config_filename_document]) { - foreach(pth; possible_config_path_locations) { - char[] conf_file = ((chainPath(pth.to!string, conf_fn)).asNormalizedPath).array; - conf_filename = conf_fn; - if (config_file_str.length > 0) { - break; - } - try { - if (exists(conf_file)) { - if (conf_file.getLinkAttributes.attrIsFile) { - config_file_str = conf_file.readText; - break; - } - } - } catch (ErrnoException ex) { - } catch (FileException ex) { - } - } - if (config_file_str.length > 0) { break; } - } - struct _ConfContent { - string filename() { - return conf_filename; - } - string content() { - return config_file_str; - } - string filetype() { - string _ft = ""; - if (content.match(rgx.yaml_config)) { - _ft = "yaml"; - } - return _ft; - } - } - return _ConfContent(); - } -} -static template configReadSiteYAML() { - import - std.file, - std.path; - import - doc_reform.meta, - doc_reform.io_in.paths_source, - doc_reform.meta.rgx_files, - doc_reform.meta.rgx; - final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) { - string _configuration = configReadInSiteYAML!()(_manifested, _env); - auto _conf_file_details = configFilePaths!()(_manifested, _env); - string _conf_yaml_fn = _conf_file_details.config_filename_site; - YAMLDocument _yaml_conf = configYAML!()(_configuration, _conf_yaml_fn); - return _yaml_conf; - } -} -static template configReadDocYAML() { - import - std.file, - std.path; - import - doc_reform.meta, - doc_reform.io_in.paths_source; - final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) { - string _configuration = configReadInDocYAML!()(_manifested, _env); - auto _conf_file_details = configFilePaths!()(_manifested, _env); - string _conf_yaml_fn = _conf_file_details.config_filename_document; - YAMLDocument _yaml_conf = configYAML!()(_configuration, _conf_yaml_fn); - return _yaml_conf; - } -} |