NyaoBundle とは
NeoBundle を汎用的にしてみたような感じ。 NyaoBundle という変な名前は、ねこが好きだから。にゃお。
使い方
mikutter のプラグインを管理する例です。
### file: ~/.mikutter/plugin/.nyaobundlerc get 'pocke/mikutter_block', name: 'block' get 'pocke/mikutter_blocked_user_mute', name: 'blocked_user_mute' get 'pocke/mikutter_color_code', name: 'color_code' get 'pocke/mikutter_delete_copy', name: 'delete_copy' get 'cosmo0920/mikutter_filter', name: 'filter' get 'pocke/mikutter_fizzbuzz', name: 'fizzbuzz' get 'pocke/mikutter_longtweet_KILL', name: 'longtweet_KILL' get 'pocke/mikutter_mention_extract', name: 'mention_extract' get 'rhenium/mikutter_image_upload' get 'rhenium/mikutter_terminal' get 'moguno/mikutter-tl-icon-size' get 'toshia/mikutter-nested-quote' get 'pocke/mikutter_r4s', name: 'r4s' get 'pocke/mikutter_search_google', name: 'search_google' get 'toshia/mikutter-speedometer', name: 'speedometer' get 'toshia/mikutter-sub-parts-client', name: 'sub_parts_client' get 'pocke/mikutter_sys_msg_tl', name: 'mikutter_sys_msg_tl' get 'pocke/mikutter_tweet_stack', name: 'tweet_stack' get 'pocke/mikutter_ws_disable_footer', name: 'ws_disable_footer' get 'https://gist.github.com/8195851.git', name: 'colorize_postbox_basecolor' get 'https://gist.github.com/3183710.git', name: 'gray_protected_users' # vim: set filetype=ruby:
一番下のモードラインを見るとわかりますが、このファイルはRubyファイルです。
$ cd ~/.mikutter/plugin/ $ <NyaoBundle install path>/bin/nyaobundle
これで、name
として指定したレポジトリが clone されてきます。
実装的な
最初に考えていた時は「ぼくがかんがえたさいきょうのぷろぐらむ」だったのですが、今では微妙な感じで見なおしたさあります。プログラミング難しい。
NyaoBundleは、matcher と getter に分かれています。
matcher
matcher は、レポジトリの名前を受け取とり、その名前がルールにマッチすればgetterを指定してgetterが使用するアドレスを返します。
例えば、githubのレポジトリにマッチするmatcherは、user/repo
のようなものが与えられた時に、https://github.com/user/repo.git
というurlを返し、getterにgitを指定します。
getter
getter の役割は、matcher が返したurlに対して実際にプロジェクトを落としてくることです。
例えば、git getter であれば、与えられたurlに対してgit clone
します。
車輪の再発明した気がするんだけど、こういうプログラムすでにあるのかなぁ…?