Conversation
- Add SwiftPackageManagerKit library target to Package.swift - Create Sources/SwiftPackageManagerKit directory structure with Models, Execution, Analysis, Validation, and Utilities subdirectories - Add initial SwiftPackageManagerKit.swift with version info - Verify target builds successfully - Complete task 1.1: SwiftPackageManagerKit target setup 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…tion Process - Implement comprehensive SPM JSON model classes (SPMPackageInfo, SPMProduct, SPMTarget, SPMDependency, SPMPlatform) - Create ProcessRunner using Foundation Process with async/await wrapper - Add SPMExecutor with methods for dump-package, resolve, build, and test operations - Support timeout handling, error management, and working directory configuration - Add integration test methods to verify full stack functionality - All models handle complex nested JSON structure from swift package dump-package - Complete subtasks 1.1, 1.2, and 1.3 with working implementation Next: Will upgrade to Swift 6.1 and implement swift-subprocess properly 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Implement SPMAnalyzer for package data parsing - Add SPMValidator with structure, version, and platform validation - Mark task 1 and subtasks as complete - Add comprehensive analysis and validation capabilities 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Add main SDK entry point with builder pattern foundation: - PackageDSLManager class with @mainactor and Sendable compliance - Properties for package configuration (URL, name, products, targets, dependencies) - Initialization methods with package URL and optional custom name - createPackage method supporting library/executable/empty types - Builder pattern with fluent API design - Internal specifications property for PackageSpecifications conversion 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add generatePackageSwift() method to PackageDSLManager - Integrate with existing PackageWriter for DSL component file generation - Add helper methods hasDSLComponents() and hasTraditionalPackageSwift() - Implement proper error handling with PackageError mapping - Create integration tests for PackageDSLManager functionality - Task 2.5 marked for review - core SDK implementation nearly complete 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit completely removes SwiftSyntax dependencies from PackageDSLKit core while preserving all functionality through SyntaxKit integration and SPM JSON parsing. ## Key Changes ### 🗑️ SwiftSyntax Dependencies Removed - Removed swift-syntax dependency from Package.swift - Removed SwiftSyntax, SwiftParser, SwiftSyntaxBuilder products from PackageDSLKit target - SyntaxKit package remains isolated and can continue using SwiftSyntax internally ### 🔄 Parsing Architecture Migration - **PackageParser**: Migrated from SwiftSyntax parsing to SPM JSON parsing via SPMExecutor.dumpPackage() - **PackageIndexWriter**: SwiftSyntax code generation replaced with SyntaxKit alternatives - **SupportCodeBlock**: Replaced SwiftSyntax parsing with direct string reading - **PropertyWriter**: Now uses SyntaxKit's Literal.ref() instead of direct SwiftSyntax types ### 🗂️ Removed Legacy Files - PropertyVisitor.swift (SwiftSyntax-based parsing) - PackageVisitor.swift (SwiftSyntax-based parsing) - ParsingStrategy.swift (SwiftSyntax-based parsing) - StructureStrategy.swift (SwiftSyntax-based parsing) - PackageIndexStrategy.swift (SwiftSyntax-based parsing) - ImportDeclSyntax.swift (deprecated, replaced by SyntaxKit) - ParsingResult.swift (SwiftSyntax-based data structures) ### ✨ New SPM Integration Created SPM → PackageDSLKit conversion initializers: - Product.init(spmProduct:) - Converts SPM products to PackageDSLKit products - Dependency.init(smpDependency:) - Converts SPM dependencies - Target.init(smpTarget:) - Converts regular/executable targets - TestTarget.init(smpTarget:) - Converts test targets - SupportedPlatformSet.init(smpPlatforms:) - Converts platform requirements ### 🔧 Infrastructure Updates - Updated CLI commands to use AsyncParsableCommand for async PackageParser - Fixed PackageWriter to support Target.self component type - Replaced SwiftSyntax-based PackageDirectoryConfiguration with SPM-based initialization ### ✅ Clean Architecture - **PackageDSLKit**: SwiftSyntax-free, uses SPM JSON parsing and SyntaxKit for code generation - **SyntaxKit**: Isolated package continuing to use SwiftSyntax internally (as intended) - **Clear separation**: PackageDSLKit → SPM + SyntaxKit, SyntaxKit → SwiftSyntax All tests pass. Build successful. SwiftSyntax removal complete. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…egration tests - Add generateTraditionalPackageSwift() method for SPM compatibility - Fix validate() method to generate proper Package.swift for SPM validation - Make ValidationResult Sendable to resolve concurrency issues - Add comprehensive integration tests: - Complex package configuration with multiple targets/products/dependencies - Full SPM command validation (dump-package, resolve, build) - DSL and traditional Package.swift coexistence testing - Real Swift package creation and compilation verification All PackageDSLManager tests now pass with full SPM integration validation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…ame files - Remove SPM prefix from all types (SPMPackageInfo -> PackageInfo, SPMTarget -> Target, etc.) - Rename all corresponding files to match new type names - Remove namespace-conflicting SwiftPackageManagerKit struct - Update all cross-module references to use proper qualification - All tests passing with cleaner, more intuitive API 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
subrepo: subdir: "Packages/SyntaxKit" merged: "03359e2" upstream: origin: "git@github.com:brightdigit/SyntaxKit.git" branch: "packagedslkit" commit: "03359e2" git-subrepo: version: "0.4.9" origin: "https://github.com/Homebrew/brew" commit: "4d14be89e9"
subrepo: subdir: "Packages/SyntaxKit" merged: "e378d09" upstream: origin: "git@github.com:brightdigit/SyntaxKit.git" branch: "packagedslkit" commit: "e378d09" git-subrepo: version: "0.4.9" origin: "https://github.com/Homebrew/brew" commit: "4d14be89e9"
…ency - Remove custom validation logic from PackageSpecifications - Add back conditional swift-log dependency for non-Apple platforms - Improve SwiftPackageManagerKit model parsing reliability - Clean up debug output and error handling in dependency parsing 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <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 You can disable this status message by setting the ✨ Finishing Touches🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## syntaxkit #12 +/- ##
============================================
Coverage ? 16.56%
============================================
Files ? 191
Lines ? 8215
Branches ? 0
============================================
Hits ? 1361
Misses ? 6854
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:
|
- Split 545-line PackageDSLManager.swift into smaller, manageable files - Create separate extensions for different responsibilities: - PackageDSLManager+ProductManagement.swift - Product operations - PackageDSLManager+DependencyManagement.swift - Dependency operations - PackageDSLManager+FluentAPI.swift - Convenience methods - PackageDSLManager+TargetManagement.swift - Target and package creation - Change fileprivate(set) to internal(set) for extension access - Use explicit internal import Foundation statements - Fix critical file length linting error (545 → 121 lines in main file) - Maintain all existing functionality and API compatibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Split VersionRequirement.asSPMString() into smaller methods to reduce cyclomatic complexity - Extract Executor methods into separate extension files: - Executor+Commands.swift: SPM command methods (dumpPackage, buildPackage, etc.) - Executor+Utilities.swift: Convenience utility methods - Centralize error handling in handleProcessRunnerError() method - Reduce main Executor.swift from 249 lines to 83 lines - Maintain same public API with no breaking changes - Update ProcessRunner with typed throws syntax Fixes file length and cyclomatic complexity linting violations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
* "Claude PR Assistant workflow" * "Claude Code Review workflow"
No description provided.