Skip to content

Instantly share code, notes, and snippets.

@Valiev
Created July 29, 2015 08:43
Show Gist options
  • Save Valiev/f80f224c5526912d75c8 to your computer and use it in GitHub Desktop.
Save Valiev/f80f224c5526912d75c8 to your computer and use it in GitHub Desktop.
require 'ridley'
require 'colorize'
# USAGE
# cmp.rb ET
# cmp.rb ET S3
# cmp.rb ET S3 S3-AWS
def flat obj, prefix=nil
acc = {}
obj.each do |k, v|
key = "#{prefix}#{'.' unless prefix.nil? }#{k}"
if v.class == Hash
acc.update(flat v, key)
else
acc[key] = v
end
end
return acc
end
def color_print msg, warn
colored_msg = warn ? msg.red : msg.green
puts colored_msg
end
def cmp_app_version(*env_names)
chef = Ridley.from_chef_config
flat_versions = env_names.map do |env|
e = chef.environment.find(env)
flat(e.default_attributes['versions'].to_hash)
end
apps = flat_versions.map{|f| f.keys}.flatten.uniq
apps.each do |app|
versions = flat_versions.map{|f| f[app]}
warn = versions.uniq.length != 1
color_print [app, versions].flatten.map{|o| o.nil? ? 'missing' : o}.join(' | '), warn
end
end
def main
raise "Missing env argument(s)" if ARGV.length == 0
cmp_app_version *ARGV
end
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment