Skip to main content

Installable cli helpers

Project description

Bashers

CLI command helpers in Rust. Install as bashers or bs; both binaries go to the same place.

Installation

  • Cargo: cargo install bashers
    Puts bashers and bs in ~/.cargo/bin. Ensure that directory is in PATH (and before pyenv/shims if you use pyenv).

  • PyPI: pip install bashers or pip install --upgrade bashers
    Wheels for Python 3.11, 3.12, 3.13. If you're on 3.13 and see an old version, a 3.13 wheel may not exist yet—use the next release, or install from Cargo/repo.

  • From repo:
    ./scripts/install.sh
    Or: curl -sSf https://raw.githubusercontent.com/Sung96kim/bashers/main/scripts/install.sh | sh
    Use --no-path to skip profile changes.

Usage

bashers update                    # deps (optional packages; fuzzy match; -v verbose, -y auto-select)
bashers update -v pkg1 pkg2       # selected packages, show tool output at end
bashers setup                     # install deps (--frozen, --rm, --dry-run)
bashers show                      # list packages
bashers git sync                  # default branch, pull, fetch (--current = current branch only)
bashers kube kmg <pattern>        # pod describe + Image lines
bashers kube track <pattern>      # follow logs (--err-only, --simple)
bashers docker build [-f <path>]  # Dockerfile (default ./Dockerfile; -t tag, --no-cache, -c context)
bashers watch -n 2 -- <cmd>       # run repeatedly, highlight changes (-n interval, --no-diff)
bashers self update               # upgrade bashers
bashers version

bs works as an alias for bashers (e.g. bs sync, bs build). Run bashers <cmd> --help for options.

Commands

Command Description
update Deps (cargo/uv/poetry). Optional package names (fuzzy match, multi-select). -v show tool output at end, -y auto-select.
setup Install project deps.
show List installed packages.
git sync (default branch or --current).
kube kmg, track.
docker build (optional Dockerfile path, tag, no-cache, context).
watch Run on an interval, diff highlight (green = changed).
self update.
version Print version.

Features

  • Fuzzy package matching; multi-select when multiple matches
  • cargo, uv & poetry
  • Color output, dry-run

Development

Build & test

cargo build
cargo build --release
cargo test

Run a single test: cargo test test_fuzzy_match_exact

Code quality

cargo fmt
cargo clippy -- -D warnings

Running locally

Method Command
Via cargo cargo run --quiet -- <cmd>
Binary ./target/debug/bashers <cmd>
No install (script) ./scripts/local.sh <cmd>

Set NO_SPINNER=1 to disable the spinner.

Scripts (no install)

  • ./scripts/local.sh <cmd> — Runs the repo binary via cargo run --bin bashers. Example: ./scripts/local.sh update.
  • ./scripts/setup-local.sh — Runs cargo check, cargo build, cargo test, then reminds you to use ./scripts/local.sh.

Coverage

cargo install cargo-tarpaulin --locked
cargo tarpaulin --out Xml --output-dir coverage --timeout 120

Python wheel (build & test)

  1. Install maturin: pip install maturin

  2. From repo root, build: maturin build --release --features pyo3
    Wheels are written to target/wheels/.

  3. Install with a matching Python (e.g. 3.13):

    python3 -m pip install --force-reinstall target/wheels/bashers-*-cp313-*.whl
    
  4. Confirm: bashers --help or bashers version

Adding a new command

  1. Add a module under src/commands/ (or src/commands/<group>/).
  2. Add the variant in src/cli.rs and wire it in src/lib.rs.
  3. Run cargo build.
  4. Update the Usage section and Commands table in this README.

Releasing

Automated (release-plz): On push to main, use Conventional Commits: feat: (minor), fix: (patch), feat!: or BREAKING CHANGE: (major). Push → version/changelog PR → merge → publish to crates.io and GitHub Release. The tag and GitHub Release are created in the workflow run triggered by the merge. Set CARGO_REGISTRY_TOKEN for crates.io. First time: run cargo publish once so release-plz knows the current version.

Manual: Bump version in Cargo.toml, tag vX.Y.Z, push tag; workflow builds and creates the GitHub Release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bashers-0.8.8.tar.gz (62.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

bashers-0.8.8-cp313-cp313-manylinux_2_39_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

bashers-0.8.8-cp312-cp312-manylinux_2_39_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

bashers-0.8.8-cp311-cp311-manylinux_2_39_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

bashers-0.8.8-cp310-cp310-manylinux_2_39_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

File details

Details for the file bashers-0.8.8.tar.gz.

File metadata

  • Download URL: bashers-0.8.8.tar.gz
  • Upload date:
  • Size: 62.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bashers-0.8.8.tar.gz
Algorithm Hash digest
SHA256 aff2ea4b1e6774aec1495aa4056f0fe703b3935ac2603deb912b13ef8b575374
MD5 6c8ebcca33a86a56e60682aead96a0e1
BLAKE2b-256 7ce34e0abdcf1326237e45b64cec7c25ee08339bab88eb3c05f9b67690a7e657

See more details on using hashes here.

File details

Details for the file bashers-0.8.8-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for bashers-0.8.8-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a65eef62c1d1e8664681ea44dcd7c564c308361bf752ec06349dc2636fc3d702
MD5 c33c7f70800ebd0cbff32daa4c898cc8
BLAKE2b-256 e4ee2e7dc07a47fc8cdba3ed16ac11d8ab57e9089fa34b6b94cb4249e6a3b572

See more details on using hashes here.

File details

Details for the file bashers-0.8.8-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for bashers-0.8.8-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 263f3577ef77d2f6dab72cbc88fe17344059cf0fda12037692a29f452178313e
MD5 1c7abc6c1dcf86e2d98c58894525083a
BLAKE2b-256 a2ed9ddfac3731d45054c3247360330f9b40623adf06bf959c0297198896b091

See more details on using hashes here.

File details

Details for the file bashers-0.8.8-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for bashers-0.8.8-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 7486d0af01a01ac725bd63793c46128974bd63988b94d7680f487c7db4666256
MD5 381964eb1fe6a52f841fc197b1927d55
BLAKE2b-256 57542ae11a03fb638704720ef3167c0815b69ecac011a73306a1eb2f7621333d

See more details on using hashes here.

File details

Details for the file bashers-0.8.8-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for bashers-0.8.8-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1ba02e2005bea7d63400702a1bf8a5574c58e7545e8700463f61051e216dddd8
MD5 ae6f85fce6952305a6d8a3f298ea3d7c
BLAKE2b-256 b98fc6de3b274721dd2b7081d09eb0141c25d8db88faf210a1821aed390a2283

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page