aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/source/read_config_files.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdp/source/read_config_files.d')
-rw-r--r--src/sdp/source/read_config_files.d226
1 files changed, 226 insertions, 0 deletions
diff --git a/src/sdp/source/read_config_files.d b/src/sdp/source/read_config_files.d
new file mode 100644
index 0000000..9d976a5
--- /dev/null
+++ b/src/sdp/source/read_config_files.d
@@ -0,0 +1,226 @@
+/++
+ read configuration files<BR>
+ - read config files<BR>
+ meta_config_files.d
++/
+module sdp.source.read_config_files;
+static template configReadInSiteTOML() {
+ import
+ sdp.meta,
+ sdp.source.paths_source,
+ std.file,
+ std.path;
+ final string configReadInSiteTOML(M,E)(M manifest, E env) {
+ auto conf_file_details = ConfigFilePaths!()(manifest, env);
+ string conf_toml = conf_file_details.config_filename_site_toml;
+ auto possible_config_path_locations = conf_file_details.possible_config_path_locations.config_local_site;
+ string config_file_str;
+ debug(io) {
+ writeln("WARNING (io debug) in config filename: ", conf_toml);
+ writeln("WARNING (io debug) in config possible path locations: ", possible_config_path_locations);
+ }
+ foreach(pth; possible_config_path_locations) {
+ auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_toml)).array;
+ if (config_file_str.length > 0) {
+ break;
+ }
+ try {
+ if (exists(conf_file)) {
+ debug(io) {
+ writeln("WARNING (io debug) in config file found: ", conf_file);
+ }
+ config_file_str = conf_file.readText;
+ break;
+ }
+ }
+ catch (ErrnoException ex) {
+ }
+ catch (FileException ex) {
+ }
+ }
+ return config_file_str;
+ }
+}
+static template configReadInDocTOML() {
+ import
+ sdp.meta,
+ sdp.source.paths_source,
+ std.file,
+ std.path;
+ final string configReadInDocTOML(M,E)(M manifest, E env) {
+ auto conf_file_details = ConfigFilePaths!()(manifest, env);
+ string conf_toml = conf_file_details.config_filename_document_toml;
+ auto possible_config_path_locations = conf_file_details.possible_config_path_locations.sisu_document_make;
+ string config_file_str;
+ debug(io) {
+ writeln("WARNING (io debug) in config filename: ", conf_toml);
+ writeln("WARNING (io debug) in config possible path locations: ", possible_config_path_locations);
+ }
+ foreach(pth; possible_config_path_locations) {
+ auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_toml)).array;
+ if (config_file_str.length > 0) {
+ break;
+ }
+ try {
+ if (exists(conf_file)) {
+ debug(io) {
+ writeln("WARNING (io debug) in config file found: ", conf_file);
+ }
+ config_file_str = conf_file.readText;
+ break;
+ }
+ }
+ catch (ErrnoException ex) {
+ }
+ catch (FileException ex) {
+ }
+ }
+ return config_file_str;
+ }
+}
+static template configTOML() {
+ import toml; //
+ import
+ sdp.meta,
+ sdp.source.paths_source,
+ std.file,
+ std.path;
+ auto configTOML(string configuration, string conf_toml_filename) {
+ TOMLDocument _toml_conf;
+ try {
+ _toml_conf = parseTOML(configuration); // parseTOML(cast(string)(configuration));
+ }
+ catch(ErrnoException e) {
+ stderr.writeln("Toml problem with content for ", conf_toml_filename);
+ stderr.writeln(e.msg);
+ }
+ return _toml_conf;
+ }
+}
+static template readConfigSite() {
+ import
+ sdp.meta,
+ sdp.source.paths_source,
+ std.file,
+ std.path;
+ final auto readConfigSite(M,E)(M _manifest, E _env) {
+ string config_file_str;
+ string conf_filename = "NONE";
+ auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);
+ auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.config_local_site;
+ foreach(conf_fn; [_conf_file_details.config_filename_site_toml]) {
+ foreach(pth; possible_config_path_locations) {
+ auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array;
+ conf_filename = conf_fn;
+ if (config_file_str.length > 0) {
+ // conf_filename = conf_fn;
+ break;
+ }
+ try {
+ if (exists(conf_file)) {
+ debug(io) {
+ writeln("WARNING (io debug) in config file found: ", conf_file);
+ // writeln(__LINE__, ": found: ", conf_file, " in ", pth);
+ }
+ 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 filetype() {
+ return conf_filename.extension.chompPrefix(".");
+ }
+ auto content() {
+ return config_file_str;
+ }
+ }
+ return _ConfContent();
+ }
+}
+static template readConfigDoc() {
+ import
+ sdp.meta,
+ sdp.source.paths_source,
+ std.file,
+ std.path;
+ final auto readConfigDoc(M,E)(M _manifest, E _env) {
+ string config_file_str;
+ string conf_filename = "NONE";
+ auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);
+ auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.sisu_document_make;
+ foreach(conf_fn; [_conf_file_details.config_filename_document_toml]) {
+ foreach(pth; possible_config_path_locations) {
+ auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array;
+ conf_filename = conf_fn;
+ if (config_file_str.length > 0) {
+ // conf_filename = conf_fn;
+ break;
+ }
+ try {
+ if (exists(conf_file)) {
+ debug(io) {
+ writeln("WARNING (io debug) in config file found: ", conf_file);
+ }
+ 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 filetype() {
+ return conf_filename.extension.chompPrefix(".");
+ }
+ auto content() {
+ return config_file_str;
+ }
+ }
+ return _ConfContent();
+ }
+}
+static template configReadSiteTOML() {
+ import
+ sdp.meta,
+ sdp.source.paths_source,
+ std.file,
+ std.path;
+ import toml;
+ final auto configReadSiteTOML(M,E)(M _manifest, E _env) {
+ auto _configuration = configReadInSiteTOML!()(_manifest, _env);
+ auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);
+ string _conf_toml = _conf_file_details.config_filename_site_toml;
+ auto _toml_conf = configTOML!()(_configuration, _conf_toml);
+ return _toml_conf;
+ }
+}
+static template configReadDocTOML() {
+ import
+ sdp.meta,
+ sdp.source.paths_source,
+ std.file,
+ std.path;
+ import toml;
+ final auto configReadDocTOML(M,E)(M _manifest, E _env) {
+ auto _configuration = configReadInDocTOML!()(_manifest, _env);
+ auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);
+ string _conf_toml = _conf_file_details.config_filename_document_toml;
+ auto _toml_conf = configTOML!()(_configuration, _conf_toml);
+ return _toml_conf;
+ }
+}