PerlのApp::CLIみたいなやつ

class MyApp < App::CLI::Dispatcher
  options :verbose, :debug

  def install(pkg_name)
    # ...
  end

  def uninstall(pkg_name)
    # ...
  end

  def mysubcmd(*args)
    Class.new(App::CLI::Dispatcher) {
      def subsub
        # ...
      end
    }.run(args)
  end

  private
  def my_helper
    # ...
  end
end

MyApp.run
  • アプリケーション・クラスに固有の public_instance_methods がコマンドになる。
  • コマンドがアプリケーション・クラスのインスタンスを独自に持ってサブコマンドを受け付けることもできる。
  • abbrev を使ってかってに短縮オプションを生成する。