bash-node-ipc

0.0.1 • Public • Published

Idea I have for implementing parts of a bash script in node.

Write a dictionary of JavaScript functions in a JS script. Use bash's coprocess feature to launch a node process as a slave to the bash process. node process sends a string of bash source code that stubs out bash functions, one for every JavaScript function.

When the bash function is invoked, it encodes and sends its arguments to the node process. The node process runs the JS function, encoding and returning the result to bash.

When bash terminates, coprocess pipe is closed, node process kills itself.

Usage

Write a JS file similar to example/node-fns.js that exports a dictionary of functions.

Put this snippet at the top of your bash script:

eval "$( bash-node-ipc bootstrap $__dirname/node-fns.js node_coproc )"

This will launch the node coprocess and declare a bash function corresponding to each exported node function. You can now call node functions from bash, and they'll run within the node coprocess.

For a slight improvement in startup time, inline the bootstrapper directly into your bash script:

bash-node-ipc $__dirname/node-fns.js node_coproc >> ./my-bash-script

TODOs

Dream list of features

  • Pass positional strings and option-bags to a function
    • receiving end passes through minimist() or yargs() to parse
  • Streaming async results?
    • piped line by line to bash?
  • Alternative return types:
    • return boolean; converts to exit code (Already implemented)
    • return dictionary; saved into named variable
    • return array; saved into named variable
  • Accept env vars when declared?
    • function must declare all env vars it cares about
    • every time that function is invoked, those env vars are manually passed to the function.
    • Broaden this to support bash arrays and dictionaries?
      • something like a list of implicitlyPassedVariables?

TODO

After running the example, bash is in a weird state where arrow keys spit out ANSI instead of interacting with readline. Why is this? FIXED

Readme

Keywords

none

Package Sidebar

Install

npm i bash-node-ipc

Weekly Downloads

1

Version

0.0.1

License

MIT

Unpacked Size

135 kB

Total Files

39

Last publish

Collaborators

  • cspotcode