diff --git a/Bloxstrap/App.xaml.cs b/Bloxstrap/App.xaml.cs index a644408..1ad9b69 100644 --- a/Bloxstrap/App.xaml.cs +++ b/Bloxstrap/App.xaml.cs @@ -31,6 +31,10 @@ namespace Bloxstrap public static string Version = Assembly.GetExecutingAssembly().GetName().Version!.ToString()[..^2]; + public static bool IsActionBuild => !String.IsNullOrEmpty(BuildMetadata.CommitRef); + + public static bool IsProductionBuild => IsActionBuild && BuildMetadata.CommitRef.StartsWith("tag", StringComparison.Ordinal); + public static readonly MD5 MD5Provider = MD5.Create(); public static NotifyIconWrapper? NotifyIcon { get; set; } @@ -105,10 +109,10 @@ namespace Bloxstrap Logger.WriteLine(LOG_IDENT, $"Starting {ProjectName} v{Version}"); - if (String.IsNullOrEmpty(BuildMetadata.CommitHash)) - Logger.WriteLine(LOG_IDENT, $"Compiled {BuildMetadata.Timestamp.ToFriendlyString()} from {BuildMetadata.Machine}"); - else + if (IsActionBuild) Logger.WriteLine(LOG_IDENT, $"Compiled {BuildMetadata.Timestamp.ToFriendlyString()} from commit {BuildMetadata.CommitHash} ({BuildMetadata.CommitRef})"); + else + Logger.WriteLine(LOG_IDENT, $"Compiled {BuildMetadata.Timestamp.ToFriendlyString()} from {BuildMetadata.Machine}"); Logger.WriteLine(LOG_IDENT, $"Loaded from {Paths.Process}"); diff --git a/Bloxstrap/Bootstrapper.cs b/Bloxstrap/Bootstrapper.cs index c23d17d..db5b7e0 100644 --- a/Bloxstrap/Bootstrapper.cs +++ b/Bloxstrap/Bootstrapper.cs @@ -528,7 +528,7 @@ namespace Bloxstrap var versionComparison = Utilities.CompareVersions(App.Version, releaseInfo.TagName); // check if we aren't using a deployed build, so we can update to one if a new version comes out - if (versionComparison == VersionComparison.Equal && App.BuildMetadata.CommitRef.StartsWith("tag") || versionComparison == VersionComparison.GreaterThan) + if (versionComparison == VersionComparison.Equal && App.IsProductionBuild || versionComparison == VersionComparison.GreaterThan) { App.Logger.WriteLine(LOG_IDENT, $"No updates found"); return; diff --git a/Bloxstrap/Logger.cs b/Bloxstrap/Logger.cs index 2eea25d..bbaa40a 100644 --- a/Bloxstrap/Logger.cs +++ b/Bloxstrap/Logger.cs @@ -7,7 +7,7 @@ private readonly SemaphoreSlim _semaphore = new(1, 1); private FileStream? _filestream; - public readonly List Backlog = new(); + public readonly List History = new(); public bool Initialized = false; public bool NoWriteMode = false; public string? FileLocation; @@ -55,7 +55,7 @@ WriteLine(LOG_IDENT, $"Failed to initialize because Bloxstrap cannot write to {directory}"); Frontend.ShowMessageBox( - String.Format(Resources.Strings.Logger_NoWriteMode, directory), + String.Format(Strings.Logger_NoWriteMode, directory), System.Windows.MessageBoxImage.Warning, System.Windows.MessageBoxButton.OK ); @@ -68,8 +68,8 @@ Initialized = true; - if (Backlog.Count > 0) - WriteToLog(string.Join("\r\n", Backlog)); + if (History.Count > 0) + WriteToLog(string.Join("\r\n", History)); WriteLine(LOG_IDENT, "Finished initializing!"); @@ -102,10 +102,12 @@ { string timestamp = DateTime.UtcNow.ToString("s") + "Z"; string outcon = $"{timestamp} {message}"; - string outlog = outcon.Replace(Paths.UserProfile, "%UserProfile%"); + string outlog = outcon.Replace(Paths.UserProfile, "%UserProfile%", StringComparison.InvariantCultureIgnoreCase); Debug.WriteLine(outcon); WriteToLog(outlog); + + History.Add(outlog); } public void WriteLine(string identifier, string message) => WriteLine($"[{identifier}] {message}"); @@ -122,10 +124,7 @@ private async void WriteToLog(string message) { if (!Initialized) - { - Backlog.Add(message); return; - } try { diff --git a/Bloxstrap/UI/Elements/Dialogs/ExceptionDialog.xaml.cs b/Bloxstrap/UI/Elements/Dialogs/ExceptionDialog.xaml.cs index 7205b37..dea2842 100644 --- a/Bloxstrap/UI/Elements/Dialogs/ExceptionDialog.xaml.cs +++ b/Bloxstrap/UI/Elements/Dialogs/ExceptionDialog.xaml.cs @@ -1,13 +1,11 @@ using System.Media; +using System.Web; using System.Windows; -using System.Windows.Controls; using System.Windows.Interop; using Windows.Win32; using Windows.Win32.Foundation; -using Bloxstrap.Resources; - namespace Bloxstrap.UI.Elements.Dialogs { // hmm... do i use MVVM for this? @@ -26,10 +24,20 @@ namespace Bloxstrap.UI.Elements.Dialogs if (!App.Logger.Initialized) LocateLogFileButton.Content = Strings.Dialog_Exception_CopyLogContents; - string helpMessage = String.Format(Strings.Dialog_Exception_Info_2, "https://github.com/pizzaboxer/bloxstrap/wiki", "https://github.com/pizzaboxer/bloxstrap/issues/new?template=bug_report.yaml"); + string repoUrl = $"https://github.com/{App.ProjectRepository}"; + string wikiUrl = $"{repoUrl}/wiki"; - if (String.IsNullOrEmpty(App.BuildMetadata.CommitHash)) - helpMessage = String.Format(Strings.Dialog_Exception_Info_2_Alt, "https://github.com/pizzaboxer/bloxstrap/wiki"); + string issueUrl = String.Format( + "{0}/issues/new?template=bug_report.yaml&title={1}&what-happened={2}", + repoUrl, + HttpUtility.UrlEncode($"[BUG] {exception.GetType()}: {exception.Message}"), + HttpUtility.UrlEncode($"Log:\n```\n{String.Join('\n', App.Logger.History)}\n```") + ); + + string helpMessage = String.Format(Strings.Dialog_Exception_Info_2, wikiUrl, issueUrl); + + if (!App.IsActionBuild && !App.BuildMetadata.Machine.Contains("pizzaboxer", StringComparison.Ordinal)) + helpMessage = String.Format(Strings.Dialog_Exception_Info_2_Alt, wikiUrl); HelpMessageMDTextBlock.MarkdownText = helpMessage; @@ -38,7 +46,7 @@ namespace Bloxstrap.UI.Elements.Dialogs if (App.Logger.Initialized) Process.Start("explorer.exe", $"/select,\"{App.Logger.FileLocation}\""); else - Clipboard.SetDataObject(String.Join("\r\n", App.Logger.Backlog)); + Clipboard.SetDataObject(String.Join("\r\n", App.Logger.History)); }; CloseButton.Click += delegate diff --git a/Bloxstrap/UI/ViewModels/Settings/AboutViewModel.cs b/Bloxstrap/UI/ViewModels/Settings/AboutViewModel.cs index 00cb254..5cfeb0d 100644 --- a/Bloxstrap/UI/ViewModels/Settings/AboutViewModel.cs +++ b/Bloxstrap/UI/ViewModels/Settings/AboutViewModel.cs @@ -11,7 +11,7 @@ namespace Bloxstrap.UI.ViewModels.Settings public string BuildTimestamp => BuildMetadata.Timestamp.ToFriendlyString(); public string BuildCommitHashUrl => $"https://github.com/{App.ProjectRepository}/commit/{BuildMetadata.CommitHash}"; - public Visibility BuildInformationVisibility => BuildMetadata.CommitRef.StartsWith("tag") ? Visibility.Collapsed : Visibility.Visible; - public Visibility BuildCommitVisibility => string.IsNullOrEmpty(BuildMetadata.CommitHash) ? Visibility.Collapsed : Visibility.Visible; + public Visibility BuildInformationVisibility => App.IsProductionBuild ? Visibility.Collapsed : Visibility.Visible; + public Visibility BuildCommitVisibility => App.IsActionBuild ? Visibility.Visible : Visibility.Collapsed; } }