aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/meta/read_config_files.d
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-07-13 07:44:03 -0400
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit22cea68385b57a1593f5751e49cfdd41d8067997 (patch)
tree9e61339eb58679977c24962b1cfd2f50aa7f2998 /src/sdp/meta/read_config_files.d
parentsdl extract and composite conf (make) (diff)
0.18.0 rename meta from ao (considered adr)
Diffstat (limited to 'src/sdp/meta/read_config_files.d')
-rw-r--r--src/sdp/meta/read_config_files.d80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/sdp/meta/read_config_files.d b/src/sdp/meta/read_config_files.d
new file mode 100644
index 0000000..2410316
--- /dev/null
+++ b/src/sdp/meta/read_config_files.d
@@ -0,0 +1,80 @@
+/++
+ read configuration files<BR>
+ - read config files<BR>
+ meta_config_files.d
++/
+module sdp.meta.read_config_files;
+template configIn() {
+ import
+ sdp.meta,
+ std.file,
+ std.path;
+ final string configIn(C,E)(C conf_sdl, E env) {
+ string dot_pwd = chainPath(to!string(env["pwd"]), ".sisu").array;
+ string underscore_pwd = chainPath(to!string(env["pwd"]), "_sisu").array;
+ string dot_home = chainPath(to!string(env["home"]), ".sisu").array;
+ string[] possible_config_path_locations = [
+ dot_pwd,
+ underscore_pwd,
+ dot_home,
+ "/etc/sisu"
+ ];
+ string config_file_str;
+ foreach(pth; possible_config_path_locations) {
+ auto conf_file = format(
+ "%s/%s",
+ pth,
+ conf_sdl,
+ );
+ try {
+ if (exists(conf_file)) {
+ debug(configfile) {
+ writeln(conf_file);
+ }
+ config_file_str = conf_file.readText;
+ break;
+ }
+ }
+ catch (ErrnoException ex) {
+ }
+ catch (FileException ex) {
+ }
+ }
+ return config_file_str;
+ }
+}
+/+
+
++/
+template ConfigSDLang() {
+ import sdlang;
+ import
+ sdp.meta,
+ std.file,
+ std.path;
+ auto ConfigSDLang(string configuration, string conf_sdl_filename) {
+ Tag sdl_root_conf;
+ try {
+ sdl_root_conf = parseSource(configuration);
+ }
+ catch(ParseException e) {
+ stderr.writeln("SDLang problem with content for ", conf_sdl_filename);
+ stderr.writeln(e.msg);
+ }
+ return sdl_root_conf;
+ }
+}
+/+
++/
+template configRead() {
+ import
+ sdp.meta,
+ std.file,
+ std.path;
+
+ final auto configRead(C,E)(C conf_sdl, E env) {
+ auto configuration = configIn!()(conf_sdl, env);
+ auto sdl_root = ConfigSDLang!()(configuration, conf_sdl);
+ return sdl_root;
+ }
+}