こんにちわ
ゴリラです
先日Twitter上でmattnさんのツイートを見て、
joってツールを知りました。
curl ... -d '{"foo": "'$VALUE'"}'
— mattn (@mattn_jp) 2019年2月22日
とか \ エスケープで書くのモヤるのでよく jo を使ってるけど apt で入らないので apt で入る様にするか標準コマンドにしてほしい。https://t.co/FXMQKnYJKr
2019/02/25
本家のREADMEにgjoが追加されました。
https://github.com/jpmens/jo/blob/master/README.md#see-also
2019/02/26
Windowsでgjo -p status=$(gjo name=gorilla)
というふうにしたい場合はshellwrap
を使ってください。
詳細はこちらをどうぞ。
joとは
普段curlを使って何かデータをPOSTする時って"
をエスケープしないといけないのですよね。
curl -X POST -H "Content-type: application/json" https://localhost/gorilla -d "{\"name\":\"gorilla\",\"age\":26}"
エスケープ面倒だし見づらいから、もっと書きやすくしようってのがjo
っていうツールコンセプトになります。
使い方は簡単で、key=value
って引数に渡すだけでjson形式に変換して標準出力してくれます。
$ jo -p name=gorilla age=26
{
"name": "gorilla",
"age": 26
}
これをcurlと組み合わせるとこうなります。
curl -X POST -H "Content-type: application/json" https://localhost/gorilla -d $(jo name=gorilla age=26)
だいぶ楽になりましたね。
移植の話
ここからが本題ですが、仕組みはシンプルだったのでGoの勉強のため移植しました。
こちらのツールの使い方も本家とほぼ同じです。
# -pでjsonを整形した状態で標準出力します
# -aで配列を生成することができます(配列の場合はキー不要になります)
$ gjo -p status=(gjo name=gorilla age=26 lang=(gjo -a Go Java PHP))
{
"status": {
"age": 26,
"lang": [
"Go",
"Java",
"PHP"
],
"name": "gorilla"
}
}
# -vでバージョン情報を標準出力します
$ gjo -v -p
{
"program": "gjo",
"description": "This is inspired by jpmens/jo",
"author": "gorilla0513",
"repo": "https://github.com/skanehira/gjo",
"version": "1.0.2"
}
# -hでヘルプを標準出力します
$ gjo -h
Usage of gjo:
-a creates an array of words
-p pretty-prints
-v show version
とこんな感じで、本家ほどではないのですが、
最低限のことはできるようになっています。
興味ある方は触ってみてください。
Windowsでも動くと思いますが(動作未確認)動かなかったらPRください。
おまけ
gjoを作って公開したらmattnさんからPRをいただきました。
Small fixesと書いて有りながら、雑に書いたソースを超きれいに直していただいたので、感謝してます。
移植やってみて思ったこと
移植は難しいけど、やっぱり結構勉強になるなぁと思いました。
移植した分だけ、勉強になるんで今後もいろいろ移植してみます。