Class: Diecut::CommandLine

Inherits:
Thor
  • Object
show all
Defined in:
lib/diecut/cli.rb

Class Method Summary collapse

Class Method Details

.add_kind(kind) ⇒ Object



70
71
72
73
74
75
# File 'lib/diecut/cli.rb', line 70

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) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/diecut/cli.rb', line 41

def self.build_kind_subcommand(plugin_kind)
  mediator = Diecut.mediator(plugin_kind)
  example_ui = mediator.build_example_ui

  klass = Class.new(KindCli) do
    class << self
      def kind(value = nil)
        if @kind.nil?
          @kind = value
        end
        @kind
      end
    end

    mediator.plugins.each do |plugin|
      class_option "with-#{plugin.name}", :default => plugin.default_active?
    end

    example_ui.field_names.each do |field|
      method_option(field, {:for => :generate, :desc => example_ui.description(field) || field,
        :required => example_ui.required?(field), :default => example_ui.default_for(field)})
    end
  end

  klass.kind(plugin_kind)

  klass
end