Skip to content

vNext#231

Merged
DecSmith42 merged 107 commits intomainfrom
feature/v-next
Dec 4, 2025
Merged

vNext#231
DecSmith42 merged 107 commits intomainfrom
feature/v-next

Conversation

@DecSmith42
Copy link
Owner

No description provided.

DecSmith42 and others added 30 commits October 8, 2025 09:56
- Added support for chained params, which are dependencies from params to other params

- Removed default value functionality from ParamDefinitionAttribute.cs as GetParam() is now the canonical way to configure defaults
…ime targets

Enhanced `DecSm.Atom.Tool` to support Native AOT builds with additional runtime configurations targeting `win-x64`. Added support for multiple `ToolCommandNames` and fine-tuned size optimization through project settings.

BREAKING CHANGE: Updated SDK to target .NET 10.0 for certain AOT configurations; older runtime compatibility requires explicit consideration.
Added logging for errors when a NuGet package push fails. This captures the `ProcessRunResult` error details, ensuring better traceability for push failures.

Removed unused `ConsumesVariable` for build version in deploy targets.
Added `MaskingAnsiConsoleOutput` to ensure sensitive values are masked before being rendered to the console. This feature seamlessly integrates with Spectre.Console by wrapping its `IAnsiConsoleOutput`.

Updated dependency injection in `HostExtensions` to leverage the new masking implementation when creating an `IAnsiConsole` instance. Modified `SpectreLogger` to remove redundant secret masking logic. Added tests for masking behavior under various scenarios.
Updated `PackageId` in `DecSm.Atom.Tool.csproj` to use `DecSm.Atom.Tool` instead of `atomtool`. Removed redundant `CustomPackageId` settings from build and pack targets in `IBuildTargets`.
Updated `ToolCommandNames` to `ToolCommandName` in `DecSm.Atom.Tool.csproj`, ensuring alignment with the expected MSBuild property for single tool command scenarios.
Replaced System.CommandLine with ConsoleAppFramework for better compatibility and reduced complexity. Introduced `CommandModel` and `RunArgsFilter` to streamline command management. Refactored `RunCommand` and `NugetAddCommand` to improve readability and parameter handling.

Removed redundant extensions and adjusted project settings for dependency updates, including the removal of `System.CommandLine` and the addition of `ConsoleAppFramework` and `JetBrains.Annotations`.
Improved message formatting for default and configured parameter outputs to enhance readability. Updated color scheme for cases where a required secret is missing, replacing yellow with blue for better distinction.

Added comments to suppress ReSharper's query refactoring suggestions for relevant foreach loops.
Simplified code expressions by removing redundant `public` modifiers on interface members and properties. Replaced multi-line conditional statements with concise expressions. Improved test readability by restructuring constants and minor refactoring.

Included comments to disable and restore specific ReSharper suggestions for enhanced performance considerations. Made minor updates to JSON formatting for consistency.
Enabled runtime matrix support in CI workflows for `DecSm.Atom.Tool` to target `windows-latest`, `ubuntu-latest`, and `macos-latest`. Enhanced AOT packing by dynamically resolving runtime identifiers and optimizing non-native builds for Linux.

Refactored `PushToNuget` to include dynamic build variables and streamline artifact retrieval. Updated workflows and targets configuration for better runtime compatibility and artifact handling.
… file

Adjusted the formatting for `--secret-param` in the verification file for better consistency. Replaced the warning symbol with a placeholder (`? None`) to reflect the latest expected output.
Upgraded the `SetupDotnetStep` from `9.0.x` to `10.0.x` in the build workflow configuration. This ensures compatibility with the latest .NET SDK improvements and features. Planning adjustments may be needed for workflows requiring older versions.
…o 10.0.x

Introduced the `DotnetQuality` option in `SetupDotnetStep`, allowing for customization of SDK quality levels (e.g., preview, daily). Updated workflows to utilize `dotnet-quality: 'preview'` alongside the `dotnet-version` parameter for precise control over SDK configuration.

This ensures compatibility with the latest SDK features while enabling finer-grained control over runtime environments. Enhanced workflow generation logic in both GitHub and DevOps writers to optionally include quality level configuration.
Introduced the `Quality` parameter in `SetupDotnetStep` to allow customization of .NET SDK version quality levels. This parameter provides finer control over the SDK version installed, supporting different quality tiers such as `preview` or `stable`.

Updated documentation to reflect the new parameter usage. This enhancement simplifies the workflow configuration for cases requiring specific SDK qualities.
Moved `JetBrains.Annotations` from direct usage in `CommandModel` to `_usings.cs`. Simplifies code structure and ensures consistency in the usage of shared dependencies.
Added support for retrieving artifacts for Windows, Ubuntu, and MacOS runtime environments in `PushAtomTool`. This enables better handling and distribution of environment-specific builds for `AtomTool`. Refactored the `RetrieveArtifacts` logic to include the latest runtime tags: `WindowsLatestTag`, `UbuntuLatestTag`, and `MacOsLatestTag`.
Updated `FileSystem.Directory.GetFiles` to search for `.nupkg` files in all subdirectories under `AtomPublishDirectory`. This resolves an issue where packages located in nested directories were not being detected and pushed to NuGet.
Updated `RetrieveArtifacts` calls to use `AtomToolProjectName` instead of `PackAtomTool`. This ensures the correct project name is used for artifact retrieval across runtime environments.
… path

Updated `Build` triggers to include `feat/**` branches for improved workflow flexibility. Fixed the artifact directory path in `IDeployTargets` from `AtomPublishDirectory` to `AtomArtifactsDirectory`, ensuring consistency and correctness during artifact retrieval.
…act acquisition

Centralized runtime matrix definitions into `IBuildTargets.BuildPlatformNames` for better reusability and maintainability across the codebase. Updated workflows and build targets to use the new centralized definitions.

Enhanced artifact handling in `PushToNuget` by adding explicit artifact consumption for environment-specific builds (`Windows`, `Ubuntu`, and `MacOS`). Simplified `TestAtom` and `PackAtomTool` configurations to utilize the new runtime matrix logic, reducing duplication. Streamlined artifact retrieval logic in `PushAtomTool` for consistent processing.
Introduced `TaskExtensions` providing retry mechanisms for `Task` and `Task<T>` with customizable retry count, delays, and cancellation support. Added overloads to handle faulted tasks, cancellation exceptions, and retrying operations via task factories. Exceptions from multiple attempts are aggregated and surfaced after the final attempt.

Included comprehensive unit tests to validate correct behavior across various scenarios, including retries, exception handling, and cancellation cases.
Updated all project and test targets to support .NET 10.0 alongside .NET 9.0 and 8.0. Upgraded default language version to C# 14 across the codebase. Updated supporting libraries, including Roslynator to 4.14.1, Azure.Identity to 1.17.0, and other dependencies to their latest versions.

Modified test configurations to include .NET 10.0 reference assemblies and updated language version for parsing options to C# 14. Introduced fixes ensuring consistency in artifact handling and improved compatibility with .NET 10.0 workflows.
…able fields

Enhanced `GitVersionBuildIdProvider` and `GitVersionBuildVersionProvider` to utilize `[AllowNull]` and `[MaybeNull]` attributes for their fields, improving nullability handling and aligning with updated nullable reference type guidelines.

Updated related usings and adjusted logic for better consistency and clarity. Included global using directives for `System.Diagnostics.CodeAnalysis`, simplifying declarations. Added `CA1873` to suppressed warnings in the project configuration. Adjusted test cases for improved readability and maintainability.
Enhanced workflows and test configurations to include .NET 8.0 and 9.0, alongside existing .NET 10.0 support. Updated `TestAtom` to run unit tests against multiple frameworks (`net8.0`, `net9.0`, `net10.0`) using a matrix approach.

Refactored `DotnetTestOptions` to include optional `Framework` and `Configuration` properties, improving flexibility during test execution. Adjusted test reporting and coverage generation to reflect framework-specific contexts in their output.

Modified `ProcessRunOptions` to handle empty arguments gracefully, ensuring robust command construction. Streamlined artifact consumption logic in `TestAtom` and improved workflow definitions (`Build.yml`, `Validate.yml`, and others) with proper setup for multi-framework support.
DecSmith42 and others added 19 commits December 1, 2025 13:04
…ties/methods

Ensured that only `public`, `protected`, and `protected internal` properties and methods are included when generating interface members.
Aligned property and method selection logic to focus on `interfaces` and removed redundant handling for `class` members. Updated naming to improve clarity and consistency (e.g., `interfacesWithProperties` to `typesWithProperties`).
Introduced `BuildCache<T>` in the `DecSm.Atom.Util` namespace. This utility provides a generic mechanism for caching build objects using `IBuildAccessor` as keys. Features include adding, retrieving, and clearing cache entries.
Introduced `ServiceCache<T>` to provide a generic caching utility for services. Supports retrieval of cached values using `IBuildAccessor` and clears the cache when needed.
The `ServiceCache` class was removed as it is no longer in use.
- Folded all dotnet functionality into Dotnet module
- Improved BuildInfo variable flow and added tests
- Improved _atom project to reflect latest best atom practices

**BREAKING**: Removed 'Version' builtin variable as IBuildInfo.BuildVersion already serves that purpose
Updated `DotnetFileUtil` to search explicitly for `.csproj` files instead of all project types (`.*proj`). This ensures accurate project resolution and avoids false positives during directory scans.
Introduced a new `TestFrameworkMatrix` to include multiple .NET versions (`net8.0`, `net9.0`, `net10.0`) in build and test workflows. Updated `PlatformNames` for better reusability across pipelines. Enhanced GitHub Actions and Azure DevOps workflows to handle the new test framework dimension, ensuring proper artifact naming and separation by framework version.
…y keys

Updated the `GithubWorkflowWriter` to dynamically handle quotes for `dotnet-version` and `dotnet-quality` keys based on the presence of single quotes in their values. This ensures proper YAML formatting and avoids potential syntax issues in workflow files. Added comments for future improvements to quote handling throughout the writer.
Enhanced build and test workflows to support both platform (`windows-latest`, `ubuntu-latest`, `macos-latest`) and framework dimensions (`net8.0`, `net9.0`, `net10.0`). Updated artifact naming and workflow definitions in GitHub Actions and Azure DevOps to reflect these changes. Introduced reusable `PlatformNames` and `FrameworkNames` for improved maintainability.
Moved `System.Globalization` to the `_usings.cs` file to centralize and streamline namespace imports. Simplifies readability and ensures consistency across test files.
Updated `GithubWorkflowWriter` to eliminate duplicate job dependencies using `Distinct()`. This ensures cleaner and more accurate `needs` declarations in generated GitHub workflow YAML.

Implemented a new test, `DuplicateDependencyBuild_GeneratesWorkflow`, to verify the generation of workflows for builds with duplicate dependencies. The test ensures proper YAML formatting and validates artifact handling in the resulting workflow.
Added `[PublicAPI]` annotations to improve clarity and maintainability for public-facing APIs in `VerbosityOptions` and related extensions. Removed an unused `global using` statement in `_usings.cs` to streamline namespace imports.
Removed `.idea` and `.vscode` folders along with their related configuration files from the repository. Updated `.gitignore` to exclude these editor-specific directories moving forward.
Copilot AI review requested due to automatic review settings December 3, 2025 13:19
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the project to support .NET 10.0 and introduces several modernization improvements across the codebase, including enhanced workflow generation capabilities, improved testing infrastructure, and refactored helper interfaces.

Key Changes:

  • Added .NET 10.0 support across all projects while maintaining compatibility with .NET 8.0 and 9.0
  • Refactored helper interfaces (test, pack, publish) to use a new CLI-based approach with generated code
  • Introduced new GitHub workflow options for checkout customization and snapshot images
  • Enhanced test infrastructure with multi-framework testing support

Reviewed changes

Copilot reviewed 88 out of 351 changed files in this pull request and generated no comments.

Show a summary per file
File Description
DecSm.Atom.Module.GithubWorkflows/IGithubReleaseHelper.cs Added dry-run functionality and conditional compilation for .NET 10.0 async zip operations
DecSm.Atom.Module.GithubWorkflows/Generation/GithubWorkflowWriter.cs Enhanced workflow generation with better input handling, checkout options, and dotnet quality support
DecSm.Atom.Module.GithubWorkflows/Extensions.cs Converted to extension methods syntax
DecSm.Atom.Module.Dotnet/Helpers/* Refactored helper interfaces to use new DotnetCli abstraction with improved options patterns
DecSm.Atom.DotnetCliGenerator/* Added new CLI code generator for creating dotnet command wrappers
*.csproj Updated target frameworks to include net10.0 and upgraded package versions
.github/workflows/*.yml Consolidated workflow jobs and added multi-framework testing matrix
Files not reviewed (5)
  • .idea/.idea.DecSm.Atom/.idea/.gitignore: Language not supported
  • .idea/.idea.DecSm.Atom/.idea/.name: Language not supported
  • .idea/.idea.DecSm.Atom/.idea/encodings.xml: Language not supported
  • .idea/.idea.DecSm.Atom/.idea/indexLayout.xml: Language not supported
  • .idea/.idea.DecSm.Atom/.idea/vcs.xml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Enhanced `PackTool` jobs in both GitHub Actions and Azure DevOps workflows by introducing runner matrices across `windows-latest`, `ubuntu-latest`, and `macos-latest`. Updated environment variables, artifact naming, and `WithGithubRunnerMatrix` integration for consistency. Improves cross-platform testing and artifact handling.
Introduced a suite of tests to validate various DevOps workflow scenarios including artifact generation, manual input handling, checkout options, environment deployments, and dependent builds. Added corresponding build definitions and target implementations to support these tests. Updated test project dependencies and global usings for consistency.
@DecSmith42 DecSmith42 merged commit 59d86fa into main Dec 4, 2025
46 checks passed
@DecSmith42 DecSmith42 deleted the feature/v-next branch December 4, 2025 12:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants