class Simp::Metadata::Commands::Release

Public Instance Methods

run(argv, engine = nil) click to toggle source
# File lib/simp/metadata/commands/release.rb, line 6
def run(argv, engine = nil)
  options = defaults(argv) do |opts,options|
    opts.banner = 'Usage: simp-metadata release <release_name> [components]'
    opts.banner = '       simp-metadata release diff <release1> <release2>'
  end
  engine, root = get_engine(engine, options)
  begin
    section = argv[0]

    case section
    when 'components'
      puts engine.releases[options['release']].components.keys.join("\n")

    when 'puppetfile'
      type = argv[1]
      puts engine.releases[options['release']].puppetfile('type' => type)

    when 'diff'
      release1 = argv[1]
      release2 = argv[2]
      attribute = argv[3]
      release1 = engine.releases[release1]
      release2 = engine.releases[release2]
      diff = release1.diff(release2, attribute)
      puts diff.to_yaml
    else
      puts 'components:'
      engine.releases[options['release']].components.keys.each do |line|
        puts "    #{line}"
      end
    end

  rescue RuntimeError => e
    Simp::Metadata.critical(e.message)
    exit 5
  end
end