require 'action_view' require 'pathname' require 'yaml' module CKnife class Formatter include ActionView::Helpers::TagHelper include ActionView::Helpers::TextHelper end class Config def self.config return @config if @config @config = { :key => ENV["KEY"] || ENV['AMAZON_ACCESS_KEY_ID'], :secret => ENV["SECRET"] || ENV['AMAZON_SECRET_ACCESS_KEY'] } config_file = nil Pathname.new(Dir.getwd).tap do |here| config_file = [["cknife.yml"], ["tmp", "cknife.yml"]].map { |args| here.join(*args) }.select { |path| File.exists?(path) }.first end if config_file begin @config.merge!(YAML.load(config_file.read)) rescue puts "Found, but could not parse config: #{config_file}" end end @config end def self.[](s) get(s) end def self.get(path) cur = config path.to_s.split('.').each do |segment| cur = cur[segment.force_encoding('UTF-8').to_s] if cur end if cur.nil? cur = ENV[path] end cur end end end