Bashers
Installable CLI command helpers (written in Rust)
Installation
Quick Install (Recommended)
Install with a single command:
|
Or specify a version:
|
The script will:
- Download the Linux x86_64 binary from GitHub releases
- Install to
~/.local/bin/bashers(andbsalias) - Add to PATH if needed
Note: Linux x86_64 only. For other platforms/architectures, use pip or build from source.
pip (PyPI)
Or with uv:
From Source
Or from git:
Both bashers and bs binaries are installed.
Manual Build
# Binary at target/release/bashers
# Copy to ~/.local/bin/ or /usr/local/bin/
Usage
Both bashers and bs are available (e.g. bs update, bashers update).
Verify the command is on PATH:
The binary will be installed to ~/.cargo/bin/bashers by default (when using cargo install).
Make sure ~/.cargo/bin is in your PATH.
Commands
- update - Update Python dependencies (uv/poetry) with fuzzy package matching
- setup - Install project dependencies (uv/poetry)
- show - List installed packages (uv/poetry)
- gh - Git home: checkout default branch, pull, fetch all
Features
- Fuzzy matching - Find packages with partial names (e.g.,
bashers update indimatchesindicodata-core) - fzf integration - Interactive selection when multiple matches found
- uv & poetry support - Works with both package managers
- Color output - Beautiful colored terminal output
- Dry-run mode - Preview commands before executing
Development
Prerequisites
- Rust and Cargo installed (rustup.rs)
- For testing:
cargo-tarpaulin(optional, for coverage)
Building
# Debug build
# Release build (optimized)
# Binary location
# Debug: target/debug/bashers
# Release: target/release/bashers
Running
# Run directly with cargo (quiet mode to suppress build output)
# Or use the built binary (recommended for testing)
Testing
# Run all tests
# Run only unit tests
# Run only integration tests
# Run with output
# Run specific test
Code Coverage
# Install cargo-tarpaulin
# Generate coverage report
# View coverage (if HTML generated)
Code Quality
# Format code
# Check formatting
# Lint with clippy
# Lint with strict warnings
Development Workflow
# 1. Make changes
# 2. Check code compiles
# 3. Run tests
# 4. Format code
# 5. Check for issues
# 6. Build release
Adding New Commands
- Add a new command module in
src/commands/ - Implement the command function
- Add the command variant to
src/cli.rs - Wire it up in
src/main.rs - Rebuild:
cargo build
Releasing
See RELEASING.md for instructions on creating a new release.
Quick summary: Push a version tag (e.g., v0.4.9) to trigger the automated release workflow, which builds the binary and creates a GitHub Release.