diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/sdp/meta/metadoc.d | 4 | ||||
| -rw-r--r-- | src/sdp/meta/read_config_files.d | 60 | ||||
| -rw-r--r-- | src/sdp/output/paths_source.d | 65 | 
3 files changed, 99 insertions, 30 deletions
| diff --git a/src/sdp/meta/metadoc.d b/src/sdp/meta/metadoc.d index 8fafc24..eed9f55 100644 --- a/src/sdp/meta/metadoc.d +++ b/src/sdp/meta/metadoc.d @@ -36,8 +36,8 @@ template SiSUabstraction() {      O _opt_action,      M _manifest,    ){ -    auto sdl_root_config_document = configRead!()(_manifest, _env, "config_document"); // document config file -    auto sdl_root_config_local_site = configRead!()(_manifest, _env, "config_local_site"); // local site config +    auto sdl_root_config_document = configReadDoc!()(_manifest, _env, "config_document"); // document config file +    auto sdl_root_config_local_site = configReadSite!()(_manifest, _env, "config_local_site"); // local site config      auto conf_files_composite_make = confFilesSDLtoStruct!()(sdl_root_config_document, sdl_root_config_local_site);      /+ ↓ read file (filename with path) +/      /+ ↓ file tuple of header and content +/ diff --git a/src/sdp/meta/read_config_files.d b/src/sdp/meta/read_config_files.d index b3c7f1b..d816619 100644 --- a/src/sdp/meta/read_config_files.d +++ b/src/sdp/meta/read_config_files.d @@ -4,14 +4,49 @@    meta_config_files.d  +/  module sdp.meta.read_config_files; -static template configIn() { +static template configInSite() {    import      sdp.meta,      sdp.output.paths_source,      std.file,      std.path; -  final string configIn(M,E,C)(M manifest, E env, C conf_sdl) { -    auto possible_config_path_locations = ConfigFilePaths!()(manifest, env).possible_config_path_locations; +  final string configInSite(M,E,C)(M manifest, E env, C conf_sdl) { +    auto possible_config_path_locations = ConfigFilePaths!()(manifest, env).possible_config_path_locations_local_site; +    string config_file_str; +    foreach(pth; possible_config_path_locations) { +      auto conf_file = format( +        "%s/%s", +        pth, +        conf_sdl, +      ); +      if (config_file_str.length > 0) { +        break; +      } +      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; +  } +} +static template configInDoc() { +  import +    sdp.meta, +    sdp.output.paths_source, +    std.file, +    std.path; +  final string configInDoc(M,E,C)(M manifest, E env, C conf_sdl) { +    auto possible_config_path_locations = ConfigFilePaths!()(manifest, env).possible_config_path_locations_document;      string config_file_str;      foreach(pth; possible_config_path_locations) {        auto conf_file = format( @@ -63,15 +98,28 @@ static template ConfigSDLang() {  }  /+  +/ -static template configRead() { +static template configReadSite() { +  import +    sdp.meta, +    sdp.output.paths_source, +    std.file, +    std.path; +   +  final auto configReadSite(M,E,C)(M manifest, E env, C conf_sdl) { +    auto configuration = configInSite!()(manifest, env, conf_sdl); +    auto sdl_root = ConfigSDLang!()(configuration, conf_sdl); +    return sdl_root; +  } +} +static template configReadDoc() {    import      sdp.meta,      sdp.output.paths_source,      std.file,      std.path; -  final auto configRead(M,E,C)(M manifest, E env, C conf_sdl) { -    auto configuration = configIn!()(manifest, env, conf_sdl); +  final auto configReadDoc(M,E,C)(M manifest, E env, C conf_sdl) { +    auto configuration = configInDoc!()(manifest, env, conf_sdl);      auto sdl_root = ConfigSDLang!()(configuration, conf_sdl);      return sdl_root;    } diff --git a/src/sdp/output/paths_source.d b/src/sdp/output/paths_source.d index 4f8eb54..b81448c 100644 --- a/src/sdp/output/paths_source.d +++ b/src/sdp/output/paths_source.d @@ -156,25 +156,15 @@ template ConfigFilePaths() {      E   _env,    ) {      struct ConfFilePaths { -      auto possible_config_path_locations() { +      auto possible_config_path_locations_document() {          /+ FIX clean up conf paths ↓ +/          /+ config local site (file system only, not in pod) +/ -        string _dot_pwd; -        string _underscore_pwd; -        string _dot_home; -        /+ config document (& or local site) on filesystem +/ -        string _sisudoc_conf_pwd; // think about -        string _sisudoc_conf_pwd_a; -        string _sisudoc_conf_pwd_b; -        string _sisudoc_conf_pwd_c; -        string _sisudoc_conf_pwd_d; -        /+ config document in pod +/ -        string _sisudoc_conf_pod; -        string _sisudoc_conf_pod_text;          /+ return paths +/          string[] _possible_config_path_locations;          if (_manifest.is_pod) {            /+ config document in pod +/ +          string _sisudoc_conf_pod; +          string _sisudoc_conf_pod_text;            _sisudoc_conf_pod = asNormalizedPath(chainPath(              to!string(_env["pwd"]),              _manifest.pod_manifest_path ~ "/conf" @@ -189,16 +179,12 @@ template ConfigFilePaths() {              _sisudoc_conf_pod,            ];          } else { -          /+ config local site (file system only, not in pod) +/ -          _dot_pwd        = asNormalizedPath(chainPath(to!string(_env["pwd"]), ".sisu")).array; -          _underscore_pwd = asNormalizedPath(chainPath(to!string(_env["pwd"]), "_sisu")).array; -          _dot_home       = asNormalizedPath(chainPath(to!string(_env["home"]), ".sisu")).array;            /+ config document (& or local site) on filesystem +/ -          _sisudoc_conf_pwd   = asNormalizedPath(chainPath(to!string(_env["pwd"]), "sisudoc/conf")).array; // think about -          _sisudoc_conf_pwd_a = asNormalizedPath(chainPath(to!string(_env["pwd"]), "conf")).array; -          _sisudoc_conf_pwd_b = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../conf")).array; -          _sisudoc_conf_pwd_c = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../../conf")).array; -          _sisudoc_conf_pwd_d = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../../../conf")).array; +          string _sisudoc_conf_pwd   = asNormalizedPath(chainPath(to!string(_env["pwd"]), "sisudoc/conf")).array; // think about +          string _sisudoc_conf_pwd_a = asNormalizedPath(chainPath(to!string(_env["pwd"]), "conf")).array; +          string _sisudoc_conf_pwd_b = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../conf")).array; +          string _sisudoc_conf_pwd_c = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../../conf")).array; +          string _sisudoc_conf_pwd_d = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../../../conf")).array;            /+ return paths +/            _possible_config_path_locations = [              _sisudoc_conf_pwd, @@ -206,6 +192,41 @@ template ConfigFilePaths() {              _sisudoc_conf_pwd_b,              _sisudoc_conf_pwd_c,              _sisudoc_conf_pwd_d, +          ]; +        } +        /+ FIX clean up conf paths ↑ +        (compare pwd to doc path location, and build config path) +        +/ +        return _possible_config_path_locations; +      } +      auto possible_config_path_locations_local_site() { +        /+ FIX clean up conf paths ↓ +/ +        /+ config local site (file system only, not in pod) +/ +        string _dot_pwd        = asNormalizedPath(chainPath(to!string(_env["pwd"]), ".sisu")).array; +        string _underscore_pwd = asNormalizedPath(chainPath(to!string(_env["pwd"]), "_sisu")).array; +        string _dot_home       = asNormalizedPath(chainPath(to!string(_env["home"]), ".sisu")).array; +        /+ return paths +/ +        string[] _possible_config_path_locations; +        if (_manifest.is_pod) { +          _possible_config_path_locations = [ +            _dot_pwd, +            _underscore_pwd, +            _dot_home, +            "/etc/sisu" +          ]; +        } else { +          /+ config document (& or local site) on filesystem +/ +          string _sisudoc_conf_pwd   = asNormalizedPath(chainPath(to!string(_env["pwd"]), "sisudoc/conf")).array; // think about +          string _sisudoc_conf_pwd_a = asNormalizedPath(chainPath(to!string(_env["pwd"]), "conf")).array; +          string _sisudoc_conf_pwd_b = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../conf")).array; +          string _sisudoc_conf_pwd_c = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../../conf")).array; +          string _sisudoc_conf_pwd_d = asNormalizedPath(chainPath(to!string(_env["pwd"]), "../../../conf")).array; +          _possible_config_path_locations = [ +            _sisudoc_conf_pwd, +            _sisudoc_conf_pwd_a, +            _sisudoc_conf_pwd_b, +            _sisudoc_conf_pwd_c, +            _sisudoc_conf_pwd_d,              _dot_pwd,              _underscore_pwd,              _dot_home, | 
