vsix 1.0.2

A command-line utility that downloads and installs .vsix extensions into Visual Studio Code and Cursor
Documentation

vsix

Crates.io Version Crates.io Downloads License Build Status CI Status GitHub Stars Rust Version docs.rs Dependencies

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

macOS Linux Windows

Installation

Homebrew (macOS and Linux)

# Coming soon - after first release
brew tap beeltec/vsix
brew install vsix

Cargo

cargo install vsix

Build from source

# Clone the repository
git clone https://github.com/beeltec/vsix.git
cd vsix

# Build the project
cargo build --release

# 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

vsix search python

# Sort by name
vsix search rust --sort name

# Limit results
vsix search python --limit 10

# Reverse sort order
vsix search vscode --sort downloads --reverse

Install an extension

# Install to VSCode (default)
vsix install ms-python.python

# Install to Cursor
vsix install ms-python.python --cursor

Use custom marketplace

vsix --marketplace https://custom.marketplace.com search rust

Development

Prerequisites

  • Rust 1.88 or higher
  • Cargo

Running tests

# Run all tests
cargo test

# Run tests with output
cargo test -- --nocapture

# Run specific test
cargo test test_architecture_detection

Building

# Development build
cargo build

# Release build (optimized)
cargo build --release

# Run directly with cargo
cargo run -- search python

Code Quality

# Format code
cargo fmt

# Run linter
cargo clippy

# Fix warnings
cargo fix

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

Issues Pull Requests Contributors Last Commit

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

MIT License

This project is licensed under the MIT License - see the LICENSE file for details.