class Aws::Cfn::Stacker::StackerBase
Public Class Methods
category(new_category)
click to toggle source
Explicitly set the category for the current command to new_category
The category is normally determined from the first word of the command name, but some commands make more sense using two or more words
Arguments¶ ↑
- new_category:
-
A String to set the category to (see examples)
Examples:¶ ↑
Data bag commands would be in the ‘data’ category by default. To put them in the ‘data bag’ category:
category('data bag')
# File lib/aws/cfn/stacker/base.rb, line 62 def category(new_category) @category = new_category end
common_name()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 74 def common_name snake_case_name.split('_').join(' ') end
dependency_loaders()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 129 def dependency_loaders @dependency_loaders ||= [] end
inherited(subclass)
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 47 def inherited(subclass) unless subclass.unnamed? subcommands[subclass.snake_case_name] = subclass end end
list_commands(preferred_category=nil)
click to toggle source
Print the list of subcommands knife knows about. If preferred_category
is given, only subcommands in that category are shown
# File lib/aws/cfn/stacker/base.rb, line 107 def list_commands(preferred_category=nil) load_commands category_desc = preferred_category ? preferred_category + " " : '' puts "Available #{category_desc}subcommands: (for details, #{@stacker_cmd} SUB-COMMAND --help)\n\n" if preferred_category && subcommands_by_category.key?(preferred_category) commands_to_show = {preferred_category => subcommands_by_category[preferred_category]} else commands_to_show = subcommands_by_category end commands_to_show.sort.each do |category, commands| next if category =~ /deprecated/i puts "** #{category.upcase} COMMANDS **" commands.sort.each do |command| puts subcommands[command].banner if subcommands[command] end puts end end
load_commands()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 87 def load_commands @commands_loaded ||= subcommand_loader.load_commands end
load_deps()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 137 def load_deps dependency_loaders.each do |dep_loader| dep_loader.call end end
requires(&block)
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 133 def requires(&block) dependency_loaders << block end
reset_config_path!()
click to toggle source
noinspection RubyClassVariableUsageInspection
# File lib/aws/cfn/stacker/base.rb, line 20 def self.reset_config_path! @@stacker_config_dir = nil end
reset_subcommands!()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 42 def reset_subcommands! @subcommands = {} @subcommands_by_category = nil end
snake_case_name()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 70 def snake_case_name convert_to_snake_case(name.split('::').last) unless unnamed? end
stacker_config_dir()
click to toggle source
search upward from current_dir until .chef directory is found noinspection RubyClassVariableUsageInspection
# File lib/aws/cfn/stacker/base.rb, line 27 def stacker_config_dir if @@stacker_config_dir.nil? # share this with subclasses @@stacker_config_dir = false full_path = Dir.pwd.split(File::SEPARATOR) (full_path.length - 1).downto(0) do |i| candidate_directory = File.join(full_path[0..i] + ["config" ]) if File.exist?(candidate_directory) && File.directory?(candidate_directory) @@stacker_config_dir = candidate_directory break end end end @@stacker_config_dir end
subcommand_category()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 66 def subcommand_category @category || snake_case_name.split('_').first unless unnamed? end
subcommand_class_from(args)
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 143 def subcommand_class_from(args) command_words = args.select {|arg| arg =~ /^(([[:alnum:]])[[:alnum:]\_\-]+)$/ } subcommand_class = nil while ( !subcommand_class ) && ( !command_words.empty? ) snake_case_class_name = command_words.join("_") subcommand_class = subcommands[snake_case_class_name] unless subcommand_class command_words.pop end end # see if we got the command as e.g., knife node-list subcommand_class ||= subcommands[args.first.gsub('-', '_')] subcommand_class || subcommand_not_found!(args) end
subcommand_loader()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 83 def subcommand_loader @subcommand_loader ||= SubcommandLoader.new(stacker_config_dir) end
subcommands()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 91 def subcommands @@subcommands ||= {} end
subcommands_by_category()
click to toggle source
# File lib/aws/cfn/stacker/base.rb, line 95 def subcommands_by_category unless @subcommands_by_category @subcommands_by_category = Hash.new { |hash, key| hash[key] = [] } subcommands.each do |snake_cased, klass| @subcommands_by_category[klass.subcommand_category] << snake_cased end end @subcommands_by_category end
unnamed?()
click to toggle source
Does this class have a name? (Classes created via Class.new don’t)
# File lib/aws/cfn/stacker/base.rb, line 79 def unnamed? name.nil? || name.empty? end