vsixHarvester

Crates.iovsixHarvester
lib.rsvsixHarvester
version0.1.9
created_at2024-11-08 05:48:58.821737+00
updated_at2025-05-11 04:28:06.355121+00
descriptionA CLI tool to download VSCode extensions from extensions.json
homepagehttps://github.com/ShortArrow/vsixHarvester
repositoryhttps://github.com/ShortArrow/vsixHarvester
max_upload_size
id1440862
size141,847
(ShortArrow)

documentation

https://github.com/ShortArrow/vsixHarvester

README

vsixHarvester

VSCode Extension Downloader in Rust

This Rust program reads the recommendations array from an extensions.json file and downloads the corresponding VSIX packages for Visual Studio Code extensions.

Features

  • Reads a list of extensions from extensions.json.
  • Downloads the latest version of each extension as a VSIX package.
  • Supports proxy configuration.
  • Option to force re-download even if the file already exists.
  • Provides verbose output for detailed logging.
  • Downloads a single extension by its ID.

Prerequisites

  • Rust and Cargo installed on your system. You can install them from rustup.rs.

Installation

cargo install vsixHarvester

Usage

vsixHarvester [OPTIONS]

Options

  • -i, --input <INPUT>: Path to the extensions.json file. Default is ./.vscode/extensions.json.
  • -d, --destination <DESTINATION>: Destination folder to save the VSIX files. Default is ./.vscode/extensions.
  • -f, --force: Force re-download even if the extension file already exists.
  • --proxy <PROXY>: Proxy URL to use for HTTP requests.
  • -v, --verbose: Enable verbose output for detailed logging.
  • -h, --help: Print help information.
  • -a, --arch <ARCHITECTURE>: OS architecture to install the extensions for.
  • -s, --single <EXTENSION_ID>: Download a single extension by its ID (e.g., publisher.extensionName). If this option is used, --input is ignored.

Example

vsixHarvester \
  --input ./your/path/to/extensions.json \
  --destination ./your/path/to/extensions \
  --force \
  --arch win32-x64 \
  --verbose

To download a single extension:

vsixHarvester \
  --single publisher.extensionName \
  --force \
  --arch win32-x64 \
  --destination ./extensions \
  --verbose
Architecture options
  • win32-x64
  • win32-arm64
  • darwin-x64
  • darwin-arm64
  • linux-x64
  • linux-arm64
  • alpine-x64
  • alpine-arm64
  • win32-ia32
  • linux-armhf
  • web

Platform-specific

extensions.json Format

The extensions.json file should have the following structure:

{
  "recommendations": [
    "publisher.extensionName",
    "anotherPublisher.anotherExtensionName",
    // Add more extensions as needed
  ]
}

Thanks

Commit count: 91

cargo fmt