cipっていうAlfred Workflowをつくった
久しぶりにサービス開発っぽいことをやっている。iPadとかスマフォで動作確認する必要があって、自分のマシンの上に立っているRailsサーバーにアクセスする必要があった。
Bonjourとか使える環境なら マシン名.local:3000 とかで行けることもあるかと思うけど、そういうわけに行かないこともある(Androidとか)その度に都度ターミナルからコマンドを叩いてたんだけど Alfred Workflow にした。
元々は下記のようなワンライナーだったんだけど、
ifconfig en0 | grep -Eo 'inet \d+(\.\d+){3}' | sed -e "s/inet //g" | tr -d '\n' | pbcopy
ターミナルに切り替える、 Ctrl-r して、それっぽい履歴を探す、実行して、Slackとかに貼るってのをやってたんだけど、普遍的なコマンドの集まりなのでごにょごにょやっていくうちに履歴からサッと引けなくなってしまったので、関数にして dotfilesにコミットしておくかどうかで悩んだ結果つくったことのないAlfred Workflowでやってみた。
Alfred Workflowをつくる上でのハマリポイントとしては、InputをScript Filterではなくて Keyword にしていなくてハマっていたこと。 Script Filterはいくつかある候補の内容を絞り込むのに使う(Emoji Workflowとかみたいなやつ)ので、単純にコマンドをキックしたいときには Keyword にしておくこと。
自前で pbcopy してもよいのだけどもAlfred側にエスケープする項目があるので変な制御文字とかを自前でどうこうする必要がない点にも気を付けたほうがよさそう。最初は cip <interface name> みたいな感じで任意のインターフェースのIPアドレスをコピーできるようにしようと思ったけど、入力文字をサニタイズする仕組みはないので事故ったら怖いなと思って en0 のIPアドレスを返すようにした。Alfred自体がMacでしか動かないのでen0にしておけばまぁだいたいの人は大丈夫な気がする。DockerとかVM環境の人はちょっと困るかもだけど...。