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