Class: Exa::CLI::AccountResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/exa/cli/account_resolver.rb

Defined Under Namespace

Classes: MissingCredentialsError, Result, UnknownAccountError

Constant Summary collapse

DEFAULT_BASE_URL =
"https://api.exa.ai"

Instance Method Summary collapse

Constructor Details

#initialize(config_store:) ⇒ AccountResolver

Returns a new instance of AccountResolver.



15
16
17
# File 'lib/exa/cli/account_resolver.rb', line 15

def initialize(config_store:)
  @config_store = config_store
end

Instance Method Details

#resolve(options:, env: ENV) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/exa/cli/account_resolver.rb', line 19

def resolve(options:, env: ENV)
  data = config_store.read
   = options[:account] || env["EXA_ACCOUNT"] || data["default"]
   = (data, ) if 

  api_key = options[:api_key] ||
            env["EXA_API_KEY"] ||
            &.dig("api_key")

  base_url = options[:base_url] ||
             env["EXA_BASE_URL"] ||
             &.dig("base_url") ||
             DEFAULT_BASE_URL

  unless api_key
    raise MissingCredentialsError,
          "Missing API key. Provide --api-key, set EXA_API_KEY, or add an account via `exa accounts:add`."
  end

  Result.new(api_key: api_key, base_url: base_url, account: )
end