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
Putsbashersandbsin~/.cargo/bin. Ensure that directory is in PATH (and before pyenv/shims if you use pyenv). -
PyPI:
pip install bashersorpip 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-pathto 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 viacargo run --bin bashers. Example:./scripts/local.sh update../scripts/setup-local.sh— Runscargo 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)
-
Install maturin:
pip install maturin -
From repo root, build:
maturin build --release --features pyo3
Wheels are written totarget/wheels/. -
Install with a matching Python (e.g. 3.13):
python3 -m pip install --force-reinstall target/wheels/bashers-*-cp313-*.whl
-
Confirm:
bashers --helporbashers version
Adding a new command
- Add a module under
src/commands/(orsrc/commands/<group>/). - Add the variant in
src/cli.rsand wire it insrc/lib.rs. - Run
cargo build. - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aff2ea4b1e6774aec1495aa4056f0fe703b3935ac2603deb912b13ef8b575374
|
|
| MD5 |
6c8ebcca33a86a56e60682aead96a0e1
|
|
| BLAKE2b-256 |
7ce34e0abdcf1326237e45b64cec7c25ee08339bab88eb3c05f9b67690a7e657
|
File details
Details for the file bashers-0.8.8-cp313-cp313-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: bashers-0.8.8-cp313-cp313-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a65eef62c1d1e8664681ea44dcd7c564c308361bf752ec06349dc2636fc3d702
|
|
| MD5 |
c33c7f70800ebd0cbff32daa4c898cc8
|
|
| BLAKE2b-256 |
e4ee2e7dc07a47fc8cdba3ed16ac11d8ab57e9089fa34b6b94cb4249e6a3b572
|
File details
Details for the file bashers-0.8.8-cp312-cp312-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: bashers-0.8.8-cp312-cp312-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
263f3577ef77d2f6dab72cbc88fe17344059cf0fda12037692a29f452178313e
|
|
| MD5 |
1c7abc6c1dcf86e2d98c58894525083a
|
|
| BLAKE2b-256 |
a2ed9ddfac3731d45054c3247360330f9b40623adf06bf959c0297198896b091
|
File details
Details for the file bashers-0.8.8-cp311-cp311-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: bashers-0.8.8-cp311-cp311-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.11, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7486d0af01a01ac725bd63793c46128974bd63988b94d7680f487c7db4666256
|
|
| MD5 |
381964eb1fe6a52f841fc197b1927d55
|
|
| BLAKE2b-256 |
57542ae11a03fb638704720ef3167c0815b69ecac011a73306a1eb2f7621333d
|
File details
Details for the file bashers-0.8.8-cp310-cp310-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: bashers-0.8.8-cp310-cp310-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ba02e2005bea7d63400702a1bf8a5574c58e7545e8700463f61051e216dddd8
|
|
| MD5 |
ae6f85fce6952305a6d8a3f298ea3d7c
|
|
| BLAKE2b-256 |
b98fc6de3b274721dd2b7081d09eb0141c25d8db88faf210a1821aed390a2283
|