Socket
Socket
Sign inDemoInstall

bash-node-ipc

Package Overview
Dependencies
11
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    bash-node-ipc

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


Version published
Weekly downloads
2
Maintainers
1
Install size
305 kB
Created
Weekly downloads
 

Readme

Source

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

FAQs

Last updated on 03 Sep 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc