vsix
A command-line utility that downloads and installs .vsix extensions into Visual Studio Code and Cursor
Features
- Search for extensions in the Visual Studio Code marketplace
- Install extensions to Visual Studio Code or Cursor
- Automatic system architecture detection
- Beautiful table display for search results
- Support for custom marketplace URLs
Platform Support
Installation
Homebrew (macOS and Linux)
# Coming soon - after first release
Cargo
Build from source
# Clone the repository
# Build the project
# The binary will be available at ./target/release/vsix
Download prebuilt binaries
Prebuilt binaries are available from the releases page for:
- macOS (Intel and Apple Silicon)
- Linux (x86_64)
- Windows (x86_64)
Usage
Search for extensions
# Sort by name
# Limit results
# Reverse sort order
Install an extension
# Install to VSCode (default)
# Install to Cursor
Use custom marketplace
Development
Prerequisites
- Rust 1.88 or higher
- Cargo
Running tests
# Run all tests
# Run tests with output
# Run specific test
Building
# Development build
# Release build (optimized)
# Run directly with cargo
Code Quality
# Format code
# Run linter
# Fix warnings
Project Structure
src/
├── domain/ # Core business logic and domain model
│ ├── entities.rs # Extension entity
│ ├── errors.rs # Domain-specific errors
│ ├── installation_strategy.rs # Installation strategy pattern
│ ├── repositories.rs # Repository trait definitions
│ ├── sort.rs # Sorting functionality
│ └── value_objects.rs # Architecture detection
├── application/ # Application layer - use cases
│ ├── install_use_case.rs # Improved installation use case
│ ├── services.rs # Application service facade
│ └── use_cases.rs # Search and legacy install use cases
├── infrastructure/ # External service implementations
│ ├── file_system.rs # File system operations
│ ├── installation_service.rs # Installation detection and execution
│ ├── marketplace_client.rs # VSCode marketplace API client
│ └── marketplace_tests.rs # Integration tests for marketplace
├── presentation/ # User interface layer
│ ├── cli.rs # CLI argument parsing
│ └── display.rs # Output formatting and tables
├── lib.rs # Library entry point
└── main.rs # Application entry point
Architecture
This project follows Domain-Driven Design (DDD) principles with a clean architecture:
- Domain Layer: Contains business logic, entities, and domain services
- Application Layer: Orchestrates use cases and coordinates domain objects
- Infrastructure Layer: Implements external service integrations
- Presentation Layer: Handles user interaction and display
The architecture emphasizes:
- Separation of Concerns: Each layer has a specific responsibility
- Dependency Inversion: Domain and application layers don't depend on infrastructure
- SOLID Principles: Single responsibility, open/closed, and interface segregation
- Test-Driven Development: Comprehensive test coverage at all layers
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Development Guidelines
- Follow Rust best practices and idioms
- Write tests for new functionality
- Ensure all tests pass before submitting PR
- Follow the existing code structure (DDD architecture)
- Update documentation when needed
Transparency
This application was developed with assistance from Claude Code, an AI coding assistant. Claude Code helped with code implementation, testing, documentation, and CI/CD pipeline setup.
License
This project is licensed under the MIT License - see the LICENSE file for details.