Method: Inspec::Config#unpack_train_credentials

Defined in:
lib/inspec/config.rb

#unpack_train_credentialsObject

Returns a Hash with Symbol keys as follows:

backend: machine name of the Train transport needed
If present, any of the GENERIC_CREDENTIALS.
All other keys are specific to the backend.

The credentials are gleaned from:

* the Train transport defaults. Train handles this on transport creation,
    so this method doesn't load defaults.
* individual InSpec CLI options (which in many cases may have the
    transport name prefixed, which is stripped before being added
    to the creds hash)
* the --target CLI option, which is interpreted:
   - as a transport://credset format, which looks up the creds in
     the config file in the credentials section
   - as an arbitrary URI, which is parsed by Train.unpack_target_from_uri


101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/inspec/config.rb', line 101

def unpack_train_credentials
  # Internally, use indifferent access while we build the creds
  credentials = Thor::CoreExt::HashWithIndifferentAccess.new({})

  # Helper methods prefixed with _utc_ (Unpack Train Credentials)

  credentials.merge!(_utc_generic_credentials)

  _utc_determine_backend(credentials)
  transport_name = credentials[:backend].to_s

  _utc_merge_credset(credentials, transport_name)
  _utc_merge_transport_options(credentials, transport_name)

  # Convert to all-Symbol keys
  credentials.each_with_object({}) do |(option, value), creds|
    creds[option.to_sym] = value
    creds
  end
end