Gestopft, Framework for CLI Application

Gestopftというライブラリを公開しました。

gem install gestopft でインストールできます。

なんて読むの?

ゲシュトップ、でいいとおもいます。

GetOptっぽいもの、って考え末に落ち着きましたが、原型を留めていないです。

これはなに?

サブコマンドを持つようなCLIアプリケーションをつくるときにべんりなフレームワークです。

PerlでいうApp::CLIみたいなものだとおもいます。(書き方に互換性はないです、あくまで雰囲気です)

どうやってつかうの?

Synopsisをご覧ください。

だいたいこんなかんじです:

require "gestopft"

class Echo < Gestopft::App
  option :verbose, "print debug messages."

  def echo(message)
    STDOUT.puts "Echo is invoked." if @options[:verbose]
    STDOUT.puts message
  end

  def subcmd(*args)
    Class.new(Gestopft::App) do
      option # ...

      def subsubcmd
        # ...
      end
    end.run(args)
  end
end

Echo.run

アプリケーションに定義されたpublicなインスタンスメソッドをコマンドとして認識します。

上記の例のように、Gestopft::Appのサブクラスを返すようなサブコマンドを定義すると、コマンドパーサーをネストすることができます。

どうしてこれをつくったの?

optparseは手間がかかるというのと、サブコマンドを定義するのがかなりめんどくさいかんじだったので、うまいこと書けるようなライブラリがほしかったためです。

将来について

  • zshの補完関数の自動生成
  • 短縮オプションの自動生成

などをつけようかとおもっています。

バグみつけたよ or こういう機能ほしい

@aereal に一言いただくか、GitHubのIssuesに登録していただくなどしてもらえれば、よしなに対応するつもりです。