diff options
author | Ralph Amissah <ralph@amissah.com> | 2017-05-09 13:01:06 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2019-04-10 15:14:14 -0400 |
commit | 60d6073bcfc4fa91253428094813de0dac41a2b4 (patch) | |
tree | cef8e223469724d9e42dea81d6ded5ffc75a9be2 /src/sdp/ao/read_config_files.d | |
parent | modules, collective imports (diff) |
0.16.0 files/modules re-arrangeddoc-reform_v0.0.16
Diffstat (limited to 'src/sdp/ao/read_config_files.d')
-rw-r--r-- | src/sdp/ao/read_config_files.d | 87 |
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; + } +} |