lib | ||
bpkg | ||
bpkg-install | ||
bpkg-json | ||
bpkg-package | ||
bpkg-term | ||
bpkg.sh | ||
install.sh | ||
LICENSE | ||
Makefile | ||
package.json | ||
README.md |
bpkg
Lightweight bash package manager
install
Install script:
$ curl -Lo- https://raw.githubusercontent.com/bpkg/bpkg/master/install.sh | bash
clib:
$ clib install bpkg/bpkg
source:
$ git clone https://github.com/bpkg/bpkg.git
$ cd bpkg
$ make install
usage
installing package
global:
$ bpkg install term -g
project: (installs into deps/
)
$ bpkg install term
versioned:
$ bpkg install jwerle/suggest.sh@0.0.1 -g
note: Versioned packages must be tagged releases by the author.
package info
From the root of a package directory:
$ bpkg package name
"bpkg"
$ bpkg package version
"0.0.5"
$ bpkg package
["name"] "bpkg"
["version"] "0.0.5"
["description"] "Lightweight bash package manager"
["global"] true
["install"] "make install"
package.json
name
The name
attribute is required as it is used to tell bpkg
where to
put it in the deps/
directory in you project.
"name": "my-script"
version
The version
attribute is not required but can be useful. It should
correspond to the version that is associated with the installed package.
"version": "0.0.1"
description
A human readable description of what the package offers for functionality.
"description": "This script makes monkeys jump out of your keyboard"
global
Indicates that the package is only intended to be install as a script.
This allows the ommition of the -g
or --global
flag during
installation.
"global": "true"
install
Shell script used to invoke in the install script. This is required if
the global
attribute is set to true
or if the -g
or --global
flags are provided.
"install": "make install"
scripts
This is an array of scripts that will be installed into a project.
"scripts": ["script.sh"]
best practices
package exports
Its nice to have a bash package that can be used in the terminal and also be invoked as a command line function. To achieve this the exporting of your functionality should follow this pattern:
if [[ ${BASH_SOURCE[0]} != $0 ]]; then
export -f my_script
else
my_script "${@}"
exit $?
fi
This allows a user to source
your script or invoke as a script.
$ ./my_script.sh some args --blah
or
$ source my_script.sh
$ my_script some more args --blah
license
MIT