aboutsummaryrefslogtreecommitdiff
path: root/src/Constants/ConfigManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Constants/ConfigManager.cs')
-rw-r--r--src/Constants/ConfigManager.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/Constants/ConfigManager.cs b/src/Constants/ConfigManager.cs
new file mode 100644
index 0000000..3a0b295
--- /dev/null
+++ b/src/Constants/ConfigManager.cs
@@ -0,0 +1,41 @@
+using System.IO;
+using System.Text.Json;
+using System.Threading.Tasks;
+
+using Semver;
+
+using VNLib.Tools.Build.Executor.Model;
+
+namespace VNLib.Tools.Build.Executor.Constants
+{
+ public class ConfigManager(SemVersionStyles semver)
+ {
+ public async Task<BuildConfig> GetOrCreateConfig(IDirectoryIndex index, bool overwrite)
+ {
+ //Get the config file path
+ string configFilePath = Path.Combine(index.BuildDir.FullName, Config.BUILD_CONFIG);
+
+ BuildConfig? data = new()
+ {
+ SemverStyle = semver
+ };
+
+ //If the file doesnt exist or we want to overwrite it
+ if (!File.Exists(configFilePath) || overwrite)
+ {
+ //Create a new config file
+ await using FileStream fs = File.Create(configFilePath);
+ await JsonSerializer.SerializeAsync(fs, data);
+ }
+ else
+ {
+ await using FileStream fs = File.OpenRead(configFilePath);
+ data = await JsonSerializer.DeserializeAsync<BuildConfig>(fs);
+ }
+
+ data!.Index = index;
+
+ return data;
+ }
+ }
+} \ No newline at end of file