From 70139d37323eb40706f97db87943cb3cfe651317 Mon Sep 17 00:00:00 2001 From: Dan Forsberg Date: Fri, 5 Apr 2024 11:05:44 +0300 Subject: [PATCH] Add aws account config --dump option --- src/bdcli/commands/account/bdcli-account-config.ts | 12 ++++++++++++ src/bdcli/utils/config_util.ts | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/src/bdcli/commands/account/bdcli-account-config.ts b/src/bdcli/commands/account/bdcli-account-config.ts index a37d82f..445e1d8 100644 --- a/src/bdcli/commands/account/bdcli-account-config.ts +++ b/src/bdcli/commands/account/bdcli-account-config.ts @@ -9,6 +9,7 @@ import { updateConfig, profile, combineOptsWithSettings, + dumpConfigProfile, } from "../../utils/config_util.js"; import prompts from "prompts"; import { getEmail } from "../../utils/auth_util.js"; @@ -27,6 +28,16 @@ async function show(options: any, _command: cmd.Command): Promise { return; } + if (options.dump) { + updateSpinnerText(`Dumping profile in ${BDCONF}: ${options.dump}`); + const profileName = options.dump === true ? "default" : options.dump; + const profile = await dumpConfigProfile(profileName, logger); + if (!profile) return spinnerError(`Profile not found: ${profileName}`); + spinnerSuccess(); + console.log(JSON.stringify(profile)); + return; + } + if (options.clear) { updateSpinnerText(`Deleting session tokens from ${BDCONF}`); await updateConfig({ @@ -90,6 +101,7 @@ const program = new cmd.Command("bdcli account config") .addOption(new cmd.Option("--clear", "delete all session tokens (for opt. selected profile)")) .addOption(new cmd.Option("--region ", "Sign-in AWS region").default("eu-west-1")) .addOption(new cmd.Option("--list", `List all config profiles (see ${BDCONF})`)) + .addOption(new cmd.Option("--dump [profile]", `Dump selected config profile (see ${BDCONF})`)) .action(async (options, command) => await show(options, command)); (async () => { diff --git a/src/bdcli/utils/config_util.ts b/src/bdcli/utils/config_util.ts index c505150..1d6057d 100644 --- a/src/bdcli/utils/config_util.ts +++ b/src/bdcli/utils/config_util.ts @@ -66,6 +66,14 @@ export async function listConfigProfiles(logger?: ILogger): Promise { } } +export async function dumpConfigProfile(profile: string, logger?: ILogger): Promise { + logger?.debug({ profile }); + const config = yaml.load(await fs.readFile(configFile, "utf8")); + const dump = config?.credentials ? config : config?.[profile != "true" ? profile : "default"]; + if (!dump) return; + return dump; +} + export async function updateConfig(updates: IConfig, logger?: ILogger): Promise { let config: any = {}; try {