Load config file, if found, on first use

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

View file

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

View file

@ -8,27 +8,20 @@ namespace FFMpegCore
public static class GlobalFFOptions public static class GlobalFFOptions
{ {
private static readonly string ConfigFile = "ffmpeg.config.json"; private static readonly string ConfigFile = "ffmpeg.config.json";
private static FFOptions? _current;
public static FFOptions Current { get; private set; } public static FFOptions Current
static GlobalFFOptions()
{ {
if (File.Exists(ConfigFile)) get { return _current ??= LoadFFOptions(); }
{
Current = JsonSerializer.Deserialize<FFOptions>(File.ReadAllText(ConfigFile))!;
}
else
{
Current = new FFOptions();
}
} }
public static void Configure(Action<FFOptions> optionsAction) public static void Configure(Action<FFOptions> optionsAction)
{ {
optionsAction?.Invoke(Current); optionsAction?.Invoke(Current);
} }
public static void Configure(FFOptions ffOptions) 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); 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();
}
}
} }
} }