aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/ao/read_config_files.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdp/ao/read_config_files.d')
-rw-r--r--src/sdp/ao/read_config_files.d87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/sdp/ao/read_config_files.d b/src/sdp/ao/read_config_files.d
new file mode 100644
index 0000000..57213c4
--- /dev/null
+++ b/src/sdp/ao/read_config_files.d
@@ -0,0 +1,87 @@
+/++
+ read configuration files<BR>
+ - read config files<BR>
+ ao_config_files.d
++/
+module sdp.ao.read_config_files;
+template ConfigIn() {
+ import
+ sdp.ao,
+ 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.ao,
+ 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);
+ }
+ debug(sdlang) {
+ Value output_dir_structure_by = sdl_root_conf.tags["output_dir_structure_by"][0].values[0];
+ assert(output_dir_structure_by.type == typeid(string));
+ writeln(output_dir_structure_by);
+ writeln("conf SDL:");
+ writeln(sdl_root_conf.toSDLDocument());
+ }
+ return sdl_root_conf;
+ }
+}
+/+
++/
+template ConfigHub() {
+ import
+ sdp.ao,
+ std.file,
+ std.path;
+
+ final auto ConfigHub(C,E)(C conf_sdl, E env) {
+ auto configuration = ConfigIn!()(conf_sdl, env);
+ auto sdl_root = ConfigSDLang!()(configuration, conf_sdl);
+ return sdl_root;
+ }
+}