# File lib/chef/knife/exec.rb, line 63 def find_script(x) # Try to find a script. First try expanding the path given. script = File.expand_path(x) return script if File.exists?(script) # Failing that, try searching the script path. If we can't find # anything, fail gracefully. Chef::Log.debug("Searching script_path: #{config[:script_path].inspect}") config[:script_path].each do |path| path = File.expand_path(path) test = File.join(path, x) Chef::Log.debug("Testing: #{test}") if File.exists?(test) script = test Chef::Log.debug("Found: #{test}") return script end end ui.error("\"#{x}\" not found in current directory or script_path, giving up.") exit(1) end
# File lib/chef/knife/exec.rb, line 40 def run config[:script_path] ||= Array(Chef::Config[:script_path]) # Default script paths are chef-repo/.chef/scripts and ~/.chef/scripts config[:script_path] << File.join(Chef::Knife.chef_config_dir, 'scripts') if Chef::Knife.chef_config_dir config[:script_path] << File.join(ENV['HOME'], '.chef', 'scripts') if ENV['HOME'] scripts = Array(name_args) context = Object.new Shef::Extensions.extend_context_object(context) if config[:exec] context.instance_eval(config[:exec], "-E Argument", 0) elsif !scripts.empty? scripts.each do |script| file = find_script(script) context.instance_eval(IO.read(file), file, 0) end else script = STDIN.read context.instance_eval(script, "STDIN", 0) end end
Generated with the Darkfish Rdoc Generator 2.