aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/doc_reform/source/read_config_files.d
blob: 787f6e027342aca877df681aae20eef45b7180a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/++
  read configuration files<BR>
  - read config files<BR>
  meta_config_files.d
+/
module doc_reform.source.read_config_files;

static template readConfigSite() {
  import
    doc_reform.meta.rgx;
  import
    doc_reform.meta,
    doc_reform.source.paths_source,
    std.file,
    std.path;
  mixin DocReformRgxInit;
  final auto readConfigSite(M,E)(M _manifest, E _env) {
    static auto rgx = Rgx();
    string config_file_str;
    string conf_filename = "NONE";
    auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);
    string[] possible_config_path_locations = _conf_file_details.possible_config_path_locations.config_local_site;
    foreach(conf_fn; [_conf_file_details.config_filename_site]) {
      foreach(pth; possible_config_path_locations) {
        char[] conf_file = ((chainPath(pth.to!string, conf_fn)).asNormalizedPath).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() {
        string _ft = "";
        if (content.match(rgx.yaml_config)) {
          _ft = "yaml";
        }
        return _ft;
      }
      string content() {
        return config_file_str;
      }
    }
    return _ConfContent();
  }
}
static template readConfigDoc() {
  import
    doc_reform.meta.rgx;
  import
    doc_reform.meta,
    doc_reform.source.paths_source,
    std.file,
    std.path;
  mixin DocReformRgxInit;
  final auto readConfigDoc(M,E)(M _manifest, E _env) {
    static auto rgx = Rgx();
    string config_file_str;
    string conf_filename = "NONE";
    auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);
    string[] possible_config_path_locations = _conf_file_details.possible_config_path_locations.dr_document_make;
    foreach(conf_fn; [_conf_file_details.config_filename_document]) {
      foreach(pth; possible_config_path_locations) {
        auto conf_file = ((chainPath(pth.to!string, conf_fn)).asNormalizedPath).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 content() {
        return config_file_str;
      }
      string filetype() {
        string _ft = "";
        if (content.match(rgx.yaml_config)) {
          _ft = "yaml";
        }
        return _ft;
      }
    }
    return _ConfContent();
  }
}
static template configReadSiteYAML() {
  import
    doc_reform.meta,
    doc_reform.source.paths_source,
    std.file,
    std.path;
  import dyaml;
  final YAMLDocument configReadSiteYAML(M,E)(M _manifest, E _env) {
    string _configuration = configReadInSiteYAML!()(_manifest, _env);
    auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);
    string _conf_yaml = _conf_file_details.config_filename_site;
    YAMLDocument _yaml_conf = configYAML!()(_configuration, _conf_yaml);
    return _yaml_conf;
  }
}
static template configReadDocYAML() {
  import
    doc_reform.meta,
    doc_reform.source.paths_source,
    std.file,
    std.path;
  import yaml;
  final YAMLDocument configReadDocYAML(M,E)(M _manifest, E _env) {
    string _configuration = configReadInDocYAML!()(_manifest, _env);
    auto _conf_file_details = ConfigFilePaths!()(_manifest, _env);
    string _conf_yaml = _conf_file_details.config_filename_document;
    YAMLDocument _yaml_conf = configYAML!()(_configuration, _conf_yaml);
    return _yaml_conf;
  }
}