/++
read configuration files
- read config files
meta_config_files.d
+/
module sdp.meta.read_config_files;
static template configReadInSiteTOML() {
import
sdp.meta,
sdp.output.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(to!string(pth), 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.output.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(to!string(pth), 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.output.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.output.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(to!string(pth), 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.output.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(to!string(pth), 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.output.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.output.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;
}
}