handleshells

0.1.2 • Public • Published

handleshells allows for easy calling of command line utilities by processing command line arguments with handlebars. It provides:

  • Automatic escaping
  • Promise-based execution
  • Useful template helpers

Example

The following example uses ffprobe to extract metadata from a video file.

const handleshells = require('handleshells')

// A source video file. Notice that the path contains
// a space, which will be automatically escaped.
const videoFile = '/Video Files/video.mov'

// The ffprobe command line. {{ videoFile }} will be substituted.
const command = 'ffprobe -v quiet -print_format json -show_streams {{ videoFile }}'

// Run the command. A Promise will be returned.
handleshells.exec( command, { videoFile } )
  .then( ( result ) => {
    // Since the command returns JSON to stdout,
    // we can access the data directly.
    assert.isObject( result.data )
  } )

API

Functions

compile

Compile a command and return the escaped command line.

Example

assert.equal(
  handleshells.compile( 'touch {{ file }}', { file: 'foo.txt' } ),
  'touch foo.txt'
)

exec

Compiles and then executes a command.

Result

  • pid : The process id of spawned command.
  • exitCode : The status of the command's exit.
  • stdout : The output of the command, usually String.
  • stderr : The errors from the command, usually String.
  • data : stdout as JSON, if applicable.
  • dataerr : stderr as JSON, if applicable.

Example

handleshells.exec( 'echo {{ text }}', { text: 'Hello, world!'} )
  .then( ( result ) => {
    assert.equal( result.stdout, 'Hello, world!\n' )
  } )

Template Helpers

args

Spread objects as command line options.

const options = {
  a: 'foo',
  bar: 'baz qux'
}
assert.equal(
  handleshells.compile('{{ args options }}', { options } ),
  "-a foo --bar 'baz qux'"
)

join

Join strings together into paths.

const dir = 'bar'
    , file = 'foo.txt'

assert.equal(
  handleshells.compile('{{ join "/tmp" dir file }}', { dir, file } ),
  "/tmp/bar/foo.txt"
)

Package Sidebar

Install

npm i handleshells

Weekly Downloads

1

Version

0.1.2

License

MIT

Last publish

Collaborators

  • koopero