Refactoring brew commands. Upgraded nuget refs. Add GitHub workflows and build support#2
Merged
darthsharp merged 15 commits intomainfrom Feb 15, 2026
Merged
Conversation
…ands into separate namespaces and command groups; upgraded project dependencies to version 6.6.0.
…Build.props` for shared settings; added `UserDefaultsDomainsCommandGroup` and reorganized namespaces for improved modularity.
…nd` and `ExportDomainCommand`; introduced `ListDomainsOptions` with filtering support in `ListDomainsCommand`.
…tionality; implemented validation in `BrewUpgradeOptions`.
…vity between `AppName` and `UpgradeOutdated` options; improved help text descriptions.
…s` and improved version comparison logic; updated `BrewListInstalledSoftwareCommand` output method to use `WriteLines`; added `.UseValidation()` to CLI setup.
…ented CI/CD workflows for GitHub Actions, and restructured project to include detailed C# development guidelines and a unified build context.
…s1`) and `GitVersion.yml` configuration; integrated them into the solution for streamlined builds and versioning. Updated `BuildContext` to simplify publishing targets.
…shing. - Replaced `GITHUB_TOKEN` with `NUGET_ORG_TOKEN` in `release.yml`. - Added `NUGET_TOKEN` to `main.yml` and `integration.yml`.
…ject settings; updated solution file for new build configuration. Removed redundant `TargetFramework` entries from individual project files.
…r artifact upload.
There was a problem hiding this comment.
Pull request overview
This PR introduces a build/CI setup (Cake build entrypoint + GitHub Actions workflows), refactors CLI command structure (command groups + options validation), and upgrades several NuGet dependencies while centralizing common .NET project settings via per-folder Directory.Build.props.
Changes:
- Add Cake-based build project plus cross-platform build scripts and GitVersion configuration.
- Refactor CLI commands into command groups/subfolders and enable host-level options validation/help behavior tweaks.
- Upgrade package references and centralize
TargetFramework/ common MSBuild properties viaDirectory.Build.props.
Reviewed changes
Copilot reviewed 39 out of 40 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Directory.Build.props | Adds common test project MSBuild properties (incl. TargetFramework). |
| tests/CreativeCoders.MacOS.UserDefaults.Tests/CreativeCoders.MacOS.UserDefaults.Tests.csproj | Removes per-project TFM; bumps test dependencies (FakeItEasy/coverlet/logger). |
| source/Directory.Build.props | Adds common source MSBuild properties (incl. TFM + packability defaults). |
| source/CreativeCoders.MacSynkker.Cli/Program.cs | Enables validation and adjusts help/footer configuration in the CLI host. |
| source/CreativeCoders.MacSynkker.Cli/CreativeCoders.MacSynkker.Cli.csproj | Configures the CLI as a .NET tool package and bumps CLI hosting packages. |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/UserDefaultsCommandGroup.cs | Adds top-level defaults command group definition. |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/ListDomainsCommand.cs | Removes legacy defaults domains list command (replaced by new structure). |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/Domains/UserDefaultsDomainsCommandGroup.cs | Adds domains subgroup under defaults. |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/Domains/ListDomains/ListDomainsOptions.cs | Adds options model for domain listing (filter pattern). |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/Domains/ListDomains/ListDomainsCommand.cs | Reintroduces domains list command under new namespace + adds filtering. |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/Domains/ImportDomain/ImportDomainOptions.cs | Moves import options into new namespace structure. |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/Domains/ImportDomain/ImportDomainCommand.cs | Updates import command metadata/namespace and adds description + annotations. |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/Domains/ExportDomain/ExportDomainOptions.cs | Moves export options into new namespace structure. |
| source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/Domains/ExportDomain/ExportDomainCommand.cs | Updates export command metadata/namespace and console output formatting. |
| source/CreativeCoders.MacSynkker.Cli/Commands/HomeBrew/HomebrewCommandGroup.cs | Adds top-level brew command group definition. |
| source/CreativeCoders.MacSynkker.Cli/Commands/HomeBrew/BrewUpgradeOptions.cs | Removes legacy upgrade options class (replaced by new folder structure). |
| source/CreativeCoders.MacSynkker.Cli/Commands/HomeBrew/Upgrade/BrewUpgradeOptions.cs | Adds validated upgrade options (mutual exclusivity rules). |
| source/CreativeCoders.MacSynkker.Cli/Commands/HomeBrew/Upgrade/BrewUpgradeCommand.cs | Moves upgrade command into new namespace + updates command metadata. |
| source/CreativeCoders.MacSynkker.Cli/Commands/HomeBrew/List/BrewListInstalledSoftwareOptions.cs | Moves list options into new namespace structure. |
| source/CreativeCoders.MacSynkker.Cli/Commands/HomeBrew/List/BrewListInstalledSoftwareCommand.cs | Moves list command and tweaks output formatting/newlines. |
| source/CreativeCoders.MacSynkker.Cli/Commands/HomeBrew/Info/BrewInfoCommand.cs | Moves info command and updates command metadata/annotations. |
| source/CreativeCoders.MacOS.UserDefaults/CreativeCoders.MacOS.UserDefaults.csproj | Removes per-project TFM; bumps CreativeCoders + Microsoft DI package refs. |
| source/CreativeCoders.MacOS.HomeBrew/CreativeCoders.MacOS.HomeBrew.csproj | Removes per-project TFM; bumps CreativeCoders package refs. |
| source/CreativeCoders.MacOS.HomeBrew/BrewInstalledModelExtensions.cs | Refactors outdated-formula detection into helpers and adjusts version comparison. |
| source/CreativeCoders.MacOS.Core/CreativeCoders.MacOS.Core.csproj | Removes per-project TFM; bumps CreativeCoders package refs. |
| samples/Directory.Build.props | Adds common sample project MSBuild properties (incl. TargetFramework). |
| samples/SampleConsoleApp/SampleConsoleApp.csproj | Removes per-project TFM; normalizes formatting; bumps DI package ref. |
| macSynkker.sln | Adds solution items for build/CI files and includes new build project. |
| build/Build.csproj | Adds build host project (Cake build) targeting net10.0. |
| build/Program.cs | Adds CakeHost entrypoint and tool installation (GitVersion/reportgenerator). |
| build/BuildContext.cs | Adds Cake build context wiring for cleaning, publishing, dist packages, releases. |
| build.sh | Adds bash build wrapper for building/running the Cake build project. |
| build.ps1 | Adds PowerShell build wrapper for building/running the Cake build project. |
| build.cmd | Adds cross-platform launcher delegating to bash/PowerShell wrappers. |
| GitVersion.yml | Adds GitVersion configuration for CI/release versioning. |
| .github/workflows/main.yml | Adds main-branch CI workflow invoking build targets and uploading artifacts. |
| .github/workflows/pull-request.yml | Adds PR workflow running pack target and uploading coverage report. |
| .github/workflows/integration.yml | Adds feature-branch workflow running build/publish/dist package targets. |
| .github/workflows/release.yml | Adds tag-based release workflow invoking push/publish/dist/release targets. |
| .github/instructions/csharp.instructions.md | Adds repository C# contribution/review guidance document. |
Comments suppressed due to low confidence (2)
source/CreativeCoders.MacSynkker.Cli/Commands/HomeBrew/Upgrade/BrewUpgradeCommand.cs:15
- The
--forceoption is defined onBrewUpgradeOptions, but it is never passed through toIBrewUpgrader.UpgradeAsync(...)/UpgradeSoftwareAsync(...)in this command, so it currently has no effect. Threadoptions.Forceinto the upgrader calls (including the helper method) so the CLI flag actually changes behavior.
source/CreativeCoders.MacSynkker.Cli/Commands/UserDefaults/Domains/ExportDomain/ExportDomainOptions.cs:10 ValidateAsyncreturnsnew Task<OptionsValidationResult>(...), which creates a cold task that is never started. With.UseValidation()enabled in the CLI host, this will likely cause validation to never complete (hang) for this command. UseTask.FromResult(...)(or make the methodasyncandreturn OptionsValidationResult...) instead of constructing an unstartedTask.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…nd` to improve dotnet-specific software handling.
…n comparison logic.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.