Class: Generate

Inherits:
Thor show all
Includes:
Thor::Actions
Defined in:
lib/volt/cli/generate.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



49
50
51
# File 'lib/volt/cli/generate.rb', line 49

def self.source_root
  File.expand_path(File.join(File.dirname(__FILE__), '../../../templates'))
end

Instance Method Details

#component(name) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/volt/cli/generate.rb', line 16

def component(name)
  name = name.underscore
  component_folder = Dir.pwd + "/app/#{name}"
  component_spec_folder = Dir.pwd + '/spec/app/' + name
  @component_name = name
  directory('component', component_folder, component_name: name)
  directory('component_specs', component_spec_folder)
end

#controller(name, component = 'main') ⇒ Object



69
70
71
72
73
74
75
76
# File 'lib/volt/cli/generate.rb', line 69

def controller(name, component = 'main')
  controller_name = name.underscore + '_controller' unless name =~ /_controller$/
  output_file = Dir.pwd + "/app/#{component.underscore}/controllers/#{controller_name}.rb"
  spec_file = Dir.pwd + "/spec/app/#{component.underscore}/integration/#{name.underscore}_spec.rb"

  template('controller/model_controller.rb.tt', output_file, component_module: component.camelize, model_controller_name: controller_name.camelize)
  template('controller/model_controller_spec.rb.tt', spec_file, describe: name.underscore)
end

#gem(name) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/volt/cli/generate.rb', line 33

def gem(name)
  require 'volt/cli/new_gem'

  # remove prefixed volt-
  name = name.gsub(/^volt[-]/, '')

  if name =~ /[-]/
    require 'volt'
    require 'volt/extra_core/logger'
    Volt.logger.error('Gem names should use underscores for their names.  Currently volt only supports a single namespace for a component.')
    return
  end

  NewGem.new(self, name, options)
end

#http_controller(name, component = 'main') ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/volt/cli/generate.rb', line 56

def http_controller(name, component = 'main')
  name = name.underscore + '_controller' unless name =~ /_controller$/

  output_file = Dir.pwd + "/app/#{component}/controllers/server/#{name.underscore}.rb"
  spec_file = Dir.pwd + "/spec/app/#{component.underscore}/controllers/server/#{name}_spec.rb"

  template('controller/http_controller.rb.tt', output_file, component_module: component.camelize, http_controller_name: name.camelize)
  template('controller/http_controller_spec.rb.tt', spec_file, component_module: component.camelize, http_controller_name: name.camelize)
end

#model(name, component = 'main') ⇒ Object



7
8
9
10
11
12
# File 'lib/volt/cli/generate.rb', line 7

def model(name, component = 'main')
  output_file = Dir.pwd + "/app/#{component.underscore}/models/#{name.underscore.singularize}.rb"
  spec_file = Dir.pwd + "/spec/app/#{component.underscore}/models/#{name.underscore.pluralize}_spec.rb"
  template('model/model.rb.tt', output_file, model_name: name.camelize.singularize)
  template('model/model_spec.rb.tt', spec_file, model_name: name.camelize.singularize)
end

#task(name, component = 'main') ⇒ Object



81
82
83
84
85
86
87
# File 'lib/volt/cli/generate.rb', line 81

def task(name, component = 'main')
  name = name.underscore.gsub(/_tasks$/, '').singularize + '_task'
  output_file = Dir.pwd + "/app/#{component}/tasks/#{name}.rb"
  spec_file = Dir.pwd + "/spec/app/#{component}/tasks/#{name}_spec.rb"
  template('task/task.rb.tt', output_file, task_name: name.camelize.singularize)
  template('task/task_spec.rb.tt', spec_file, task_name: name.camelize.singularize)
end

#view(name, component = 'main') ⇒ Object



92
93
94
95
96
97
# File 'lib/volt/cli/generate.rb', line 92

def view(name, component = 'main')
  name = name.underscore.pluralize
  view_folder = Dir.pwd + "/app/#{component}/views/#{name}/"
  directory('view', view_folder, view_name: name, component: component)
  controller(name, component) unless controller_exists?(name, component)
end