From 911eec49003a361684531bfe425aa31878c04488 Mon Sep 17 00:00:00 2001 From: Joe Strout Date: Thu, 13 Jan 2022 13:07:29 -0700 Subject: [PATCH] Fixed `version.host` and `version.buildDate`. --- M1/M1API.cs | 4 ++-- M1/Miniscript/MiniscriptIntrinsics.cs | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/M1/M1API.cs b/M1/M1API.cs index ec88fb3..7d54220 100644 --- a/M1/M1API.cs +++ b/M1/M1API.cs @@ -48,8 +48,8 @@ public static void Init(Shell shell) { if (shell.bot == null) HostInfo.name = "Farmtronics Home Computer"; else HostInfo.name = "Farmtronics Bot"; - HostInfo.version = 0.1; - HostInfo.info = "http://miniscript.org/"; // to-do: put our mod URL here + HostInfo.version = 1.01; + HostInfo.info = "https://github.com/JoeStrout/Farmtronics/"; Intrinsic f; diff --git a/M1/Miniscript/MiniscriptIntrinsics.cs b/M1/Miniscript/MiniscriptIntrinsics.cs index 54aad5e..a0956c0 100644 --- a/M1/Miniscript/MiniscriptIntrinsics.cs +++ b/M1/Miniscript/MiniscriptIntrinsics.cs @@ -1445,13 +1445,20 @@ public static void InitIfNeeded() { d["miniscript"] = new ValString("1.5.1"); // Getting the build date is annoyingly hard in C#. - // This will work if the assembly.cs file uses the version format: 1.0.* - DateTime buildDate; - System.Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; - buildDate = new DateTime(2000, 1, 1); - buildDate = buildDate.AddDays(version.Build); - buildDate = buildDate.AddSeconds(version.Revision * 2); - d["buildDate"] = new ValString(buildDate.ToString("yyyy-MM-dd")); + // The following requires that you paste a line such as: + // Copyright © $([System.DateTime]::UtcNow.Year) Your Name ($([System.DateTime]::UtcNow.ToString("s"))) + // ...into your .csproj file, inside the first PropertyGroup block. + string buildDate = "2000-01-01"; + // For MOST contexts you would just do this: + //var vers = System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location); + // But for a Stardew mod, we must hack this file and do this: + var vers = System.Diagnostics.FileVersionInfo.GetVersionInfo(System.IO.Path.Combine(Farmtronics.ModEntry.instance.Helper.DirectoryPath, "Farmtronics.dll")); + if (!string.IsNullOrEmpty(vers.LegalCopyright)) { + var re = new System.Text.RegularExpressions.Regex(@"(20\d\d-\d\d-\d\d)"); + var match = re.Match(vers.LegalCopyright); + if (match.Success) buildDate = match.Value; + } + d["buildDate"] = new ValString(buildDate); d["host"] = new ValNumber(HostInfo.version); d["hostName"] = new ValString(HostInfo.name);