Node.jsの関数をBashで使おうと思うことがあるのでしょうか……?
私は今まではありませんでした。
@takuya_1stさんのnodeの関数をbashシェルで使えるようにする。という記事が面白かったのでコマンドを作ってみました。
下記コマンドでインストールできます。
$ npm i -g @amanoese/nodep
使い方
例えば、下記のようにしてQueryStringを無駄にEncode,Decodeした後にJSONに変換することができます。
$ echo-n'a=b' | nodep encodeURIComponent @ decodeURIComponent @ "require('querystring').parse" @ JSON.stringify
{"a":"b"}
Node関数同士の接続は bash の "|" ではなく "@" になります。
また、元の記事の方ではNode.jsの関数を実際にコマンドとして利用できるようにしていましたが、
コマンドが増えて煩雑になりそうかつ登録で名前の衝突とかしそうと感じたので、1つのコマンド内で処理が完結するようにできるようにしています。
少し実用的な使い方?
下記のように使えばjqでは処理できない?JSONぽいJavaScriptオブジェクトを処理するとき役に立つかもしれません。
$ echo-n'{a:1}' | sed's/^/x=/' | nodep eval @ JSON.stringify | jq .{"a": 1
}
感想
Node.jsの関数がつかえるとたのしいですね。
余談
パイプライン演算子の実装がきたら下記のようなコマンドにしてJavaScriptぽくしたほうが面白いかもしれません。
$ echo-n'a=b' | nodep '$stdin |> encodeURIComponent |> decodeURIComponent |> require("querystring").parse |> JSON.stringify'
あと、npmでインストールできますが、このコマンドはShellScriptでできています。