Class: Coach::Cli::ProviderFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/coach/cli/provider_finder.rb

Instance Method Summary collapse

Constructor Details

#initialize(middleware_name, value_name) ⇒ ProviderFinder

Returns a new instance of ProviderFinder.



9
10
11
12
# File 'lib/coach/cli/provider_finder.rb', line 9

def initialize(middleware_name, value_name)
  @middleware_name = middleware_name
  @value_name = value_name
end

Instance Method Details

#find_chainObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/coach/cli/provider_finder.rb', line 32

def find_chain
  enforce_middleware_exists!
  middleware = Module.const_get(@middleware_name)

  enforce_middleware_requires_value!(middleware)

  provider_chain = build_provider_chain(middleware, Hash.new { Set.new }, [])

  if provider_chain.key?(@value_name.to_sym)
    chains = provider_chain[@value_name.to_sym]
  else
    err = Errors::ValueNotProvidedError.new(@middleware_name, @value_name)
    raise err
  end

  chains.map { |chain| chain.map(&:to_s).reverse }.to_set
end

#find_providerObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/coach/cli/provider_finder.rb', line 14

def find_provider
  enforce_middleware_exists!
  middleware = Module.const_get(@middleware_name)

  enforce_middleware_requires_value!(middleware)

  provider_mapping = build_provider_mapping(middleware, Hash.new { Set.new })

  if provider_mapping.key?(@value_name.to_sym)
    providers = provider_mapping[@value_name.to_sym]
  else
    err = Errors::ValueNotProvidedError.new(@middleware_name, @value_name)
    raise err
  end

  providers.to_a.map(&:to_s)
end