diff --git a/src/commands/signin.ts b/src/commands/signin.ts new file mode 100644 index 0000000..112f98b --- /dev/null +++ b/src/commands/signin.ts @@ -0,0 +1,24 @@ +import { CAC } from "cac"; +import { logger } from "../lib"; +import * as dicorc from "../core/dicorc"; +import exit from "exit"; + +export const signin = async (_: CAC, token: string): Promise => { + if (token.length !== 64) { + logger.error("Invalid token format, make sure you copied it correctly!"); + exit(1); + } + + try { + const user = await dicorc.signin(token); + console.log(""); + logger.success("Logged in as `%s <%s>`\n", user?.fullname, user?.email); + } catch (error) { + if (error.status === 401) { + logger.error("Invalid token, make sure you copied it correctly!"); + exit(1); + } else { + throw error; + } + } +}; diff --git a/src/commands/signout.ts b/src/commands/signout.ts new file mode 100644 index 0000000..2ae300a --- /dev/null +++ b/src/commands/signout.ts @@ -0,0 +1,9 @@ +import { CAC } from "cac"; +import { logger } from "../lib"; +import * as dicorc from "../core/dicorc"; + +export const signout = (_: CAC, __: { [key: string]: never }): void => { + dicorc.signout(); + console.log(""); + logger.success("Logged out\n"); +}; diff --git a/src/commands/whoami.ts b/src/commands/whoami.ts new file mode 100644 index 0000000..57961b9 --- /dev/null +++ b/src/commands/whoami.ts @@ -0,0 +1,17 @@ +import { CAC } from "cac"; +import * as dicorc from "../core/dicorc"; +import { logger } from "../lib"; + +export const whoami = async ( + _: CAC, + __: { [key: string]: never } +): Promise => { + if (await dicorc.isSignedIn()) { + const { user } = dicorc.read(); + console.log(""); + logger.info("Logged in as `%s <%s>`\n", user?.fullname, user?.email); + } else { + console.log(""); + logger.info("Not logged in! Log in with command `login `\n"); + } +};