Sha256: a231e5dbe93d285ca91d9a5fdf95a12a839febdd6405fee4f5beabe9f3eb07dc
Contents?: true
Size: 1.49 KB
Versions: 4
Compression:
Stored size: 1.49 KB
Contents
require 'yaml' module HerokuSan class Parser include HerokuSan::Git attr_accessor :settings def parse(parseable) @settings = parse_yaml(parseable.config_file) convert_from_heroku_san_format parseable.external_configuration = @settings.delete 'config_repo' each_setting_has_a_config_section parseable.configuration = @settings end def convert_from_heroku_san_format (settings.delete('apps') || {}).each_pair do |stage, app_name| settings[stage] = {'app' => app_name} end end def each_setting_has_a_config_section settings.keys.each do |name| settings[name] ||= {} settings[name]['config'] ||= {} end end def merge_external_config!(parseable, stages) extra_config = parse_external_config!(parseable.external_configuration) return unless extra_config stages.each do |stage| stage.config.merge!(extra_config[stage.name]) if extra_config[stage.name] end end def parse_external_config!(config_repo) return if config_repo.nil? require 'tmpdir' Dir.mktmpdir do |dir| git_clone config_repo, dir parse_yaml File.join(dir, 'config.yml') end end private def parse_yaml(config_file) if File.exists?(config_file) if defined?(ERB) YAML.load(ERB.new(File.read(config_file)).result) else YAML.load_file(config_file) end else {} end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
heroku_san-4.4.0 | lib/heroku_san/parser.rb |
heroku_san-4.3.2 | lib/heroku_san/parser.rb |
heroku_san-4.3.1 | lib/heroku_san/parser.rb |
heroku_san-4.3.0 | lib/heroku_san/parser.rb |