You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bpkg/README.md

165 lines
2.5 KiB
Markdown

10 years ago
bpkg
====
Lightweight bash package manager
10 years ago
## install
**Install script:**
```sh
$ curl -Lo- https://raw.githubusercontent.com/bpkg/bpkg/master/install.sh | bash
```
**[clib](https://github.com/clibs/clib):**
```sh
$ clib install bpkg/bpkg
```
**source:**
```sh
10 years ago
$ git clone https://github.com/bpkg/bpkg.git
$ cd bpkg
$ make install
```
10 years ago
## usage
### installing package
*global:*
```sh
$ bpkg install term -g
```
*project:* (installs into `deps/`)
```sh
$ bpkg install term
```
*versioned:*
```sh
$ 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:
```sh
$ bpkg package name
"bpkg"
```
```sh
$ bpkg package version
"0.0.5"
```
```sh
$ 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.
```json
"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.
```json
"version": "0.0.1"
```
### description
A human readable description of what the package offers for
functionality.
```json
"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.
```json
"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.
```json
"install": "make install"
```
### scripts
This is an array of scripts that will be installed into a project.
```json
"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:
```sh
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.
10 years ago
```sh
$ ./my_script.sh some args --blah
```
10 years ago
or
```sh
$ source my_script.sh
$ my_script some more args --blah
```
10 years ago
## license
MIT