lib/terragov/buildpaths.rb in terragov-0.2.3 vs lib/terragov/buildpaths.rb in terragov-0.2.4

- old
+ new

@@ -1,98 +1,96 @@ require_relative 'cli' module Terragov class BuildPaths - - def base(options={}) - + def base(options = {}) environment = options['environment'] data_dir = options['data_dir'] repo_dir = options['repo_dir'] stack = options['stack'] project = options['project'] extra = options['extra'] # Construct variables - terraform_dir = File.join(repo_dir, "terraform") + terraform_dir = File.join(repo_dir, 'terraform') project_dir = File.join(terraform_dir, "projects/#{project}") backend_file = File.join(project_dir, "#{environment}.#{stack}.backend") common_data_dir = File.join(data_dir, "common/#{environment}") - common_data = File.join(common_data_dir, "common.tfvars") + common_data = File.join(common_data_dir, 'common.tfvars') stack_common_data = File.join(common_data_dir, "#{stack}.tfvars") project_data_dir = File.join(data_dir, "#{project}/#{environment}") - common_project_data = File.join(project_data_dir, "common.tfvars") - secret_common_project_data = File.join(project_data_dir, "common.secret.tfvars") + common_project_data = File.join(project_data_dir, 'common.tfvars') + secret_common_project_data = File.join(project_data_dir, 'common.secret.tfvars') stack_project_data = File.join(project_data_dir, "#{stack}.tfvars") secret_project_data = File.join(project_data_dir, "#{stack}.secret.tfvars") # Return hash to enable testing data_paths = { - :terraform_dir => terraform_dir, - :project_dir => project_dir, - :backend_file => backend_file, - :common_data_dir => common_data_dir, - :common_data => common_data, - :stack_common_data => stack_common_data, - :project_data_dir => project_data_dir, - :common_project_data => common_project_data, - :secret_common_project_data => secret_common_project_data, - :stack_project_data => stack_project_data, - :secret_project_data => secret_project_data, + terraform_dir: terraform_dir, + project_dir: project_dir, + backend_file: backend_file, + common_data_dir: common_data_dir, + common_data: common_data, + stack_common_data: stack_common_data, + project_data_dir: project_data_dir, + common_project_data: common_project_data, + secret_common_project_data: secret_common_project_data, + stack_project_data: stack_project_data, + secret_project_data: secret_project_data } end def data_validation(path, required = false) if required if File.exist?(path) - return true + true else abort("Invalid directory or file: #{path}") end else if File.exist?(path) - return true + true else - return false + false end end end - def data_paths(options={}) + def data_paths(options = {}) # The path order is important for passing the var files in the correct # order to Terraform as that creates the hierarchy for overrides base = self.base(options) paths = [ base[:common_data], base[:stack_common_data], base[:common_project_data], base[:secret_common_project_data], base[:stack_project_data], - base[:secret_project_data], + base[:secret_project_data] ] end def check_var_files(paths = []) $path_array = [] paths.each do |path| $path_array << data_validation(path) end - unless $path_array.include? true - puts "Files checked: " + if $path_array.include? true + return true + else + puts 'Files checked: ' paths.each do |path| puts path end return false - else - return true end end - def build_command(options={}) - paths = self.base(options) - abort("Cannot find main repository") unless data_validation(paths[:terraform_dir], true) + def build_command(options = {}) + paths = base(options) + abort('Cannot find main repository') unless data_validation(paths[:terraform_dir], true) var_paths = data_paths(options) abort("Can't find any var files") unless check_var_files(var_paths) $full_vars = [] data_paths(options).each do |path| @@ -105,11 +103,11 @@ end end end # If defining additional Terraform commands, they need to be passed in as one string, # with any hyphens escaped twice so it does not conflict with commander CLI options - extra = options["extra"].to_s - $full_vars << extra.gsub('\\', '') - return $full_vars.join(" ") + extra = options['extra'].to_s + $full_vars << extra.delete('\\') + $full_vars.join(' ') end end end