lib/docman/docroot_config.rb in docman-0.0.99 vs lib/docman/docroot_config.rb in docman-0.0.100

- old
+ new

@@ -6,11 +6,13 @@ class DocrootConfig attr_reader :structure, :deploy_target, :docroot_dir, :docroot_config_dir, :config_dir, :root, :raw_infos - def initialize(docroot_dir, deploy_target_name = nil, options = nil) + def initialize(docroot_dir, deploy_target_name = nil, options = nil, state = nil) + @state = state + @override = {} if options && options['config'] @override = JSON.parse(options['config']) end @docroot_dir = docroot_dir @@ -88,10 +90,12 @@ if @override['projects'] && @override['projects'].key?(info['name']) info.merge! @override['projects'][info['name']] end + info = override_from_environment(info) + i = Docman::Info.new(info) @root = i if parent.nil? i['root'] = @root @names[name.to_s] = i @@ -128,10 +132,12 @@ if @override['projects'] && @override['projects'].key?(info['name']) info.merge! @override['projects'][info['name']] end + info = override_from_environment(info) + i = Docman::Info.new(info) @root = i if parent.nil? i['root'] = @root @names[name.to_s] = i @@ -145,9 +151,57 @@ children << dir_hash end end end i + end + + def override_from_environment(info) + + docman_config_var = "DOCMAN_CONFIG" + if ENV.has_key? docman_config_var and ENV[docman_config_var].length > 0 + puts "Variable #{docman_config_var} => #{ENV[docman_config_var]}" + docman_config_overrides = JSON.parse(ENV[docman_config_var]) + if docman_config_overrides['projects'] && docman_config_overrides['projects'].key?(info['name']) + info.merge! docman_config_overrides['projects'][info['name']] + end + else + puts "Variable #{docman_config_var} not found." + end + + docman_repo_var = "DOCMAN_PROJECTS_#{info['name'].upcase}_REPO" + if ENV.has_key? docman_repo_var and ENV[docman_repo_var].length > 0 + puts "Variable #{docman_repo_var} => #{ENV[docman_repo_var]}" + info['repo'] = ENV[docman_repo_var] + else + puts "Variable #{docman_repo_var} not found." + end + + docman_order_var = "DOCMAN_PROJECTS_#{info['name'].upcase}_ORDER" + if ENV.has_key? docman_order_var and ENV[docman_tag_var].length > 0 + puts "Variable #{docman_order_var} => #{ENV[docman_order_var]}" + info['order'] = ENV[docman_order_var] + else + puts "Variable #{docman_order_var} not found." + end + + docman_version_var = "DOCMAN_PROJECTS_#{info['name'].upcase}_VERSION" + if ENV.has_key? docman_version_var and ENV[docman_version_var].length > 0 + puts "Variable #{docman_version_var} => #{ENV[docman_version_var]}" + if @state.nil? + info['states'].each do |k,v| + info['states'][k]['type'] = "branch" + info['states'][k]['version'] = ENV[docman_version_var] + end + else + info['states'][@state]['type'] = "branch" + info['states'][@state]['version'] = ENV[docman_version_var] + end + else + puts "Variable #{docman_version_var} not found." + end + + info end def chain(info) chain = {} chain[info['name']] = info