lib/chef/knife/knife_plugin_seed.rb in sfn-3.0.28 vs lib/chef/knife/knife_plugin_seed.rb in sfn-3.0.30

- old
+ new

@@ -4,40 +4,35 @@ $stderr.puts '[WARN]: Uninstall gem to prevent any conflicts (`gem uninstall knife-cloudformation -a`)' rescue Gem::LoadError => e # ignore end -unless(defined?(Chef::Knife::CloudformationCreate)) - +unless defined?(Chef::Knife::CloudformationCreate) require 'sfn' require 'bogo' Chef::Config[:knife][:cloudformation] = { :options => {}, :create => {}, - :update => {} + :update => {}, } Chef::Config[:knife][:sparkleformation] = Chef::Config[:knife][:cloudformation] VALID_PREFIX = ['cloudformation', 'sparkleformation'] - Sfn::Config.constants.map do |konst| const = Sfn::Config.const_get(konst) - if(const.is_a?(Class) && const.ancestors.include?(Bogo::Config)) + if const.is_a?(Class) && const.ancestors.include?(Bogo::Config) const end end.compact.sort_by(&:to_s).each do |klass| - VALID_PREFIX.each do |prefix| - klass_name = klass.name.split('::').last command_class = "#{prefix.capitalize}#{klass_name}" knife_klass = Class.new(Chef::Knife) knife_klass.class_eval do - include Bogo::AnimalStrings # Stub in names so knife will detect def self.name @name @@ -52,55 +47,54 @@ end # Properly load in configurations and execute command def run knife = Chef::Config[:knife] - if(knife.respond_to?(:hash_dup)) + if knife.respond_to?(:hash_dup) knife = knife.hash_dup end base = knife.to_smash keys = VALID_PREFIX.dup cmd_config = keys.unshift(keys.delete(snake(self.class.name.split('::').last).to_s.split('_').first)).map do |k| base[k] end.compact.first || {} cmd_config = cmd_config.to_smash - reconfig = config.find_all do |k,v| + reconfig = config.find_all do |k, v| !v.nil? end # Split up options provided multiple arguments - reconfig.map! do |k,v| - if(v.is_a?(String) && v.include?(',')) + reconfig.map! do |k, v| + if v.is_a?(String) && v.include?(',') v = v.split(',').map(&:strip) end - [k,v] + [k, v] end n_config = Smash[reconfig] cmd_config = cmd_config.deep_merge(n_config) self.class.sfn_class.new(cmd_config, name_args).execute! end # NOOP this merge as it breaks expected state def merge_configs config end - end knife_klass.instance_variable_set(:@name, "Chef::Knife::#{command_class}") knife_klass.instance_variable_set( :@sfn_class, Bogo::Utility.constantize(klass.name.sub('Config', 'Command')) ) knife_klass.banner "knife #{prefix} #{Bogo::Utility.snake(klass_name)}" Sfn::Config.options_for(klass).each do |name, info| - if(info[:boolean]) + if info[:boolean] short = "-#{info[:short]}" long = "--[no-]#{info[:long]}" else val = 'VALUE' - if(info[:multiple]) + if info[:multiple] val << '[,VALUE]' end short = "-#{info[:short]} #{val}" long = "--#{info[:long]} #{val}" end @@ -108,10 +102,10 @@ name.to_sym, { :short => short, :long => long, :boolean => info[:boolean], :default => info[:default], - :description => info[:description] + :description => info[:description], } ) end # Set the class as a proper constant Chef::Knife.const_set(command_class, knife_klass)