Umi Uyuraのブログ

プログラミング関連の作業ログ

小さなスクリプトはGistで管理するようにした

頻繁に使うちょっとした処理をシェルスクリプトなどにしていたりいるのですが、それらを管理するのに、現状は自分の環境構築用のリポジトリumi-uyura/dotfilesbin フォルダ )に含めています。

umi-uyura.hatenablog.com

ですが、環境構築とは目的が違うものも増えてきたので、そういった性質が違うものについては、別管理にしたいと考えていました。

スクリプトを管理するための課題

別管理にしようとした場合に考えなくてはならない点として、課題が3つありました。

  • どこで管理するのか
  • どこに導入するのか
  • どうやって導入するのか

どこで管理するのか

GitHubの別リポジトリを作っても良いのですが、やはり目的がバラバラのスクリプトを1レポジトリにまとめてしまうのもどうかと思ってしまうのですが、かといって個々にGitHubリポジトリを作るほどのものではありません。

これに関しては、バージョン管理もできるので、素直にGistにあげてしまうのが妥当かなと考えました。

どこに導入するのか

これまで同様、dotfilesの bin フォルダにインストールしてしまうのがわかりやすいわけですが、そうするとバージョン管理上、差分がある状態になってしまうのが気になります。

それであれば、別にスクリプト用のフォルダを用意してPATHを通し、そこへ配置する、というのが良さそうです。

どうやって導入するのか

最後の課題としては、Gistにあげた個々のスクリプトを一括して導入する方法があるのか、という点でした。

最悪、GistにはそれぞれにたいしてRawでダウンロードできるURLがあるので、それをつかってひとつひとつダウンロードするスクリプトなどを用意すれば良いわけですが、何かしらそういったことをサポートするツールがあるのではと思い、探してみることにしました。

Gist上のスクリプトの導入・管理ツール

Gistへの投稿やダウンロードをサポートするもの、コードスニペットを取り扱いやすくするようなツールは多くあるのですが、今回の目的に適したものはなかなか見つけられませんでした。

そんな中で発見したのがbist( mattak/bist )でした。

これは、Gist上のスクリプトをHomebrewやnpmなどのようにインストールしたり削除してくれるツールです。またアップデートもできるので、Gistが更新されたら、新しいものを反映させることもできます。

スクリプトのインストール先も、専用にフォルダ( ~/.bist )を用意するので、既存の環境と別に管理することができます。

あらかじめ、必要なものだけ抽出してスクリプト化しておけば、インストールも一括でできるので、今後新しく環境構築しなおす際にも便利。

#!/bin/sh

# Environment
bist install bbe1da6257a79331a18c       # brewcaskupdate
bist install 475ee08eba84fe02359e       # brewcaskremoveall
bist install 9e3b45c8ffdb66505326       # node-uninstall

# Development
bist install 56a2a9fac61ed02cc13b       # gitconfiguser
bist install 35d959a166c081d9ec68       # iossimulators
bist install b9787cd74493c69a8f20       # iosprovisions
bist install b144de7219fdf712cd8c       # appc-ndenv

# Utilities
bist install ddf59b07ba3d44fca1a4       # getlibolang
bist install b0ea9712c31c89e5515f       # wifireboot

詳しい使い方などは、作者の方のブログを読んでいただくのがわかりやすいです。

gistに書いたスクリプトを管理したい。 - mattakのブログ

zsh向けに書かれていたので、ふだんBashを使っている私の環境で動くのか少し気になりましたが、Mac OSにはzshが標準で入っていたので、問題ありませんでした。

このツールのおかげで、どこに・どうやって導入するのかという課題があっさりクリアできてしまったので、環境構築用のリポジトリとそれ以外の細かいスクリプトなどを分離して管理することができるようになりました。

インストール方法について

1点だけ、そのままではうまくいかなかったのが、インストールでした。

インストール方法に書かれているコードでは動かなかったのですが、 >& /dev/null の部分を除いて実行したところインストールできました。

$ curl -L https://raw.github.com/mattak/bist/master/install.sh | sh

参考

まんがでわかるLinux シス管系女子 (日経BPパソコンベストムック)

まんがでわかるLinux シス管系女子 (日経BPパソコンベストムック)