class Builtins::Envdiff
Public Class Methods
description()
click to toggle source
# File lib/builtins/envdiff.rb, line 8 def description "compares keys present in config and secrets between different environments" end
Public Instance Methods
run()
click to toggle source
# File lib/builtins/envdiff.rb, line 13 def run check_args if source_only_keys.empty? && dest_only_keys.empty? Output.out("Environments '#{source_env}' and '#{dest_env}' define the same #{source_keys.length} key(s).") return end output_key_summary(source_only_keys, source_env, dest_env) if source_only_keys.any? output_key_summary(dest_only_keys, dest_env, source_env) if dest_only_keys.any? end
Private Instance Methods
check_args()
click to toggle source
# File lib/builtins/envdiff.rb, line 83 def check_args raise Builtin::ArgumentError, "Usage: ops envdiff <env_one> <env_two>" unless args.length == 2 check_environment(source_env) check_environment(dest_env) end
check_environment(name)
click to toggle source
# File lib/builtins/envdiff.rb, line 98 def check_environment(name) raise_missing_file_error(config_path_for(name)) unless config_file_exists?(name) raise_missing_file_error(secrets_path_for(name)) unless secrets_file_exists?(name) end
config_file_exists?(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 107 def config_file_exists?(env) File.exist?(config_path_for(env)) end
config_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 75 def config_for(env) YAML.load_file(config_path_for(env)) end
config_keys_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 67 def config_keys_for(env) (config_for(env)["environment"]&.keys || []) - ignored_keys end
config_path_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 115 def config_path_for(env) AppConfig.config_path_for(env) end
dest_env()
click to toggle source
# File lib/builtins/envdiff.rb, line 94 def dest_env args[1] end
dest_keys()
click to toggle source
# File lib/builtins/envdiff.rb, line 47 def dest_keys @dest_keys ||= keys_for(dest_env) end
dest_only_keys()
click to toggle source
# File lib/builtins/envdiff.rb, line 39 def dest_only_keys @dest_only_keys ||= dest_keys - source_keys end
ignored_keys()
click to toggle source
# File lib/builtins/envdiff.rb, line 123 def ignored_keys Options.get("envdiff.ignored_keys") || [] end
keys_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 51 def keys_for(env) tagged_config_keys_for(env) + tagged_secrets_keys_for(env) end
output_key_summary(keys, in_env, not_in_env)
click to toggle source
# File lib/builtins/envdiff.rb, line 27 def output_key_summary(keys, in_env, not_in_env) Output.warn("Environment '#{in_env}' defines keys that '#{not_in_env}' does not:\n") keys.each do |key| Output.warn(" - #{key}") end Output.out("") end
raise_missing_file_error(path)
click to toggle source
# File lib/builtins/envdiff.rb, line 103 def raise_missing_file_error(path) raise Builtin::ArgumentError, "File '#{path}' does not exist." end
secrets_file_exists?(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 111 def secrets_file_exists?(env) File.exist?(secrets_path_for(env)) end
secrets_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 79 def secrets_for(env) YAML.load_file(secrets_path_for(env)) end
secrets_keys_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 71 def secrets_keys_for(env) (secrets_for(env)["environment"]&.keys || []) - ignored_keys end
secrets_path_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 119 def secrets_path_for(env) Secrets.config_path_for(env) end
source_env()
click to toggle source
# File lib/builtins/envdiff.rb, line 90 def source_env args[0] end
source_keys()
click to toggle source
# File lib/builtins/envdiff.rb, line 43 def source_keys @source_keys ||= keys_for(source_env) end
source_only_keys()
click to toggle source
# File lib/builtins/envdiff.rb, line 35 def source_only_keys @source_only_keys ||= source_keys - dest_keys end
tagged_config_keys_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 55 def tagged_config_keys_for(env) config_keys_for(env).map do |key| "[CONFIG] #{key}" end end
tagged_secrets_keys_for(env)
click to toggle source
# File lib/builtins/envdiff.rb, line 61 def tagged_secrets_keys_for(env) secrets_keys_for(env).map do |key| "[SECRET] #{key}" end end