in server/aws-lsp-identity/src/language-server/profiles/sharedConfigProfileStore.ts [31:92]
async load(init?: SharedConfigInit): Promise<ProfileData> {
const result: ProfileData = {
profiles: [],
ssoSessions: [],
}
const parsedIni = normalizeParsedIniData(
await parseKnownFiles(this.getSharedConfigInit(init)).catch(reason => {
this.observability.logging.log(`Unable to load shared config. ${reason}`)
throw AwsError.wrap(reason, AwsErrorCodes.E_CANNOT_READ_SHARED_CONFIG)
})
)
for (const [parsedSectionName, settings] of Object.entries(parsedIni)) {
const sectionHeader = SectionHeader.fromParsedSectionName(parsedSectionName)
switch (sectionHeader.type) {
case IniSectionType.PROFILE:
result.profiles.push({
kinds: [
// As more profile kinds are added this will get more complex and need refactored
profileDuckTypers.SsoTokenProfile.eval(settings)
? ProfileKind.SsoTokenProfile
: ProfileKind.Unknown,
],
name: sectionHeader.name,
settings: {
// Only apply settings expected on Profile
region: settings.region,
sso_session: settings.sso_session,
},
})
break
case IniSectionType.SSO_SESSION: {
if (!ssoSessionDuckTyper.eval(settings)) {
continue
}
const ssoSession: SsoSession = {
name: sectionHeader.name,
settings: {
// Only apply settings expected on SsoSession
sso_region: settings.sso_region!,
sso_start_url: settings.sso_start_url!,
},
}
if (settings.sso_registration_scopes) {
ssoSession.settings!.sso_registration_scopes = normalizeSettingList(
settings.sso_registration_scopes
)
}
result.ssoSessions.push(ssoSession)
break
}
// IniSectionType.SERVICES not currently supported
}
}
this.observability.logging.log('Loaded shared config.')
return result
}