module Chambermaid::Base

Public Class Methods

extended(base) click to toggle source
# File lib/chambermaid/base.rb, line 6
def self.extended(base)
  # Make a copy of ENV before we mess it all up
  @@_original_env = ENV.to_h.dup.freeze
end

Public Instance Methods

add_namespace(path, overload: false) click to toggle source

Add an AWS SSM parameter namespace to ENV

@param [String] path @param [Boolean] overload

true  - replace any duplicate ENV keys with new params
false - keep any existing duplicate ENV key values

@raise [ArgumentError]

when `path` is not a string

@example

Chambermaid.add_namespace("/my/param/namespace")

@example overload duplicate ENV vars

Chambermaid.add_namespace("/my/param/namespace", overload: true)
# File lib/chambermaid/base.rb, line 57
def add_namespace(path, overload: false)
  raise ArgumentError.new("`path` must be a string") unless path.is_a?(String)
  raise ArgumentError.new("`overload` must be a boolean") unless [true, false].include?(overload)

  namespaces << Namespace.new(path: path, overload: overload)
end
add_namespace!(path, overload: false) click to toggle source

Immediately load an AWS SSM parameter namespace to ENV

@param [String] path @param [Boolean] overload

true  - replace any duplicate ENV keys with new params
false - keep any existing duplicate ENV key values

@raise [ArgumentError]

when `path` is not a string

@example

Chambermaid.add_namespace!("/my/param/namespace")

@example overload duplicate ENV vars

Chambermaid.add_namespace("/my/param/namespace", overload: true)
# File lib/chambermaid/base.rb, line 79
def add_namespace!(path, overload: false)
  raise ArgumentError.new("`path` must be a string") unless path.is_a?(String)
  raise ArgumentError.new("`overload` must be a boolean") unless [true, false].include?(overload)

  namespaces << Namespace.load!(path: path, overload: overload)
end
add_service(service, overload: false) click to toggle source

Add all secrets from Chamber service to ENV

@param [String] service @param [Boolean] overload

true  - replace any duplicate ENV keys with new params
false - keep any existing duplicate ENV key values

@example

Chambermaid.add_service("my-chamber-service")

@example overload duplicate ENV vars

Chambermaid.add_service("my-chamber-service", overload: true)

@see {Chambermaid::Base.add_namespace}

# File lib/chambermaid/base.rb, line 100
def add_service(service, overload: false)
  service = "/#{service}" unless service[0] == "/"
  add_namespace(service)
end
configuration() click to toggle source

@todo

# File lib/chambermaid/base.rb, line 18
def configuration
  raise "Namespaces must be defined" unless @namespaces
end
configure() { |self| ... } click to toggle source
# File lib/chambermaid/base.rb, line 13
def configure
  yield self
end
load!() click to toggle source

Load SSM into ENV

# File lib/chambermaid/base.rb, line 23
def load!
  @namespaces.each(&:load!)
end
log_level() click to toggle source

!@attribute [r] log_level

@return [Symbol] (default = :info) current logger level
# File lib/chambermaid/base.rb, line 124
def log_level
  return logger.level unless @logger.nil?
  return @log_level unless @log_level.nil?
  return :info
end
log_level=(val = :info) click to toggle source

!@attribute [w] log_level

@return [Symbol] (default = :info) current logger level
# File lib/chambermaid/base.rb, line 132
def log_level=(val = :info)
  @logger.level = val unless @logger.nil?
  @log_level = val
  val
end
logger() click to toggle source

!@attribute [r] logger

@return [Logger]
# File lib/chambermaid/base.rb, line 107
def logger
  @logger ||= Logger.new(STDOUT,
    level: log_level,
    progname: "Chambermaid"
  )
end
logger=(val) click to toggle source

!@attribute [w] logger

@return [Logger]
# File lib/chambermaid/base.rb, line 116
def logger=(val)
  @logger = val
  @logger.progname = "Chambermaid"
  logger
end
reload!() click to toggle source

@todo

# File lib/chambermaid/base.rb, line 28
def reload!
  @namespaces.each(&:reload!)
end
reset!()
Alias for: restore!
restore!() click to toggle source

Restore ENV to its original state

# File lib/chambermaid/base.rb, line 37
def restore!
  ENV.replace(@@_original_env)
end
Also aliased as: reset!
unload!() click to toggle source
# File lib/chambermaid/base.rb, line 32
def unload!
  @namespaces.each(&:unload!)
end

Private Instance Methods

namespaces() click to toggle source
# File lib/chambermaid/base.rb, line 140
def namespaces
  @namespaces ||= []
end