Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Modular bash using require(3) for *NIX systems

branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README.md

Strike

Modular bash using require(3) for *NIX systems. Depends upon bash >= 4.2 for some useful features.

Synopsis

Brings structure and modularity to bash programs and provides a set of modules that can be used from any bash program.

Semantic Versioning

This software is currently under development in the 0.x.x version range and is released using the semver(7) semantic versioning specification.

Features

Core

Process

  • 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)

Test

  • Write test-driven programs using the test task for bake(1)
  • Use assert(3) to perform inline assertions

Documentation & Help

  • 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)

Extensions & Executables

Prerequisites

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).

Installation

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

Documentation

The project documentation is available as html man pages.

Developers

Developers should have node(1) (which includes npm(1)) in order to run the tests.

Running 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

Dependencies

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:

Generating Documentation

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.

License

Everything is MIT. Read the license if you feel inclined.

Something went wrong with that request. Please try again.