sindri
Version:
The Sindri Labs JavaScript SDK and CLI tool.
42 lines (37 loc) • 1.36 kB
text/typescript
import { Command } from "@commander-js/extra-typings";
import { confirm } from "@inquirer/prompts";
import sindri from "lib";
import { Config } from "lib/config";
export const logoutCommand = new Command()
.name("logout")
.description("Remove the current client authorization credentials.")
.action(async () => {
// Check whether we're currently authenticated.
const config = new Config();
const auth = config.auth;
if (!auth) {
sindri.logger.error("You must log in first with `sindri login`.");
return;
}
// Optionally revoke the current key.
const revokeKey = await confirm({
message: `Would you like to also revoke the "${auth.apiKeyName}" API key? (recommended)`,
default: true,
});
if (revokeKey) {
try {
await sindri._client.authorization.apikeyDelete(auth.apiKeyId);
sindri.logger.info(`Successfully revoked "${auth.apiKeyName}" key.`);
} catch (error) {
sindri.logger.warn(
`Error revoking "${auth.apiKeyName}" key, proceeding to clear credentials anyway.`,
);
sindri.logger.error(error);
}
} else {
sindri.logger.warn("Skipping revocation of existing key.");
}
// Clear the existing credentials.
config.update({ auth: null });
sindri.logger.info("You have successfully logged out.");
});