feat: add pactflow-ai / pact-ruby-standalone via extensions framework#8
Merged
feat: add pactflow-ai / pact-ruby-standalone via extensions framework#8
Conversation
```bash # Install extensions pact extension install pactflow-ai pact extension install pact-ruby-standalone # List with version info pact extension list # Output: # Name Type Installed Latest Status # pactflow-ai PactFlow AI 1.11.4 1.11.4 ✅ Installed # pact-broker-legacy Ruby Legacy v2.5.5 v2.5.5 ✅ Installed # Use PactFlow AI seamlessly pact pactflow ai --help # Maps to pactflow-ai binary # Use legacy tools pact extension pact-broker-legacy can-i-deploy --pacticipant my-app ```
This was referenced Oct 25, 2025
Member
|
wow! Yousaf, I'll set aside some time next week to go through all of your CLI magic ✨ |
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.
feat: Add comprehensive extension system for Pact CLI
🎯 Summary
This PR introduces a powerful extension system to the Pact CLI that enables seamless installation, management, and execution of additional tools and legacy binaries. The system supports both modern Rust-based extensions (like PactFlow AI) and traditional Ruby-based tools (pact-standalone), with intelligent version tracking and cross-platform compatibility.
✨ Key Features
Extension Management
Command Integration
pact pactflow aimaps topactflow-aibinarypact extension <name>syntaxPlatform Support
🔧 Implementation Details
Core Components
ExtensionManager- Central management class handling:~/.pact/extensions/config.jsonExtension Types:
PactflowAi- Modern Rust binaries from download.pactflow.ioPactRubyStandalone- Legacy Ruby tools from GitHub releasesExternal- User-installed binariesCLI Integration:
pact extensionsubcommand with full management capabilitiespact pactflowcommand supporting external extensionsTechnical Highlights
--versionoutput parsingCode Structure
🧪 Testing
Verified Functionality
pact pactflow ai --help)Example Usage
📦 Dependencies Added
reqwest = "0.12.0"- HTTP client for downloading binariesserde = "1.0"- Configuration serializationserde_json = "1.0"- JSON handling for config fileshome = "0.5.5"- Cross-platform home directory detection🔄 Migration & Compatibility
extensionsubcommand~/.pact/extensions/(configurable viaPACT_CLI_EXTENSIONS_HOME)🎉 User Impact
This extension system bridges the gap between modern Pact tooling and legacy workflows, enabling users to:
The system provides a foundation for the Pact CLI ecosystem to evolve while maintaining compatibility and ease of use.