From 0e2510528b7c1bb730336f431e622657b5c4d2f3 Mon Sep 17 00:00:00 2001 From: Archi Date: Mon, 26 Jul 2021 00:19:09 +0200 Subject: [PATCH] Cleanup program initialization Initial string[] args actually can't be null according to MSDN --- ArchiSteamFarm/Program.cs | 62 +++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index b48fb921d..7e494c975 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -178,8 +178,11 @@ namespace ArchiSteamFarm { } } + // Parse environment variables + ParseEnvironmentVariables(); + // Parse args - if (args != null) { + if (args?.Count > 0) { ParseArgs(args); } @@ -431,9 +434,13 @@ namespace ArchiSteamFarm { return true; } - private static async Task Main(string[]? args) { + private static async Task Main(string[] args) { + if (args == null) { + throw new ArgumentNullException(nameof(args)); + } + // Initialize - await Init(args).ConfigureAwait(false); + await Init(args.Length > 0 ? args : null).ConfigureAwait(false); // Wait for shutdown event return await ShutdownResetEvent.Task.ConfigureAwait(false); @@ -471,32 +478,10 @@ namespace ArchiSteamFarm { } private static void ParseArgs(IReadOnlyCollection args) { - if (args == null) { + if ((args == null) || (args.Count == 0)) { throw new ArgumentNullException(nameof(args)); } - try { - string? envCryptKey = Environment.GetEnvironmentVariable(SharedInfo.EnvironmentVariableCryptKey); - - if (!string.IsNullOrEmpty(envCryptKey)) { - HandleCryptKeyArgument(envCryptKey); - } - - string? envNetworkGroup = Environment.GetEnvironmentVariable(SharedInfo.EnvironmentVariableNetworkGroup); - - if (!string.IsNullOrEmpty(envNetworkGroup)) { - HandleNetworkGroupArgument(envNetworkGroup); - } - - string? envPath = Environment.GetEnvironmentVariable(SharedInfo.EnvironmentVariablePath); - - if (!string.IsNullOrEmpty(envPath)) { - HandlePathArgument(envPath); - } - } catch (Exception e) { - ASF.ArchiLogger.LogGenericException(e); - } - bool cryptKeyNext = false; bool networkGroupNext = false; bool pathNext = false; @@ -575,6 +560,31 @@ namespace ArchiSteamFarm { } } + private static void ParseEnvironmentVariables() { + // We're using a single try-catch block here, as a failure for getting one variable will result in the same failure for all other ones + try { + string? envCryptKey = Environment.GetEnvironmentVariable(SharedInfo.EnvironmentVariableCryptKey); + + if (!string.IsNullOrEmpty(envCryptKey)) { + HandleCryptKeyArgument(envCryptKey); + } + + string? envNetworkGroup = Environment.GetEnvironmentVariable(SharedInfo.EnvironmentVariableNetworkGroup); + + if (!string.IsNullOrEmpty(envNetworkGroup)) { + HandleNetworkGroupArgument(envNetworkGroup); + } + + string? envPath = Environment.GetEnvironmentVariable(SharedInfo.EnvironmentVariablePath); + + if (!string.IsNullOrEmpty(envPath)) { + HandlePathArgument(envPath); + } + } catch (Exception e) { + ASF.ArchiLogger.LogGenericException(e); + } + } + private static async Task Shutdown(byte exitCode = 0) { if (!await InitShutdownSequence().ConfigureAwait(false)) { return;