UNPKG

@redocly/cli

Version:

[@Redocly](https://redocly.com) CLI is your all-in-one OpenAPI utility. It builds, manages, improves, and quality-checks your OpenAPI descriptions, all of which comes in handy for various phases of the API Lifecycle. Create your own rulesets to make API g

67 lines (58 loc) 2.19 kB
import { blue, green, gray, yellow } from 'colorette'; import { RedoclyClient } from '@redocly/openapi-core'; import { exitWithError, promptUser } from '../utils/miscellaneous'; import { RedoclyOAuthClient } from '../auth/oauth-client'; import { getReuniteUrl } from '../reunite/api'; import type { CommandArgs } from '../wrapper'; import type { Region } from '@redocly/openapi-core'; export function promptClientToken(domain: string) { return promptUser( green( `\n 🔑 Copy your API key from ${blue(`https://app.${domain}/profile`)} and paste it below` ) + yellow(' (if you want to log in with Reunite, please run `redocly login --next` instead)'), true ); } export type LoginOptions = { verbose?: boolean; residency?: string; config?: string; next?: boolean; }; export async function handleLogin({ argv, config, version }: CommandArgs<LoginOptions>) { if (argv.next) { try { const reuniteUrl = getReuniteUrl(argv.residency); const oauthClient = new RedoclyOAuthClient('redocly-cli', version); await oauthClient.login(reuniteUrl); } catch { if (argv.residency) { const reuniteUrl = getReuniteUrl(argv.residency); exitWithError(`❌ Connection to ${reuniteUrl} failed.`); } else { exitWithError(`❌ Login failed. Please check your credentials and try again.`); } } } else { try { const region = (argv.residency as Region) || config.region; const client = new RedoclyClient(region); const clientToken = await promptClientToken(client.domain); process.stdout.write(gray('\n Logging in...\n')); await client.login(clientToken, argv.verbose); process.stdout.write(green(' Authorization confirmed. ✅\n\n')); } catch (err) { exitWithError(' ' + err?.message); } } } export type LogoutOptions = { config?: string; }; export async function handleLogout({ version }: CommandArgs<LogoutOptions>) { const client = new RedoclyClient(); client.logout(); const oauthClient = new RedoclyOAuthClient('redocly-cli', version); oauthClient.logout(); process.stdout.write('Logged out from the Redocly account. ✋ \n'); }