Gitには、git foo
と実行すると、$PATH
内のgit-foo
を実行するというサブコマンドの機能がある。そのため、その規約に則りさえすれば、Gitのサブコマンドをいろんな言語で書けるというメリットがある。それを簡単に実現するために、façadeというごく単純なライブラリを書いた。
使い方
これを使うと以下のように書くだけで、コマンド名がyour-command
だったとして、your-command foo bar baz
と実行すると、your-command-foo bar baz
という呼び出しに変わる。
package main import ( "github.com/pepabo/facade" ) func main() { facade.Run() }
なぜ作ったか
ある目的に利用するツール群があるとして(たとえばEC2を操作するような各種コマンド群)、以下のような問題を解消するためである。
- ひとつの言語に限らず、実装する人々が得意な言語によって、それらのツールを書きたい
- しかし、それらがフラットな名前でだらだらーっとあると、見た目に悪い感じがする
- また、どのツールでも使うような、たとえば色付けされたロギングだとかそういうのを提供する際に、各コマンドでいちいち実装していると統一感がなくてよくない
そのため、入り口 = dispatcherのみを提供するライブラリとしてfaçadeを作った。これにより、統一的な名前、機能を提供できるようになった。