class ChefCLI::Command::Generate
Constants
- GeneratorCommand
Public Class Methods
generator(name, class_name, description)
click to toggle source
# File lib/chef-cli/command/generate.rb, line 44 def self.generator(name, class_name, description) generators << GeneratorCommand.new(name, class_name, description) end
generator_list()
click to toggle source
# File lib/chef-cli/command/generate.rb, line 68 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()
click to toggle source
# File lib/chef-cli/command/generate.rb, line 40 def self.generators @generators ||= [] end
new(*args)
click to toggle source
chef generate app path/to/basename –skel=path/to/skeleton –example chef generate file name [path/to/cookbook_root] (inferred from cwd) –from=source_file
Calls superclass method
ChefCLI::Command::Base::new
# File lib/chef-cli/command/generate.rb, line 80 def initialize(*args) super end
Public Instance Methods
generator_for(arg)
click to toggle source
# File lib/chef-cli/command/generate.rb, line 107 def generator_for(arg) self.class.generators.find { |g| g.name.to_s == arg } end
have_generator?(name)
click to toggle source
# File lib/chef-cli/command/generate.rb, line 121 def have_generator?(name) self.class.generators.map { |g| g.name.to_s }.include?(name) end
needs_help?(params)
click to toggle source
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 `chef generate cookbook -h`, we delegate the request to the specified generator.
Calls superclass method
ChefCLI::Command::Base#needs_help?
# File lib/chef-cli/command/generate.rb, line 115 def needs_help?(params) return false if have_generator?(params[0]) super end
run(params)
click to toggle source
# File lib/chef-cli/command/generate.rb, line 84 def run(params) if params[0] == "build-cookbook" warn "[DEPRECATION] Chef Workflow (Delivery) is end of life (EOL) as of December 31, 2020 and this generator subcommand has been removed".freeze return 1 end 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 # ChefCLI::Command::Base also handles this error in the same way, but it # does not have access to the correct option parser, so it cannot print # the usage correctly. Therefore, invalid CLI usage needs to be handled # here. err("ERROR: #{e.message}\n") msg(generator.opt_parser) 1 end