import { intro, log } from "@clack/prompts" import { green, red } from "ansis" import { defineCommand } from "../lib/command" import { globalOptions, globalOptionsSchema } from "../lib/global-options" import { pick } from "remeda" import { authClient } from "../lib/auth-client" import { renderDetailBlock } from "../lib/detail-block" import { dimmed } from "../lib/io" import { CLI_PREFIX, output } from "../utils" export const meCommand = defineCommand({ name: "me", description: "Check which account is currently logged in", options: globalOptions, schema: globalOptionsSchema, run: me, }) /** Prints auth status and identity with the CLI header. */ export async function me() { const session = await authClient.getSession() output .normal(() => { intro(CLI_PREFIX) log.message( renderDetailBlock( !session ? { [dimmed`Status`]: red`Not logged in` } : { [dimmed`Status`]: green`Logged in`, [dimmed`Name`]: session.user.name, [dimmed`Email`]: session.user.email, [dimmed`ID`]: dimmed(session.user.id), }, { keyAlignment: "right" }, ), ) log.message() }) .json( !session ? { loggedIn: false, user: null } : { loggedIn: true, user: pick(session.user, [ "id", "name", "email", "emailVerified", "image", "createdAt", "updatedAt", ]), }, ) }