諸事情によりRuby を知っておく必要があって、「たのしいRuby」 やら「初めてのRuby」を読んだんですけど、
「やっぱり実際にソースを書かなきゃ覚えられないだろ!」と思ったので、Ruby で自分が使うためのツールを作りました。
Donki?
pathogen やVundle、NeoBundle といったVim Plugin の管理ツールは非常にクールで使いやすくて良い感じですよね。ただ、当然の事ながらこれらはVim Plugin の管理にしか使えないので、
「非Vim Plugin のリポジトリが対象でも使える管理ツールが欲しいなー」、
「GitHub とかに転がっている、スーパーハッカーが作った便利ツールを一元管理できるツールがあれば便利だよなー」、
という訳で出来たのがDonki です。
使い方
Donki をインストールするとホームディレクトリに.donkirc という設定ファイルが生成されるので、それをカスタマイズして使用します。.donkirc の記述例はこちらにあります。
(donki.rb にはエイリアスを設定しておくと便利かも分かりません)
基本的な使い方としては、(ここら辺はNeoBundle を参考にしました。ただ、アプリケーションの都合上clean はありません)
$ ./donki.rb installすると、.donkirc で指定されたリポジトリをローカルにダウンロード・インストールします。
$ ./donki.rb updateすると、ローカルにインストールされたリポジトリをアップデートします。(内部的にはgit pull を実行しています)
$ ./donki.rb uninstallは、全てのインストールされたリポジトリをアンインストールします。
uninstall の後にリポジトリ名を指定すると、そのリポジトリのみをアンインストールします。
あとの詳しい使い方はREADME とか--help とかを見てもらえればと思いますが、
いかんせん僕の崩壊した英語で記述されているので、「マジ意味わかんねえ!」みたいな時はご一報下さい。
.donkirc の実用例
以下は僕の.donkirc になります。{ "default_directory": "~/.donki", "repositories": [ "git@github.com:moznion/Pod2Readme.git", "git@github.com:moznion/Implement_Trashbox.git", { "url": "git@github.com:moznion/skeletons4vim.git", "name": "skeletons", "branch": "master", "target": "~/.vim" }, { "url": "git@github.com:moznion/snippets4neosnippet.git", "name": "snippets", "branch": "master", "target": "~/.vim" }, { "url": "git@github.com:moznion/vimrc.git", "target": "~/dotfiles" } ] }こういう風にしておくと、Pod2Readme とImplement_Trashbox *1 は~/.donki ディレクトリ以下にインストールされ、
skeletons4vim はskeletons という名前で、またsnippets4neosnippet はsnippets という名前で~/.vim ディレクトリ以下に、
vimrc は~/dotfiles 以下にインストールされます。
(この例では全てのリポジトリのURL をssh 形式で指定していますが、https 形式でもgit 形式でも大丈夫です)
こうしておくとinstall で一括インストール、update で一括アップデート出来てそこそこ便利です!!!!!
課題
設定ファイルがJSON っていうのはどうなんだろう……DSL の方が良いのでは……(YAML 対応も考えた、というか割と単純にサポートできたんですけど、要らないのでは? という事で無しにしました)
Feedback
目下募集中です。Ruby でモノを書いたのは初めてで、いまいち良く分かってない部分がたっぷりあって、多分作法とかもなってないと思うので、
その辺を指摘して頂けたら嬉しいです。 (というか、Ruby 云々の前にOOP の設計があんまりイケて無い気が……)
バグ等はISSUE なんかに突っ込んでもらえるとありがたいです。
*1:今考えるとこの名前ダサ過ぎて死ねる