codev / src /commands /login /index.ts
chenbhao's picture
init: verspercode v0.1.0
064bfd6
Raw
History Blame Contribute Delete
1.02 kB
// index.ts = 命令的"声明 + 注册"
import type { Command } from '../../commands.js'
import { hasAnthropicApiKeyAuth } from '../../utils/auth.js'
import { isEnvTruthy } from '../../utils/envUtils.js'
// 把 login 注册成一个 CLI 命令, 优点: 1.更快启动, 2.模块解耦, 3.插件化
export default () =>
({
type: 'local-jsx', // 说明这个命令不是 普通函数, 而是 返回一个 JSX UI (React + Ink), 这个 CLI 命令会渲染一个 "界面", 而不是直接输出文本
name: 'login', // CLI 命名
description: hasAnthropicApiKeyAuth() // 动态描述 (根据是否已登录)
? 'Switch Anthropic accounts'
: 'Sign in with your Anthropic account',
isEnabled: () => !isEnvTruthy(process.env.DISABLE_LOGIN_COMMAND), // 控制命令是否启用, DISABLE_LOGIN_COMMAND=1 就直接禁用 /login 命令
load: () => import('./login.js'), // 懒加载核心逻辑: CLI 启动的时候不会加载 /login 代码, 只有执行 /login 时才加载
}) satisfies Command