#!/usr/bin/env ruby
require 'rubygems'
require 'bundler'
Bundler.require(:default)
require "yaml"
require "json"
require "mantra"
manifest_path = ARGV.shift
release_path = ARGV.shift
if manifest_path.nil? || release_path.nil?
puts "run as following: get-full-context <manifest_path> <release_path>"
exit(1)
end
job_spec_files = Dir[File.join(release_path, "jobs/*/spec")]
release_proprties = job_spec_files.map do |file|
YAML.load_file(file)["properties"]
end.compact.inject({}) do |res, props|
res.merge!(props)
end.select { |key, value| !value["default"].nil? }
release_default_proprties = {}
release_proprties.each_pair do |key, value|
release_default_proprties[key] = value["default"]
end
manifest = Mantra::Manifest.new(manifest_path)
release_default_proprties = release_default_proprties.each_pair.inject(Mantra::Manifest::Element.create({})) do |result, pair|
result.merge(Mantra::Manifest::Element.element_with_selector(pair.first, pair.last))
result
end
resulting_properties = manifest.properties.merge(release_default_proprties, force: true)
puts JSON.generate({"properties" => resulting_properties.to_ruby_object})