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



45
46
47
# File 'lib/volt/cli/generate.rb', line 45

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



65
66
67
68
69
70
71
72
# File 'lib/volt/cli/generate.rb', line 65

def controller(name, component = 'main')
  controller_name = name.underscore.singularize + '_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.pluralize}_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.pluralize )
end

#gem(name) ⇒ Object



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

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

  if name =~ /[-]/
    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



52
53
54
55
56
57
58
59
60
# File 'lib/volt/cli/generate.rb', line 52

def http_controller(name, component = 'main')
  name = name.underscore.pluralize + '_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



77
78
79
80
81
82
83
# File 'lib/volt/cli/generate.rb', line 77

def task(name, component = 'main')
  name = name.underscore.gsub(/_tasks$/, '').singularize + '_tasks'
  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



88
89
90
91
92
93
# File 'lib/volt/cli/generate.rb', line 88

def view(name, component = 'main')
  name = name.underscore.singularize
  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