Processes Dynamic Include Statements inside a settings object.
114 {
115 BadLogger.
Log(
"Processing Dynamic Includes",
"SettingsReader");
116 BadSettings? elems = settings.FindProperty("SettingsBuilder.Include");
117 string[]? includes = elems?.GetValue<string[]>();
118
119 if (includes == null)
120 {
121 return;
122 }
123
124 elems?.SetValue(null);
125
126 do
127 {
128 List<BadSettings> setting = new List<BadSettings>();
129
130 foreach (string include in includes)
131 {
132 if (include.Contains('*'))
133 {
134 bool allDirs = include.Contains("**");
135 string[] parts = include.Split(
136 new[]
137 {
138 '*',
139 },
140 StringSplitOptions.RemoveEmptyEntries
141 );
142 string path = parts[0];
143 string extension = parts[1];
145 path,
146 extension,
147 allDirs
148 );
149 setting.AddRange(
150 files.Select(
151 f =>
152 {
153 BadLogger.Log("Reading settings from file: " + f, "SettingsReader");
154
155 return CreateSettings(ReadJsonFile(f), f);
156 }
157 )
158 );
159 }
160 else
161 {
162 BadLogger.
Log(
"Reading settings from file: " + include,
"SettingsReader");
164 }
165 }
166
167 settings.Populate(true, setting.ToArray());
168
169
170 BadLogger.
Log(
"Resolving environment variables",
"SettingsReader");
171 BadSettings.ResolveEnvironmentVariables(settings);
172
173 elems = settings.FindProperty("SettingsBuilder.Include");
174 includes = elems?.GetValue<string[]>();
175 }
176 while (includes != null);
177
178 settings.RemoveProperty("SettingsBuilder");
179 }
Public facing interface for a logger.
static void Log(string message)
Writes a Log to the Message Handler.
JToken ReadJsonFile(string fileName)
Parses a JSON File and returns the resulting JObject.
IEnumerable< string > GetFiles(string path, string extension, bool recursive)
Returns all files in the given directory that match the specified extension.