lib/knife-spork/plugins/plugin.rb in knife-spork-1.7.2 vs lib/knife-spork/plugins/plugin.rb in knife-spork-1.7.3

- old
+ new

@@ -1,117 +1,117 @@ -module KnifeSpork - module Plugins - class Plugin - # This is the name of the plugin. It must correspond to the name in the yaml configuration - # file in order to load this plugin. If an attribute is passed in, the name is set to that - # given value. Otherwise, the name is returned. - def self.name(name = nil) - if name.nil? - class_variable_get(:@@name) - else - class_variable_set(:@@name, name) - end - end - - # This is a convenience method for defining multiple hooks in a single call. - def self.hooks(*the_hooks) - [the_hooks].flatten.each{ |the_hook| hook(the_hook) } - end - - # When defining a hook, we define a method on the instance that corresponds to that - # hook. That will be fired when the hook is fired. - def self.hook(the_hook) - self.send(:define_method, the_hook.to_sym) do - perform - end - end - - def initialize(options = {}) - @options = { - :payload => {} - }.merge(options) - end - - def enabled? - !(config.nil? || config.enabled == false) - end - - private - def config - @options[:config].plugins.send(self.class.name.to_sym) unless @options[:config].nil? || @options[:config].plugins.nil? - end - - def organization - unless ::Chef::Config.chef_server_url.nil? - split_server_url = Chef::Config.chef_server_url.gsub(/http(s)?:\/\//,"").split('/') - if split_server_url.length > 1 - return "#{split_server_url.last}: " - end - end - - nil - end - - def cookbooks - @options[:cookbooks] - end - - def environments - @options[:environments] - end - - def environment_diffs - @options[:environment_diffs] - end - - def environment_path - @options[:environment_path] - end - - def cookbook_path - @options[:cookbook_path] - end - - def role_path - File.expand_path(config.role_path.nil? ? "#{cookbook_path}/../roles" : config[:role_path]) - end - - def node_path - File.expand_path(config.role_path.nil? ? "#{cookbook_path}/../nodes" : config[:role_path]) - end - - def object_name - @options[:object_name] - end - - def object_secondary_name - @options[:object_secondary_name] - end - - def object_difference - @options[:object_difference] - end - - def misc_output - @options[:misc_output] - end - - def ui - @options[:ui] - end - - def current_user - (begin `git config user.name`.chomp; rescue nil; end || ENV['USERNAME'] || ENV['USER']).strip - end - - # Wrapper method around require that attempts to include the associated file. If it does not exist - # or cannot be loaded, an nice error is produced instead of blowing up. - def safe_require(file) - begin - require file - rescue LoadError - raise "You are using a plugin for knife-spork that requires #{file}, but you have not installed it. Please either run \"gem install #{file}\", add #{file} to your Gemfile or remove the plugin from your configuration." - end - end - end - end -end +module KnifeSpork + module Plugins + class Plugin + # This is the name of the plugin. It must correspond to the name in the yaml configuration + # file in order to load this plugin. If an attribute is passed in, the name is set to that + # given value. Otherwise, the name is returned. + def self.name(name = nil) + if name.nil? + class_variable_get(:@@name) + else + class_variable_set(:@@name, name) + end + end + + # This is a convenience method for defining multiple hooks in a single call. + def self.hooks(*the_hooks) + [the_hooks].flatten.each{ |the_hook| hook(the_hook) } + end + + # When defining a hook, we define a method on the instance that corresponds to that + # hook. That will be fired when the hook is fired. + def self.hook(the_hook) + self.send(:define_method, the_hook.to_sym) do + perform + end + end + + def initialize(options = {}) + @options = { + :payload => {} + }.merge(options) + end + + def enabled? + !(config.nil? || config.enabled == false) + end + + private + def config + @options[:config].plugins.send(self.class.name.to_sym) unless @options[:config].nil? || @options[:config].plugins.nil? + end + + def organization + unless ::Chef::Config.chef_server_url.nil? + split_server_url = Chef::Config.chef_server_url.gsub(/http(s)?:\/\//,"").split('/') + if split_server_url.length > 1 + return "#{split_server_url.last}: " + end + end + + nil + end + + def cookbooks + @options[:cookbooks] + end + + def environments + @options[:environments] + end + + def environment_diffs + @options[:environment_diffs] + end + + def environment_path + @options[:environment_path] + end + + def cookbook_path + @options[:cookbook_path] + end + + def role_path + File.expand_path(config.role_path.nil? ? "#{cookbook_path}/../roles" : config[:role_path]) + end + + def node_path + File.expand_path(config.role_path.nil? ? "#{cookbook_path}/../nodes" : config[:role_path]) + end + + def object_name + @options[:object_name] + end + + def object_secondary_name + @options[:object_secondary_name] + end + + def object_difference + @options[:object_difference] + end + + def misc_output + @options[:misc_output] + end + + def ui + @options[:ui] + end + + def current_user + (begin `git config user.name`.chomp; rescue nil; end || ENV['USERNAME'] || ENV['USER']).strip + end + + # Wrapper method around require that attempts to include the associated file. If it does not exist + # or cannot be loaded, an nice error is produced instead of blowing up. + def safe_require(file) + begin + require file + rescue LoadError + raise "You are using a plugin for knife-spork that requires #{file}, but you have not installed it. Please either run \"gem install #{file}\", add #{file} to your Gemfile or remove the plugin from your configuration." + end + end + end + end +end