vsix

Crates.iovsix
lib.rsvsix
version1.0.2
created_at2025-08-14 05:58:31.01998+00
updated_at2025-08-14 06:27:44.241207+00
descriptionA command-line utility that downloads and installs .vsix extensions into Visual Studio Code and Cursor
homepagehttps://github.com/beeltec/vsix
repositoryhttps://github.com/beeltec/vsix
max_upload_size
id1794482
size172,237
Christian Beelte (beeltec)

documentation

https://docs.rs/vsix

README

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.

Commit count: 0

cargo fmt