get-sso-creds
Version:
CLI tool to retrieve or set AWS SSO credentials.
86 lines (85 loc) • 3.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@oclif/core");
const creds_helper_1 = require("../lib/creds-helper");
const console_helper_1 = require("../lib/console-helper");
const profile_helper_1 = require("../lib/profile-helper");
const inquirer = require("inquirer");
const open = require("open");
class Console extends core_1.Command {
static description = "Opens AWS Console for a selected profile.";
static examples = [
`$ gscreds console
? Select a profile: (Use arrow keys)
❯ default
personal`,
];
static flags = {
help: core_1.Flags.help(),
browser: core_1.Flags.string({
char: "b",
options: ["chrome", "firefox", "edge"],
description: `Opens designated browser over the system default.\n
Suggested values: ["chrome", "firefox", "edge"]`,
}),
};
static args = [];
credentials;
loginURL;
async run() {
const { flags } = await this.parse(Console);
let browser = "";
switch (flags.browser) {
case "chrome":
browser = open.apps.chrome;
break;
case "firefox":
browser = open.apps.firefox;
break;
case "edge":
browser = open.apps.edge;
break;
}
try {
const { profileType } = await inquirer.prompt([
{
name: "profileType",
message: "Select a file:",
type: "list",
choices: ["config", "credentials"],
},
]);
const { profile } = await inquirer.prompt([
{
name: "profile",
message: "Select a profile:",
type: "list",
choices: profileType === "config" ? (0, profile_helper_1.getProfileNames)() : (0, profile_helper_1.getCredProfiles)(),
},
]);
core_1.CliUx.ux.action.start("❯ Opening Console");
if (profileType === "config") {
this.credentials = (await (0, creds_helper_1.getProfileCredentials)(profile)).credentials;
}
if (profileType === "credentials") {
this.credentials = (0, creds_helper_1.getCredentialsFromCredentialsFile)(profile);
}
this.loginURL = await (0, console_helper_1.generateLoginURL)(this.credentials);
await open(this.loginURL, {
app: {
name: browser,
},
}).then((result) => {
if (typeof result.exitCode === "number" && result.exitCode > 0) {
throw new Error("Could not open browser.");
}
});
core_1.CliUx.ux.action.stop();
}
catch (error) {
core_1.CliUx.ux.action.stop("failed");
this.error(error.message);
}
}
}
exports.default = Console;