Skip to content

Instantly share code, notes, and snippets.

@allomov
Created March 15, 2017 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save allomov/c2e7780384674fa85486cc3c3f6bf54f to your computer and use it in GitHub Desktop.
Save allomov/c2e7780384674fa85486cc3c3f6bf54f to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
project_dir=$(cd `dirname $0` && cd .. && pwd)
if [ ! -d "$project_dir/uaa-release" ]; then
echo "Please, clone uaa-release repos to the project folder."
exit 1
fi
if [ ! -f "$project_dir/ldap-manifest.yml" ]; then
echo "Please, create ldap-manifest.yml manifest file into the project folder."
exit 1
fi
temp_dir=`mktemp -d`
uaa_release_folder=$project_dir/uaa-release
context=$(./bin/get-full-context $project_dir/ldap-manifest.yml $uaa_release_folder)
bosh-template $uaa_release_folder/jobs/uaa/templates/uaa.yml.erb --context "$context" > $temp_dir/ldap-uaa.yml
mantra transform -m $temp_dir/ldap-uaa.yml -c $project_dir/pcf-uaa-transform.yml > $project_dir/ldap-uaa.yml
#!/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})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment