Skip to main content

zack's useful dynamic shell

Project description

zush

zack's useful dynamic shell — a static-index command launcher you extend with plugins.

You declare commands in a plugin; zush rebuild / zush sync indexes them once into ~/.zush/*.json; then zush a.b.c imports (Python) or runs (script) only that one target. No runtime scanning.

How it works

  • Two indexes under ~/.zush/: pyindex.json (Python packages, built by zush rebuild) and repoindex.json (repos, built by zush sync).
  • Dispatch of zush a.b.c: resolve in either index → fire matching pre hooks → run the command → fire post (or error) hooks.
  • Hooks and services work across both plugin types.

Plugin types & features

Topic File
Python package plugins (__zush__.py) docs/python-packages.md
Repo plugins (committed .zush/ tree) docs/repos.md
Commands: the manifest tree & argument parsing docs/commands.md
Hooks: pre/post/error with [] wildcards docs/hooks.md
Services: shared ctx (config, clients, live servers) docs/services.md
CLI reference & environment variables docs/cli.md
Why the rewrite (old vs new philosophy) docs/philosophy.md

Install

From source (requires Python ≥ 3.12); installs the zush command:

pip install -e .        # or: uv pip install -e .

Commands

zush rebuild            # index installed Python-package plugins
zush sync <repo>        # clone/update a repo plugin and index it
zush a.b.c [args]       # run a command
zush --help             # list every indexed command

Develop

uvx --with typer --with click behave                 # tests (Windows: set PYTHONUTF8=1)
uvx ruff check src features                           # lint

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

zush-2.0.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

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

zush-2.0.0-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file zush-2.0.0.tar.gz.

File metadata

  • Download URL: zush-2.0.0.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zush-2.0.0.tar.gz
Algorithm Hash digest
SHA256 bbd263fbd8329853e6d7214aa5aead5fd28da0623ebb6e6e7468f7df81456a62
MD5 c8484bf2d67398006d048d931ad39e97
BLAKE2b-256 6c2d29151fb4764e51884bd7ca7fa842125eddfbc621ed2547d3c070830c1f99

See more details on using hashes here.

Provenance

The following attestation bundles were made for zush-2.0.0.tar.gz:

Publisher: publish.yml on ZackaryW/zush

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zush-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: zush-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zush-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4a255990595b81a0d3d1128f1ac8c9c4665814dac17a4e2c2d2791dc19d9c4d7
MD5 8ac4c30e810a9b9662e2f02b43fbdb44
BLAKE2b-256 fd48ce090ebdf9b546c30f2b99c77e3dc18fa7a8bccbeed42a75882db1b04109

See more details on using hashes here.

Provenance

The following attestation bundles were made for zush-2.0.0-py3-none-any.whl:

Publisher: publish.yml on ZackaryW/zush

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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