a fast, easy, simple and lightweight plugin manager for GNU bash
https://git.ari.lt/ari/baz
|
|
||
|---|---|---|
| completions | ||
| doc | ||
| examples/example_plugin | ||
| loader | ||
| scripts | ||
| .clang-format | ||
| .editorconfig | ||
| .gitignore | ||
| .shellcheckrc | ||
| baz | ||
| LICENSE | ||
| loader.sht | ||
| logo.png | ||
| PLUGINS.md | ||
| README.md | ||
a fast, easy, simple and lightweight plugin manager for GNU bash
source code
- /baz -- the plugin manager
- /loader/-- the baz plugin loader files
- /loader.sht-- the pure bash baz plugin loader
credits
- @DannyBen -- for creating an awesome tool for completion: https://github.com/DannyBen/completely
packages
- linux
dependencies
- coreutils
- BASH
- git cli
- optionally any c compiler ( to use the c loader insread of the bash one )
- rlwrap ( optional, but its nice for special keys )
- bash-completion ( optional, but its nice for well ... completion )
but you probably have all of them, maybe not git, but a lot of people do
why baz
- fast
- or at least faster than oh-my-bash and sheldon ( a plugin manager writen in rust ) : https://blog.ari-web.xyz/b/comparison-between-the-oh-my-bash-and-baz-plugin-managers-for-gnu-bash/
- easy
- small
- simple
- minimal
- cross platform
- linux
- gentoo
- void
- debian
- ubuntu
- arch
- ...
- BSD
- FreeBSD
- OpenBSD
- ...
- windows
- git BASH
- windows subsystem for Linux ( WSL )
- wherever you can get BASH on
- android
- most likely ( needs testing, please contribute if you have the resources to do so :) )
- macOS
- iOS
- linux
- GPLv3 licensing
automatic setup
this script hosted on my files site will set up baz automatically, but it might be unstable
$ cd /tmp
$ curl -fL 'https://ari-web.xyz/gh/baz/raw/main/scripts/baz_setup.sh' -o baz_setup.sh
$ bash baz_setup.sh
$ rm -f -- baz_setup.sh
or
cd /tmp && curl -fL 'https://ari-web.xyz/gh/baz/raw/main/scripts/baz_setup.sh' -o baz_setup.sh && bash baz_setup.sh && rm -f -- baz_setup.sh
script configuration :
__BASH_RUNAS: thesudoprogram (sudo)PREFIX: where to installbazto (/usr/bin)- plus the normal vars like
BAZ_LOGGING_ENABLED
plugin indexing
you can leave a link to it in the PLUGINS.md file :)
setup
- clone the repo
$ git clone 'https://ari-web.xyz/gh/baz'
- if you want logging enabled
export BAZ_LOGGING_ENABLED=1
- if non-zero ( its normal dw ) exit codes bother you on the loader run this :
export BAZ_ENSURE_OK=1
- if you never want to use the C loader
export BAZ_NO_CC=1
- set the c compiler ( has to at least support
-o <outfile>and-D MACRO="value"flags )
export CC='clang'
- set the c flags
export CFLAGS='-O3 -s'
- set the stripper ( if none is set the binary wont be stripped )
export STRIP='llvm-strip'
- set the stripper flags
export STRIPFLAGS='--remove-section=.note --strip-all'
- install the script anywhere, or even run it standalone
- running standalone means just running it
- installing could be done in for example
/usr/local/bin:
$ su -c 'install -Dm755 baz /usr/local/bin'
- setup
$ baz setup
Or
$ ./baz setup
- add this to your
~/.bashrc:
export BAZ_LOADER_ENABLED=true
_baz_loader="$HOME/.local/share/baz/loader.sh"
[ ! -f "$_baz_loader" ] || source "$_baz_loader"
this is the main loader for plugins
installing completion
$ ./scripts/comp.sh
uninstallation
Uninstall the baz binaries and then just run:
$ sudo rm -rf ~/.local/share/baz*
help page
$ baz help
upgrading
Just upgrade your package or pull the repo and run :
$ ./baz upgrade
and if you also have completion, rerun the completion script :
$ ./scripts/comp.sh
other docs
examples
debugging
- set
BAZ_DEBUGto any value to any value to debug thebazcli with tracing - set
BAZ_DEBUG_LOADto any value to debug the loader- this only works if
BAZ_LOGGING_ENABLEDwas set during setup time
- this only works if
- add
set -xbefore andset +xafter the loader to enable tracing
