Load config file, if found, on first use

This commit is contained in:
Malte Rosenbjerg 2021-08-07 16:39:10 +02:00
parent 0efaf686f3
commit e363440118
2 changed files with 18 additions and 13 deletions

View file

@ -26,7 +26,7 @@
<Content Include="FFMPEG\bin\**\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None Include="..\README.md" Pack="true" PackagePath="\"/>
<None Include="..\README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View file

@ -8,18 +8,11 @@ namespace FFMpegCore
public static class GlobalFFOptions
{
private static readonly string ConfigFile = "ffmpeg.config.json";
private static FFOptions? _current;
public static FFOptions Current { get; private set; }
static GlobalFFOptions()
public static FFOptions Current
{
if (File.Exists(ConfigFile))
{
Current = JsonSerializer.Deserialize<FFOptions>(File.ReadAllText(ConfigFile))!;
}
else
{
Current = new FFOptions();
}
get { return _current ??= LoadFFOptions(); }
}
public static void Configure(Action<FFOptions> optionsAction)
@ -28,7 +21,7 @@ public static void Configure(Action<FFOptions> optionsAction)
}
public static void Configure(FFOptions ffOptions)
{
Current = ffOptions ?? throw new ArgumentNullException(nameof(ffOptions));
_current = ffOptions ?? throw new ArgumentNullException(nameof(ffOptions));
}
@ -48,5 +41,17 @@ private static string GetFFBinaryPath(string name, FFOptions ffOptions)
return Path.Combine(ffOptions.BinaryFolder, ffName);
}
private static FFOptions LoadFFOptions()
{
if (File.Exists(ConfigFile))
{
return JsonSerializer.Deserialize<FFOptions>(File.ReadAllText(ConfigFile))!;
}
else
{
return new FFOptions();
}
}
}
}