csvqのアップデートリリース時に手軽でスマートに更新取得できるようなコマンドを組み立ててみた
csvqのアップデートがリリースされた際に、ファイルのダウンロードや解凍・バイナリの取り出し等を纏めて行いたくなったため、試行錯誤してみました。
はじめに
csvqのアップデートがリリースされる毎に
- curlを実行(
curl -o https://....
) - tarで解凍(
tar xvfz ...
) - 不要なファイル削除(
rm -rf TARGET
)
と一手づつ実行していましたが、ふと思いました。
「1手でできそうな気がするな」と。
csvqは更新されたバージョンがリリースされている状態でcsvq check-update
を実行するとダウンロードURLが出力されます。これを利用して置き換えるコマンドを組み立ててみました。
コマンド
csvqが事前にインストールされた上で実行出来る状態でなければ機能しません。
csvq check-update | awk '/Download/{ print $3 }' | xargs -I{} curl -sL "{}" | tar xz -C $GOPATH/bin/ --strip=1 '*/csvq'
csvq check-update
での出力に変更が入った場合は機能しなくなる可能性がありますが、その際はawkでの判定を修正する等で対応できると思います。
参考
アーカイブファイルは大体消し忘れてるし、コマンドも一回で収めたいし、という点で以下の条件にしました。
- アーカイブファイルをローカルには残さない
- 解凍したフォルダのうち特定のファイルだけを取り出したい
- 解凍先は前バージョンを上書きする形でいい
試しに解凍して出来上がったフォルダを元に、想定した状態になるコマンドとオプションの組み合わせを検証してみました。中々思った形にならず、結果としては以下の記事に解説込みで理想とするコマンドが記載されていたため、有り難く活用させていただきました。
まとめ
csvqの更新用途として試してみましたが、他にも色々と応用が効く内容でもあると思われます。「更新作業をちょっと楽したい」と思った時等に試してみてはいかがでしょうか。