From 47800f0c29e3135da87597a2aa58b38b7542e6a4 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Fri, 11 May 2018 23:20:25 +0200 Subject: [PATCH] Fix docker builds wrongly announced as custom --- ArchiSteamFarm/ASF.cs | 22 +++------------- ArchiSteamFarm/OS.cs | 2 ++ ArchiSteamFarm/SharedInfo.cs | 50 +++++++++++++++++++++++------------- Dockerfile.arm | 2 +- Dockerfile.x64 | 2 +- 5 files changed, 39 insertions(+), 39 deletions(-) diff --git a/ArchiSteamFarm/ASF.cs b/ArchiSteamFarm/ASF.cs index 79c4ac2bc..5a02684d3 100644 --- a/ArchiSteamFarm/ASF.cs +++ b/ArchiSteamFarm/ASF.cs @@ -41,7 +41,7 @@ namespace ArchiSteamFarm { private static FileSystemWatcher FileSystemWatcher; internal static async Task CheckAndUpdateProgram(bool updateOverride = false) { - if (SharedInfo.IsCustomBuild || (Program.GlobalConfig.UpdateChannel == GlobalConfig.EUpdateChannel.None)) { + if (!SharedInfo.BuildInfo.CanUpdate || (Program.GlobalConfig.UpdateChannel == GlobalConfig.EUpdateChannel.None)) { return null; } @@ -139,7 +139,7 @@ namespace ArchiSteamFarm { return null; } - const string targetFile = SharedInfo.ASF + "-" + SharedInfo.Variant + ".zip"; + string targetFile = SharedInfo.ASF + "-" + SharedInfo.BuildInfo.Variant + ".zip"; GitHub.ReleaseResponse.Asset binaryAsset = releaseResponse.Assets.FirstOrDefault(asset => asset.Name.Equals(targetFile, StringComparison.OrdinalIgnoreCase)); if (binaryAsset == null) { @@ -168,7 +168,7 @@ namespace ArchiSteamFarm { return null; } - if (IsUnixVariant(SharedInfo.Variant)) { + if (OS.IsUnix) { string executable = Path.Combine(targetDirectory, SharedInfo.AssemblyName); if (File.Exists(executable)) { OS.UnixSetFileAccessExecutable(executable); @@ -212,22 +212,6 @@ namespace ArchiSteamFarm { FileSystemWatcher.EnableRaisingEvents = true; } - private static bool IsUnixVariant(string variant) { - if (string.IsNullOrEmpty(variant)) { - ArchiLogger.LogNullError(nameof(variant)); - return false; - } - - switch (variant) { - case "linux-arm": - case "linux-x64": - case "osx-x64": - return true; - default: - return false; - } - } - private static bool IsValidBotName(string botName) { if (string.IsNullOrEmpty(botName)) { ArchiLogger.LogNullError(nameof(botName)); diff --git a/ArchiSteamFarm/OS.cs b/ArchiSteamFarm/OS.cs index c5889fdc6..cfe8fc427 100644 --- a/ArchiSteamFarm/OS.cs +++ b/ArchiSteamFarm/OS.cs @@ -27,6 +27,8 @@ using ArchiSteamFarm.Localization; namespace ArchiSteamFarm { internal static class OS { + internal static bool IsUnix => RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX); + internal static void Init(bool systemRequired) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { DisableQuickEditMode(); diff --git a/ArchiSteamFarm/SharedInfo.cs b/ArchiSteamFarm/SharedInfo.cs index 80e11fba0..ae624bd0e 100644 --- a/ArchiSteamFarm/SharedInfo.cs +++ b/ArchiSteamFarm/SharedInfo.cs @@ -20,24 +20,11 @@ // limitations under the License. using System; +using System.Diagnostics.CodeAnalysis; using System.Reflection; namespace ArchiSteamFarm { internal static class SharedInfo { -#if ASF_VARIANT_GENERIC - internal const string Variant = "generic"; -#elif ASF_VARIANT_LINUX_ARM - internal const string Variant = "linux-arm"; -#elif ASF_VARIANT_LINUX_X64 - internal const string Variant = "linux-x64"; -#elif ASF_VARIANT_OSX_X64 - internal const string Variant = "osx-x64"; -#elif ASF_VARIANT_WIN_X64 - internal const string Variant = "win-x64"; -#else - internal const string Variant = SourceVariant; -#endif - internal const ulong ArchiSteamID = 76561198006963719; internal const string ASF = nameof(ASF); internal const ulong ASFGroupSteamID = 103582791440160998; @@ -61,11 +48,38 @@ namespace ArchiSteamFarm { internal const string UpdateDirectory = "_old"; internal const string WebsiteDirectory = "www"; - private const string SourceVariant = "source"; - - internal static bool IsCustomBuild => Variant == SourceVariant; internal static Guid ModuleVersion => Assembly.GetEntryAssembly().ManifestModule.ModuleVersionId; - internal static string PublicIdentifier => AssemblyName + (IsCustomBuild ? "-custom" : ""); + internal static string PublicIdentifier => AssemblyName + (BuildInfo.IsCustomBuild ? "-custom" : ""); internal static Version Version => Assembly.GetEntryAssembly().GetName().Version; + + [SuppressMessage("ReSharper", "ConvertToConstant.Global")] + internal static class BuildInfo { +#if ASF_VARIANT_DOCKER + internal static readonly bool CanUpdate = false; + internal static readonly string Variant = "docker"; +#elif ASF_VARIANT_GENERIC + internal static readonly bool CanUpdate = true; + internal static readonly string Variant = "generic"; +#elif ASF_VARIANT_LINUX_ARM + internal static readonly bool CanUpdate = true; + internal static readonly string Variant = "linux-arm"; +#elif ASF_VARIANT_LINUX_X64 + internal static readonly bool CanUpdate = true; + internal static readonly string Variant = "linux-x64"; +#elif ASF_VARIANT_OSX_X64 + internal static readonly CanUpdate = true; + internal static readonly string Variant = "osx-x64"; +#elif ASF_VARIANT_WIN_X64 + internal static readonly bool CanUpdate = true; + internal static readonly string Variant = "win-x64"; +#else + internal static readonly bool CanUpdate = false; + internal static readonly string Variant = SourceVariant; +#endif + + private const string SourceVariant = "source"; + + internal static bool IsCustomBuild => Variant == SourceVariant; + } } } \ No newline at end of file diff --git a/Dockerfile.arm b/Dockerfile.arm index 01384dd85..18d68bc75 100644 --- a/Dockerfile.arm +++ b/Dockerfile.arm @@ -2,7 +2,7 @@ FROM microsoft/dotnet:2.0-sdk AS build-env WORKDIR /app COPY . ./ RUN dotnet --info && \ - dotnet publish ArchiSteamFarm -c Release -o out /nologo && \ + dotnet publish ArchiSteamFarm -c Release -o out /nologo /p:ASFVariant=docker && \ cp "ArchiSteamFarm/scripts/generic/ArchiSteamFarm.sh" "ArchiSteamFarm/out/ArchiSteamFarm.sh" FROM microsoft/dotnet:2.0-runtime-stretch-arm32v7 diff --git a/Dockerfile.x64 b/Dockerfile.x64 index 39889aad1..bf1b41fae 100644 --- a/Dockerfile.x64 +++ b/Dockerfile.x64 @@ -2,7 +2,7 @@ FROM microsoft/dotnet:2.0-sdk AS build-env WORKDIR /app COPY . ./ RUN dotnet --info && \ - dotnet publish ArchiSteamFarm -c Release -o out /nologo && \ + dotnet publish ArchiSteamFarm -c Release -o out /nologo /p:ASFVariant=docker && \ cp "ArchiSteamFarm/scripts/generic/ArchiSteamFarm.sh" "ArchiSteamFarm/out/ArchiSteamFarm.sh" FROM microsoft/dotnet:2.0-runtime