Class: Pfm::Command::Generate
- Inherits:
-
Base
- Object
- Base
- Pfm::Command::Generate
show all
- Defined in:
- lib/iapi-idlc-sdk-pfm/command/generate.rb
Defined Under Namespace
Classes: GeneratorCommand
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#build_base_dir, #build_dir, #build_exists?, #build_setup, #deploy_setup, #deploy_setupv2, #inf_base_dir, #needs_version?, #run_with_default_options, #templates_dir, #verbose?
Methods included from Helpers
debug, err, msg, system_command
Constructor Details
#initialize(*args) ⇒ Generate
pfm generate app path/to/basename –skel=path/to/skeleton –example pfm generate file name [path/to/cookbook_root] (inferred from cwd) –from=source_file
41
42
43
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 41
def initialize(*args)
super
end
|
Class Method Details
.banner ⇒ Object
34
35
36
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 34
def self.banner
banner_headline + generator_list + "\n"
end
|
.banner_headline ⇒ Object
22
23
24
25
26
27
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 22
def self.banner_headline
<<-E
Usage: pfm generate GENERATOR [options]
Available generators:
E
end
|
.generator(name, class_name, description) ⇒ Object
16
17
18
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 16
def self.generator(name, class_name, description)
generators << GeneratorCommand.new(name, class_name, description)
end
|
.generator_list ⇒ Object
29
30
31
32
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 29
def self.generator_list
justify_size = generators.map { |g| g.name.size }.max + 2
generators.map { |g| " #{g.name.to_s.ljust(justify_size)}#{g.description}" }.join("\n")
end
|
.generators ⇒ Object
12
13
14
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 12
def self.generators
@generators ||= []
end
|
Instance Method Details
#generator_for(arg) ⇒ Object
64
65
66
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 64
def generator_for(arg)
self.class.generators.find { |g| g.name.to_s == arg }
end
|
#have_generator?(name) ⇒ Boolean
77
78
79
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 77
def have_generator?(name)
self.class.generators.map { |g| g.name.to_s }.include?(name)
end
|
#needs_help?(params) ⇒ Boolean
In the Base class, this is defined to be true if any args match “-h” or “–help”. Here we override that behavior such that if the first argument is a valid generator name, like ‘pfm generate cookbook -h`, we delegate the request to the specified generator.
72
73
74
75
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 72
def needs_help?(params)
return false if have_generator?(params[0])
super
end
|
#run(params) ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/iapi-idlc-sdk-pfm/command/generate.rb', line 45
def run(params)
if generator_spec = generator_for(params[0])
params.shift
generator = GeneratorCommands.build(generator_spec.class_name, params)
generator.run
else
msg(banner)
1
end
rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e
err("ERROR: #{e.message}\n")
msg(generator.opt_parser)
1
end
|