diff --git a/DecSm.Atom.Analyzers.Tests/DecSm.Atom.Analyzers.Tests.csproj b/DecSm.Atom.Analyzers.Tests/DecSm.Atom.Analyzers.Tests.csproj index b343e7dd..730d5cc6 100644 --- a/DecSm.Atom.Analyzers.Tests/DecSm.Atom.Analyzers.Tests.csproj +++ b/DecSm.Atom.Analyzers.Tests/DecSm.Atom.Analyzers.Tests.csproj @@ -9,7 +9,7 @@ - + diff --git a/DecSm.Atom.Module.AzureStorage/AzureBlobArtifactProvider.cs b/DecSm.Atom.Module.AzureStorage/AzureBlobArtifactProvider.cs index 154a5afb..14f5686f 100644 --- a/DecSm.Atom.Module.AzureStorage/AzureBlobArtifactProvider.cs +++ b/DecSm.Atom.Module.AzureStorage/AzureBlobArtifactProvider.cs @@ -209,7 +209,7 @@ public async Task RetrieveArtifacts( { Prefix = artifactBlobDir, }, - cancellationToken: cancellationToken); + cancellationToken); await foreach (var blobItem in blobs) { @@ -272,7 +272,7 @@ public async Task Cleanup(IReadOnlyList runIdentifiers, CancellationToke { Prefix = $"{buildName}/{buildIdPath}/", }, - cancellationToken: cancellationToken); + cancellationToken); await foreach (var blob in blobs) { @@ -324,7 +324,7 @@ public async Task> GetStoredRunIdentifiers( { Prefix = $"{buildName}/", }, - cancellationToken: cancellationToken); + cancellationToken); var buildIds = new List(); diff --git a/DecSm.Atom.Module.DevopsWorkflows.Tests/DecSm.Atom.Module.DevopsWorkflows.Tests.csproj b/DecSm.Atom.Module.DevopsWorkflows.Tests/DecSm.Atom.Module.DevopsWorkflows.Tests.csproj index fa7950cc..73670abb 100644 --- a/DecSm.Atom.Module.DevopsWorkflows.Tests/DecSm.Atom.Module.DevopsWorkflows.Tests.csproj +++ b/DecSm.Atom.Module.DevopsWorkflows.Tests/DecSm.Atom.Module.DevopsWorkflows.Tests.csproj @@ -13,13 +13,13 @@ - + - + - + diff --git a/DecSm.Atom.Module.GitVersion/IGitVersion.cs b/DecSm.Atom.Module.GitVersion/IGitVersion.cs index 8fe0e7aa..c998df7a 100644 --- a/DecSm.Atom.Module.GitVersion/IGitVersion.cs +++ b/DecSm.Atom.Module.GitVersion/IGitVersion.cs @@ -8,6 +8,7 @@ /// GitVersion for generating build IDs and version numbers, ensuring consistent and /// semantically versioned builds based on your Git history. /// +[PublicAPI] [ConfigureHostBuilder] public partial interface IGitVersion { diff --git a/DecSm.Atom.Module.GithubWorkflows.Tests/DecSm.Atom.Module.GithubWorkflows.Tests.csproj b/DecSm.Atom.Module.GithubWorkflows.Tests/DecSm.Atom.Module.GithubWorkflows.Tests.csproj index 5d789b75..c81c5307 100644 --- a/DecSm.Atom.Module.GithubWorkflows.Tests/DecSm.Atom.Module.GithubWorkflows.Tests.csproj +++ b/DecSm.Atom.Module.GithubWorkflows.Tests/DecSm.Atom.Module.GithubWorkflows.Tests.csproj @@ -13,13 +13,13 @@ - + - + - + diff --git a/DecSm.Atom.Module.GithubWorkflows/Expressions.cs b/DecSm.Atom.Module.GithubWorkflows/Expressions.cs index c2ad0b0f..4649e67b 100644 --- a/DecSm.Atom.Module.GithubWorkflows/Expressions.cs +++ b/DecSm.Atom.Module.GithubWorkflows/Expressions.cs @@ -10,6 +10,8 @@ namespace DecSm.Atom.Module.GithubWorkflows; [PublicAPI] public abstract record IGithubExpression { + public string Expression => $"${{{{ {Write()} }}}}"; + /// /// Writes the expression to its GitHub Actions string representation. /// @@ -20,8 +22,6 @@ public abstract record IGithubExpression public override string ToString() => Write(); - public string Expression => $"${{{{ {Write()} }}}}"; - /// /// Implicitly converts an to its string representation. /// diff --git a/DecSm.Atom.SourceGenerators.Tests/DecSm.Atom.SourceGenerators.Tests.csproj b/DecSm.Atom.SourceGenerators.Tests/DecSm.Atom.SourceGenerators.Tests.csproj index f66d866d..fc7db21f 100644 --- a/DecSm.Atom.SourceGenerators.Tests/DecSm.Atom.SourceGenerators.Tests.csproj +++ b/DecSm.Atom.SourceGenerators.Tests/DecSm.Atom.SourceGenerators.Tests.csproj @@ -14,12 +14,12 @@ - + - + diff --git a/DecSm.Atom.TestUtils/DecSm.Atom.TestUtils.csproj b/DecSm.Atom.TestUtils/DecSm.Atom.TestUtils.csproj index 34f61ea7..ae59efd7 100644 --- a/DecSm.Atom.TestUtils/DecSm.Atom.TestUtils.csproj +++ b/DecSm.Atom.TestUtils/DecSm.Atom.TestUtils.csproj @@ -5,7 +5,7 @@ - + diff --git a/DecSm.Atom.Tests/ApiSurfaceTests/PublicApiSurfaceTests.cs b/DecSm.Atom.Tests/ApiSurfaceTests/PublicApiSurfaceTests.cs index 1883c623..cd219999 100644 --- a/DecSm.Atom.Tests/ApiSurfaceTests/PublicApiSurfaceTests.cs +++ b/DecSm.Atom.Tests/ApiSurfaceTests/PublicApiSurfaceTests.cs @@ -45,12 +45,10 @@ public async Task VerifyPublicApiSurface() }; } -public sealed record Type(string Name, IReadOnlyList Members); +public sealed record Type(string Name, [UsedImplicitly] IReadOnlyList Members); public interface IMember { - string ToString(); - string Name { get; } } diff --git a/DecSm.Atom.Tests/BuildTests/Workflows/WorkflowTests.Workflows_WhenDirtyAndHeadless_RegeneratesWorkflows.verified.txt b/DecSm.Atom.Tests/BuildTests/Workflows/WorkflowTests.Workflows_WhenDirtyAndHeadless_RegeneratesWorkflows.verified.txt index 964ccd6c..d0a5019d 100644 --- a/DecSm.Atom.Tests/BuildTests/Workflows/WorkflowTests.Workflows_WhenDirtyAndHeadless_RegeneratesWorkflows.verified.txt +++ b/DecSm.Atom.Tests/BuildTests/Workflows/WorkflowTests.Workflows_WhenDirtyAndHeadless_RegeneratesWorkflows.verified.txt @@ -3,6 +3,6 @@ InvalidOperationException: One or more workflows are dirty. Run 'atom -g' to regenerate them - at async Task ExecuteAsync(CancellationToken stoppingToken - ) in AtomService.cs:112 + at async Task ExecuteAsync(CancellationToken + stoppingToken) in AtomService.cs:112 diff --git a/DecSm.Atom.Tests/DecSm.Atom.Tests.csproj b/DecSm.Atom.Tests/DecSm.Atom.Tests.csproj index 4db6ae16..d491d28c 100644 --- a/DecSm.Atom.Tests/DecSm.Atom.Tests.csproj +++ b/DecSm.Atom.Tests/DecSm.Atom.Tests.csproj @@ -13,13 +13,13 @@ - + - + - + diff --git a/DecSm.Atom.Tool.Tests/DecSm.Atom.Tool.Tests.csproj b/DecSm.Atom.Tool.Tests/DecSm.Atom.Tool.Tests.csproj index 5daf35cf..f154b18e 100644 --- a/DecSm.Atom.Tool.Tests/DecSm.Atom.Tool.Tests.csproj +++ b/DecSm.Atom.Tool.Tests/DecSm.Atom.Tool.Tests.csproj @@ -11,12 +11,12 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + - + diff --git a/DecSm.Atom/DecSm.Atom.csproj b/DecSm.Atom/DecSm.Atom.csproj index 5560b666..8a3fd8c5 100644 --- a/DecSm.Atom/DecSm.Atom.csproj +++ b/DecSm.Atom/DecSm.Atom.csproj @@ -17,7 +17,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all diff --git a/DecSm.Atom/Logging/SpectreLogger.cs b/DecSm.Atom/Logging/SpectreLogger.cs index 1f065502..c0622a25 100644 --- a/DecSm.Atom/Logging/SpectreLogger.cs +++ b/DecSm.Atom/Logging/SpectreLogger.cs @@ -42,11 +42,15 @@ public void Log( if (!IsEnabled(logLevel)) return; - if (logLevel is LogLevel.Debug or LogLevel.Trace && !LogOptions.IsVerboseEnabled) - return; + switch (logLevel) + { + case LogLevel.None: + case LogLevel.Debug or LogLevel.Trace when !LogOptions.IsVerboseEnabled: + return; + } - var levelText = string.Empty; - var levelColour = string.Empty; + string levelText; + string levelColour; var levelBackground = string.Empty; var messageStyle = string.Empty; @@ -92,8 +96,6 @@ public void Log( break; case LogLevel.None: - break; - default: throw new UnreachableException(); } @@ -133,7 +135,9 @@ public void Log( : "dim"; var columns = new Columns(new Text(" "), - new Markup($"[{messageStyle}]{message}[/]").LeftJustified()).Collapse(); + new Markup(messageStyle is { Length: > 0 } + ? $"[{messageStyle}]{message}[/]" + : message).LeftJustified()).Collapse(); ServiceStaticAccessor.Service?.Write(columns); @@ -148,7 +152,9 @@ public void Log( .AddRow($"[dim]{time:yy-MM-dd zzz}[/]", $"[dim]{FormatCategoryName(categoryName.EscapeMarkup(), command)}:[/]") .AddRow($"[dim]{time:HH:mm:ss.fff}[/] [bold {levelColour}{levelBackground}]{levelText}[/]", - $"[{messageStyle}]{message}[/]") + messageStyle is { Length: > 0 } + ? $"[{messageStyle}]{message}[/]" + : message) .AddRow(string.Empty); if (exception is not null) diff --git a/DecSm.Atom/Reports/ConsoleOutcomeReportWriter.cs b/DecSm.Atom/Reports/ConsoleOutcomeReportWriter.cs index 320011fd..fa7d4207 100644 --- a/DecSm.Atom/Reports/ConsoleOutcomeReportWriter.cs +++ b/DecSm.Atom/Reports/ConsoleOutcomeReportWriter.cs @@ -23,12 +23,11 @@ IParamService paramService public Task ReportRunOutcome(CancellationToken cancellationToken) { var table = new Table() - .LeftAligned() .HideHeaders() .Border(TableBorder.Minimal) - .AddColumn("Target") - .AddColumn("Outcome") - .AddColumn("Duration"); + .AddColumn("Target", c => c.LeftAligned()) + .AddColumn("Outcome", c => c.LeftAligned()) + .AddColumn("Duration", c => c.LeftAligned()); foreach (var state in buildModel .TargetStates @@ -203,9 +202,8 @@ private void Write(List reportData) return; var table = new Table() - .Alignment(Justify.Left) - .AddColumn("Name") - .AddColumn("Path") + .AddColumn("Name", c => c.LeftAligned()) + .AddColumn("Path", c => c.LeftAligned()) .Border(TableBorder.Minimal); foreach (var artifact in reportData) @@ -252,9 +250,7 @@ private void Write(ICustomReportData reportData) /// private void Write(TableReportData reportData) { - var table = new Table() - .Alignment(Justify.Left) - .Border(TableBorder.Minimal); + var table = new Table().Border(TableBorder.Minimal); var columnCount = reportData .Rows