Modular bash
using require(3) for *NIX systems. Depends upon bash >= 4.2
for some useful features.
Brings structure and modularity to bash
programs and provides a set of modules that can be used from any bash
program.
This software is currently under development in the 0.x.x version range and is released using the semver(7) semantic versioning specification.
- Write portable and maintainable code using require(3)
- Make your program pretty, use console(3) for ANSI escape sequences
- Improve code legibility without sacrificing terseness by using the various helper modules such as method(3), array(3) and string(3)
- Use delegate(3) to easily map options to commands
- Be safe, declare
process.use strict
- Daemonize any process with
process.daemon.start!
- Make a process behave as a singleton with
process.lock.use!
- Easily add PID file management with
process.pid.use!
- Map trap signals to command methods with the
process.signal.*
commands, see process(3)
- Write test-driven programs using the
test
task for bake(1) - Use assert(3) to perform inline assertions
- Document your program using inline heredoc comments and publish to html and man pages using the
doc.*
tasks for bake(1) - Publish documentation as github pages with the
doc.pages.push
bake(1) task - Easily display program help as man pages with help(3)
- Read and write JSON data using json(3)
- Use bake(1) to automate common tasks
- Intermingle rake(1) with bake(1) tasks if you like
- bash >= 4.2
Most modern distributions ship with the binaries that some parts of the library depend upon. However on extremely minimal distributions you should install the list below.
It is recommended (although not essential) that you have these executables:
BSD users (that's OS X users too) should install GNU versions for find(1)
and tar(1)
.
To install the library code as a dependency for a project into the node_modules
sub-folder use:
npm install strike
If you want the supplied executables to be available in $PATH
use the global flag:
npm install -g strike
The project documentation is available as html man pages.
Developers should have node(1) (which includes npm(1)) in order to run the tests.
For illustrative purposes the ./bake test
runner is also available using the following commands:
If you prefer npm(1) use the test
command:
npm test
If you prefer rake(1) use the test
task:
rake test
If you prefer ant(1) use the test
target:
ant test
If you prefer mvn(1) use the test
goal:
mvn test
To verify all build tools are executing tests correctly use this one-liner:
npm test && rake test && ant test && mvn test && ./bake test
Some dependencies required to run the tests that may not be available on very minimal installations:
- zip(1)
- unzip(1)
- tar(1)
- man(1)
In addition it is recommended for all tests to run that you have the following executables and an active internet connection:
- gcc(1)
- curl(1)
- pdflatex(1)
- jsonlint(1)
Documentation for the repository is generated using ronn(1) which must be installed, to generate documentation use task-doc(7):
npm run-script doc
Which is an alias for:
./bake doc man build
Note that currently you will need to apply this patch to ronn(1) for documentation to build correctly.