Skip to content

Refactoring brew commands. Upgraded nuget refs. Add GitHub workflows and build support#2

Merged
darthsharp merged 15 commits intomainfrom
feature/publishasdotnettool
Feb 15, 2026
Merged

Refactoring brew commands. Upgraded nuget refs. Add GitHub workflows and build support#2
darthsharp merged 15 commits intomainfrom
feature/publishasdotnettool

Conversation

@darthsharp
Copy link
Copy Markdown
Contributor

No description provided.

…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.
Copy link
Copy Markdown

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 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 via Directory.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 --force option is defined on BrewUpgradeOptions, but it is never passed through to IBrewUpgrader.UpgradeAsync(...) / UpgradeSoftwareAsync(...) in this command, so it currently has no effect. Thread options.Force into 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
  • ValidateAsync returns new 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. Use Task.FromResult(...) (or make the method async and return OptionsValidationResult...) instead of constructing an unstarted Task.

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

Comment thread build.sh
Comment thread build.ps1
Comment thread source/Directory.Build.props
Comment thread source/CreativeCoders.MacOS.HomeBrew/BrewInstalledModelExtensions.cs Outdated
@darthsharp darthsharp merged commit 4e11d94 into main Feb 15, 2026
2 checks passed
@darthsharp darthsharp deleted the feature/publishasdotnettool branch February 26, 2026 17:24
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