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