class Diecut::CommandLine

Public Class Methods

add_kind(kind) click to toggle source
# File lib/diecut/cli.rb, line 104
def self.add_kind(kind)
  desc "#{kind}", "Commands related to templating for #{kind}"
  kind_class = build_kind_subcommand(kind)
  const_set(kind.sub(/\A./){|match| match.upcase }, kind_class)
  subcommand kind, kind_class
end
build_kind_subcommand(plugin_kind) click to toggle source
# File lib/diecut/cli.rb, line 89
def self.build_kind_subcommand(plugin_kind)
  mediator = Diecut.mediator(plugin_kind)
  example_ui = mediator.build_example_ui

  Class.new(Thor) do
    gen = Cli::TargetedGenerate.subclass_for(plugin_kind, mediator, example_ui)
    method_options(gen.class_options)
    register gen, "generate", "#{plugin_kind} generate TARGET", "Generate #{plugin_kind} output"

    lint = Cli::Lint.subclass_for(plugin_kind, mediator, example_ui)
    method_options(lint.class_options)
    register lint, "lint", "#{plugin_kind} lint", "Check well-formed-ness of #{plugin_kind} code generators"
  end
end