Extract ConfigKeyKit into Examples/ConfigKeyKit Swift package#365
Extract ConfigKeyKit into Examples/ConfigKeyKit Swift package#365leogdion wants to merge 8 commits into
Conversation
Splits the two divergent in-tree ConfigKeyKit copies (MistDemo and BushelCloud) into one Examples/ConfigKeyKit package with `ConfigKeyKit` (base) + `ConfigKeyKitCLI` (Command, CommandRegistry, etc.) products, both consumers now depending on it via `.package(path: "../ConfigKeyKit")`. BushelCloud's `bushelPrefixed:` conveniences move to a small ConfigKey+BUSHEL extension inside BushelCloudKit, keeping the new package application-neutral. Adds full scaffolding (CI workflow, lint pipeline, mise, LICENSE, README) and a `setup-configkeykit` composite action — placed inside the new package so future consumers can reference it remotely once the subrepo is published, mirroring how setup-mistkit lives in MistKit. For #267. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## v1.0.0-beta.2 #365 +/- ##
================================================
Coverage ? 69.04%
================================================
Files ? 113
Lines ? 2630
Branches ? 0
================================================
Hits ? 1816
Misses ? 814
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
leogdion
left a comment
There was a problem hiding this comment.
Let's think a better way to organize ConfigKeyKit and ConfigKeyCLI. I'd prefer ConfigKeyKit contain everything and a different product contain everything but the CLI piece. Or re-evaluate whether we need to break these apart.
Per PR #365 review: merge the CLI target into the base ConfigKeyKit target (one product, one test target) and remove ConfigKeyKit from the top-level Examples matrix — the subpackage has its own ConfigKeyKit.yml workflow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Content moves to brightdigit/ConfigKeyKit; the next commit re-adds it at the same path via git-subrepo. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Code Review — PR #365: Extract ConfigKeyKit into Examples/ConfigKeyKit Swift PackageOverviewThe structural goal is correct and well-executed. Extracting the duplicated ConfigKeyKit code into a standalone package is the right move, and both consumers ( Medium Priority1. Stale 2. Unnecessary 3. 4. Duplicated 5. extension ConfigKey where Value == Bool {
public init(cli: String, env: String, default defaultVal: Bool = false) {
self.init(cli: cli, env: env, default: defaultVal)
}
}Low Priority / CLAUDE.md Compliance6. Unnecessary inline comments (CLAUDE.md: "Default to writing no comments. Only add one when the WHY is non-obvious.")
All of these describe what the code plainly does — remove them. 7. Consider stdlib-only string replacement in 8. Unnecessary 9. PR description mentions a two-product split ( Test Coverage10. No test for the 11. CI / WorkflowNo concerns. The matrix strategy, concurrency cancellation, Codecov upload, and lint gate are correctly structured and mirror MistKit's patterns. The SecurityNo concerns. The package only resolves key strings from environment variables and CLI arguments — it does not execute, store, or log values. Summary Table
Overall this is a clean, well-structured extraction and a clear improvement over the duplicated state. The issues above are mostly minor quality and documentation polish rather than correctness bugs. 🤖 Review generated with Claude Code |
…s/ConfigKeyKit subrepo: subdir: "Examples/ConfigKeyKit" merged: "8254da6" upstream: origin: "git@github.com:brightdigit/ConfigKeyKit.git" branch: "main" commit: "8254da6" git-subrepo: version: "0.4.9" origin: "https://github.com/Homebrew/brew" commit: "6f293daa9f"
Code Review — PR #365: Extract ConfigKeyKit into Examples/ConfigKeyKitOverviewThis PR eliminates duplicated This is a good structural refactor — the duplication was a maintenance risk and the canonical MistDemo version was the more complete one. What's working well
Issues to address1. PR description contradicts
|
- Switch macOS scheme from `<PACKAGE>-Package` to just `ConfigKeyKit` (Package.swift uses swift-tools-version 6.2, no auto `-Package` scheme). - Drop Swift 6.1 from Ubuntu/Windows/Android matrices and remove the now-redundant 6.1+wasm excludes. - Drop macos-15 + Xcode 16.3/16.4 entries from build-macos-platforms; those Xcode releases ship Swift 6.1 and can't open a 6.2 manifest. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
subrepo: subdir: "Examples/ConfigKeyKit" merged: "2ec9b84" upstream: origin: "git@github.com:brightdigit/ConfigKeyKit.git" branch: "main" commit: "2ec9b84" git-subrepo: version: "0.4.9" origin: "https://github.com/Homebrew/brew" commit: "6f293daa9f"
Swift Testing's parallel runner dies mid-flight on Windows 6.2 when running the async/actor tests in CommandRegistryTests — the process exits with code 1 after sync tests pass but before most async tests ever finish. Sync tests pass; non-CommandRegistry async tests pass; same suite passes on Windows 6.3, Linux 6.2, and macOS 6.2. Gate the whole CommandRegistry suite with a `.disabled(if:)` trait driven by a `TestEnvironment.isWindowsSwift6_2OrEarlier` static, so Windows 6.3 stays in the matrix without the noise. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
subrepo: subdir: "Examples/ConfigKeyKit" merged: "cd3d609" upstream: origin: "git@github.com:brightdigit/ConfigKeyKit.git" branch: "main" commit: "cd3d609" git-subrepo: version: "0.4.9" origin: "https://github.com/Homebrew/brew" commit: "6f293daa9f"
Code Review: Extract ConfigKeyKit into Examples/ConfigKeyKit Swift packageOverviewThis PR consolidates two divergent in-tree copies of ConfigKeyKit (one in MistDemo, one in BushelCloud) into a single canonical package at IssuesBug / Test GapMissing tests for Lint / Script
CI / Actions
The Design / ArchitecturePR description mentions a Bundling CLI scaffolding ( Platform minimums may be overly restrictive Positives
SummaryThe extraction is architecturally correct and the shared package is cleaner than either predecessor. The test-coverage gap for |
Splits the two divergent in-tree ConfigKeyKit copies (MistDemo and BushelCloud) into one Examples/ConfigKeyKit package with
ConfigKeyKit(base) +ConfigKeyKitCLI(Command, CommandRegistry, etc.) products, both consumers now depending on it via.package(path: "../ConfigKeyKit"). BushelCloud'sbushelPrefixed:conveniences move to a small ConfigKey+BUSHEL extension inside BushelCloudKit, keeping the new package application-neutral. Adds full scaffolding (CI workflow, lint pipeline, mise, LICENSE, README) and asetup-configkeykitcomposite action — placed inside the new package so future consumers can reference it remotely once the subrepo is published, mirroring how setup-mistkit lives in MistKit.For #267.