cargo-install-describe

Crates.iocargo-install-describe
lib.rscargo-install-describe
version0.1.0
created_at2026-01-23 20:14:07.917868+00
updated_at2026-01-23 20:14:07.917868+00
descriptionA cargo subcommand to list installed cargo binaries with descriptions and metadata
homepage
repositoryhttps://git.sr.ht/~danprobst/cargo-install-describe
max_upload_size
id2065390
size44,516
(theHausdorffMetric)

documentation

README

cargo-install-describe

A tool to list installed cargo binaries with descriptions and metadata.

Features

  • Lists all installed Rust packages from cargo install --list
  • Fetches descriptions and metadata for each package using cargo info
  • Multiple output formats: interactive (colored), markdown table, JSON, and plain text
  • Filter packages by name using regex patterns
  • Sort by name or version
  • Output to file or stdout
  • Parallel metadata fetching for speed

Requirements

  • Rust 1.70+ for building from source
  • Cargo 1.68+ at runtime (for cargo info command support)

If cargo info is unavailable or fails for a package (e.g., local path installs), the description and homepage fields will be empty.

Installation

From the project directory:

cargo install --path .

Usage

The tool can be invoked either directly or as a cargo subcommand:

# As a cargo subcommand (recommended)
cargo install-describe

# Or directly
cargo-install-describe

# Markdown table format
cargo install-describe --format markdown

# JSON output
cargo install-describe --format json

# Plain text (one line per package)
cargo install-describe --format plain

# Filter packages by name (regex)
cargo install-describe --filter "^bat|ripgrep"

# Sort by version
cargo install-describe --sort version

# Output to file
cargo install-describe --format markdown --output installed-packages.md

# Combine options
cargo install-describe --format json --filter "^(bat|eza|ripgrep)$" --output packages.json

Options

  • -f, --format <FORMAT> - Output format: markdown, json, plain, interactive (default: interactive)
  • -o, --output <OUTPUT> - Write to file instead of stdout
  • --filter <PATTERN> - Filter packages by name using regex
  • -s, --sort <SORT> - Sort by: name or version (default: name)
  • -h, --help - Show help

Output Examples

Interactive (Default)

Colorized terminal output with package names, versions, descriptions, and homepage links.

Markdown Table

| Package | Version | Description | Homepage |
|---------|---------|-------------|----------|
| bat | 0.26.0 | A cat(1) clone with wings. | https://github.com/sharkdp/bat |
| eza | 0.23.4 | A modern replacement for ls | https://github.com/eza-community/eza |

JSON

{
  "packages": [
    {
      "name": "bat",
      "version": "0.26.0",
      "description": "A cat(1) clone with wings.",
      "homepage": "https://github.com/sharkdp/bat",
      "repository": "https://github.com/sharkdp/bat"
    }
  ]
}

Plain Text

bat 0.26.0 - A cat(1) clone with wings.
eza 0.23.4 - A modern replacement for ls

How It Works

  1. Runs cargo install --list to get installed packages and versions
  2. Uses rayon to fetch metadata for each package in parallel via cargo info
  3. Filters and sorts packages based on options
  4. Formats and outputs the results

Performance

The tool uses parallel processing (via rayon) to fetch metadata for multiple packages simultaneously, making it much faster than sequential fetching.

License

MIT OR Apache-2.0

Commit count: 0

cargo fmt