lib/leap_cli/config/secrets.rb in leap_cli-1.5.6 vs lib/leap_cli/config/secrets.rb in leap_cli-1.6.2

- old
+ new

@@ -11,35 +11,47 @@ def initialize(manager=nil) super(manager) @discovered_keys = {} end + # we can't use fetch() or get(), since those already have special meanings + def retrieve(key, environment=nil) + self.fetch(environment||'default', {})[key.to_s] + end + def set(key, value, environment=nil) environment ||= 'default' key = key.to_s @discovered_keys[environment] ||= {} @discovered_keys[environment][key] = true self[environment] ||= {} self[environment][key] ||= value end # - # if only_discovered_keys is true, then we will only export - # those secrets that have been discovered and the prior ones will be cleaned out. + # if clean is true, then only secrets that have been discovered + # during this run will be exported. # - # this should only be triggered when all nodes have been processed, otherwise - # secrets that are actually in use will get mistakenly removed. + # if environment is also pinned, then we will clean those secrets + # just for that environment. # - def dump_json(only_discovered_keys=false) - if only_discovered_keys + # the clean argument should only be used when all nodes have + # been processed, otherwise secrets that are actually in use will + # get mistakenly removed. + # + def dump_json(clean=false) + pinned_env = LeapCli.leapfile.environment + if clean self.each_key do |environment| - self[environment].each_key do |key| - unless @discovered_keys[environment] && @discovered_keys[environment][key] - self[environment].delete(key) + if pinned_env.nil? || pinned_env == environment + self[environment].each_key do |key| + unless @discovered_keys[environment] && @discovered_keys[environment][key] + self[environment].delete(key) + end end - end - if self[environment].empty? - self.delete(environment) + if self[environment].empty? + self.delete(environment) + end end end end super() end