class Yle::AWS::Role::Accounts

Attributes

aliases[R]

Public Class Methods

new(aliases = nil) click to toggle source
# File lib/yle/aws/role/accounts.rb, line 11
def initialize(aliases = nil)
  @aliases = aliases || {}
end

Public Instance Methods

account_id?(id_or_alias) click to toggle source

Returns truish if the argument looks like an AWS Account ID

# File lib/yle/aws/role/accounts.rb, line 35
def account_id?(id_or_alias)
  id_or_alias =~ /^\d{12}$/
end
alias_matcher(id_or_alias) click to toggle source
# File lib/yle/aws/role/accounts.rb, line 44
def alias_matcher(id_or_alias)
  pattern = id_or_alias.gsub(/([^^])(?=[^$])/, '\1.*')
  Regexp.new(pattern)
end
best_matching_account(id_or_alias) click to toggle source
# File lib/yle/aws/role/accounts.rb, line 39
def best_matching_account(id_or_alias)
  matcher = alias_matcher(id_or_alias)
  aliases.keys.select { |key| matcher =~ key }.min_by(&:length)
end
find(id_or_alias) click to toggle source

Returns an `AccountAlias` that best matches the passed string

# File lib/yle/aws/role/accounts.rb, line 16
def find(id_or_alias)
  id_or_alias = id_or_alias.to_s
  if account_id?(id_or_alias)
    name = aliases.key(id_or_alias) || id_or_alias
    AccountAlias.new(name, id_or_alias)
  else
    name = best_matching_account(id_or_alias)
    AccountAlias.new(name, aliases[name]) if name
  end
end
to_s() click to toggle source
# File lib/yle/aws/role/accounts.rb, line 27
def to_s
  max_name_length = aliases.keys.map(&:length).max
  aliases.sort.map do |name, id|
    "#{name.ljust(max_name_length)}\t#{id}"
  end.join("\n")
end