Bashers
Installable CLI command helpers (written in Rust)
Installation
Requires Rust (cargo).
From crates.io (recommended)
Both bashers and bs are installed to ~/.cargo/bin. Ensure ~/.cargo/bin is in your PATH and that it comes before any other path that might provide a different bashers (e.g. pyenv shims):
From source
Or from git:
Manual build
# Binary at target/release/bashers; copy to ~/.cargo/bin/ or /usr/local/bin/
Usage
Both bashers and bs are available. Run bashers or bashers --help for the full command list.
Verify you're running the Rust binary (e.g. not a pyenv shim):
Commands
| Command | Description |
|---|---|
| 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 |
| kube | Kubernetes helpers: kmg (describe pods / Image), track (follow logs) |
| self | Self-management: update (upgrade bashers) |
| version | Print version |
Use bashers <command> --help for options.
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: Releases are automated via release-plz on push to main: version/changelog PR, merge, then publish to crates.io and create a GitHub Release.