Module: Origen::CodeGenerators
- Defined in:
- lib/origen/code_generators.rb,
lib/origen/code_generators/base.rb,
lib/origen/code_generators/rake.rb,
lib/origen/code_generators/rspec.rb,
lib/origen/code_generators/semver.rb,
lib/origen/code_generators/actions.rb,
lib/origen/code_generators/bundler.rb,
lib/origen/code_generators/timever.rb,
lib/origen/code_generators/gem_setup.rb
Defined Under Namespace
Modules: Actions
Classes: Base, Bundler, Error, GemSetup, RSpec, Rake, Semver, Timever
Class Method Summary
collapse
Class Method Details
.find_by_name(name) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/origen/code_generators.rb', line 50
def self.find_by_name(name)
names = name.split(':')
case names.size
when 1
gen = origen_generators[names.first]
return gen if gen
when 2
if names.first == 'origen'
gen = origen_generators[names.first]
else
gen = plugin_generators[names.first][names.last]
end
return gen if gen
end
puts "Couldn't find a feature generator named: #{name}"
puts
puts 'This is the list of available features:'
puts
print_generators
puts
end
|
.help(command = 'add') ⇒ Object
Show help message with available generators.
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/origen/code_generators.rb', line 73
def self.help(command = 'add')
puts <<-END
Add pre-built features and code snippets.
This command will add pre-built code to your application to implement a given feature. In some
cases this will be a complete feature and in others it will provide a starting point for you
to further customize.
END
puts "Usage: origen #{command} FEATURE [args] [options]"
puts
puts 'General options:'
puts " -h, [--help] # Print feature's options and usage"
puts ' -p, [--pretend] # Run but do not make any changes'
puts ' -f, [--force] # Overwrite files that already exist'
puts ' -s, [--skip] # Skip files that already exist'
puts ' -q, [--quiet] # Suppress status output'
puts
puts "The available features are listed below, run 'origen add <feature> -h' for more info."
puts
print_generators
puts
end
|
.invoke(name, args = ARGV, config = {}) ⇒ Object
Receives a namespace, arguments and the behavior to invoke the generator. It’s used as the default entry point for generate, destroy and update commands.
42
43
44
45
46
47
48
|
# File 'lib/origen/code_generators.rb', line 42
def self.invoke(name, args = ARGV, config = {})
load_generators
if klass = find_by_name(name)
args << '--help' if args.empty? && klass.arguments.any?(&:required?)
klass.start(args, config)
end
end
|
.load_generators ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/origen/code_generators.rb', line 29
def self.load_generators
return if @generators_loaded
Dir.glob("#{Origen.top}/lib/origen/code_generators/**/*.rb").sort.each do |file|
require file
end
@generators_loaded = true
end
|
.no_color! ⇒ Object
Remove the color from output.
17
18
19
|
# File 'lib/origen/code_generators.rb', line 17
def self.no_color!
Thor::Base.shell = Thor::Shell::Basic
end
|
.origen_generators ⇒ Object
21
22
23
|
# File 'lib/origen/code_generators.rb', line 21
def self.origen_generators
@origen_generators ||= {}
end
|
.plugin_generators ⇒ Object
25
26
27
|
# File 'lib/origen/code_generators.rb', line 25
def self.plugin_generators
@plugin_generators ||= {}
end
|
.print_generators ⇒ Object
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/origen/code_generators.rb', line 98
def self.print_generators
load_generators
origen_generators.each do |name, _gen|
puts name
end
plugin_generators.each do |namespace, generators|
puts
generators.each do |_name, gen|
puts "#{namespace}:#{gen}"
end
end
end
|