Processes Dynamic Include Statements inside a settings object.
108 {
109 BadLogger.
Log(
"Processing Dynamic Includes",
"SettingsReader");
110 BadSettings? elems = settings.FindProperty("SettingsBuilder.Include");
111 string[]? includes = elems?.GetValue<string[]>();
112
113 if (includes == null)
114 {
115 return;
116 }
117
118 elems?.SetValue(null);
119
120 do
121 {
122 List<BadSettings> setting = new List<BadSettings>();
123
124 foreach (string include in includes)
125 {
126 if (include.Contains('*'))
127 {
128 bool allDirs = include.Contains("**");
129
130 string[] parts = include.Split(new[] { '*' },
131 StringSplitOptions.RemoveEmptyEntries
132 );
133 string path = parts[0];
134 string extension = parts[1];
135
137 extension,
138 allDirs
139 );
140
141 setting.AddRange(files.Select(f =>
142 {
143 BadLogger.Log("Reading settings from file: " + f,
144 "SettingsReader"
145 );
146
147 return CreateSettings(ReadJsonFile(f), f);
148 }
149 )
150 );
151 }
152 else
153 {
154 BadLogger.
Log(
"Reading settings from file: " + include,
"SettingsReader");
156 }
157 }
158
159 settings.Populate(true, setting.ToArray());
160
161 BadLogger.
Log(
"Resolving environment variables",
"SettingsReader");
162 BadSettings.ResolveEnvironmentVariables(settings);
163
164 elems = settings.FindProperty("SettingsBuilder.Include");
165 includes = elems?.GetValue<string[]>();
166 }
167 while (includes != null);
168
169 settings.RemoveProperty("SettingsBuilder");
170 }
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.