Skip to main content
Glama
index.ts4.77 kB
/** * Init Command Entry * * 支持多种初始化方式: * * 1. 交互式向导: * keactl init * * 2. 快捷一行初始化: * keactl init -g -s <url> -t <token> 全局环境初始化 * keactl init -p -s <url> -t <token> 项目级初始化 (自动检测 Git 仓库信息) * keactl init -p -o <owner> -r <repo> 项目级初始化 (指定仓库信息) * * 3. 子命令方式 (兼容旧版): * keactl init global -s <url> -t <token> * keactl init project -s <url> -o <owner> -r <repo> */ import { Command } from 'commander'; import { initGlobal, InitGlobalOptions } from './global.js'; import { initProject, InitProjectOptions } from './project.js'; import { runInitWizard } from './wizard.js'; interface InitShortcutOptions { global?: boolean; project?: boolean; server?: string; name?: string; token?: string; owner?: string; repo?: string; default?: boolean; skipVerify?: boolean; lang?: string; tokenRef?: string; tokenEnv?: string; auto?: boolean; force?: boolean; } /** * 创建 init 命令 */ export function createInitCommand(): Command { const initCmd = new Command('init') .description('初始化 Gitea MCP 配置 (支持 -g 全局 / -p 项目级)') // 快捷模式选项 .option('-g, --global', '全局环境初始化') .option('-p, --project', '项目级初始化') // 通用选项 .option('-s, --server <url>', 'Gitea 服务器地址') .option('-t, --token <token>', 'API Token') // 全局初始化选项 .option('-n, --name <name>', '[全局] 服务器别名') .option('-d, --default', '[全局] 设为默认服务器') .option('--skip-verify', '[全局] 跳过连接验证') .option('--lang <lang>', '[全局] 默认语言 (zh-CN/en)', 'zh-CN') // 项目初始化选项 .option('-o, --owner <owner>', '[项目] 仓库所有者') .option('-r, --repo <repo>', '[项目] 仓库名称') .option('--token-ref <id>', '[项目] 引用全局 Token ID') .option('--token-env <var>', '[项目] 使用环境变量名') .option('--auto', '[项目] 完全自动模式') .option('-f, --force', '[项目] 强制覆盖已有配置') .action(async (options: InitShortcutOptions, cmd: Command) => { // 合并父命令选项 (支持 keactl -t xxx -s xxx init -g) const parentOpts = cmd.parent?.opts() || {}; const mergedOpts = { ...parentOpts, ...options }; // 快捷模式: -g 全局初始化 if (mergedOpts.global) { const globalOpts: InitGlobalOptions = { server: mergedOpts.server, name: mergedOpts.name, token: mergedOpts.token, default: mergedOpts.default, skipVerify: mergedOpts.skipVerify, lang: mergedOpts.lang, }; await initGlobal(globalOpts); return; } // 快捷模式: -p 项目初始化 if (mergedOpts.project) { const projectOpts: InitProjectOptions = { server: mergedOpts.server, owner: mergedOpts.owner, repo: mergedOpts.repo, token: mergedOpts.token, tokenRef: mergedOpts.tokenRef, tokenEnv: mergedOpts.tokenEnv, auto: mergedOpts.auto, force: mergedOpts.force, }; await initProject(projectOpts); return; } // 无快捷参数时运行交互式向导 await runInitWizard(); }); // 子命令: init global (兼容旧版) initCmd .command('global') .description('初始化全局环境配置 (~/.gitea-mcp/config.json)') .option('-s, --server <url>', 'Gitea 服务器地址') .option('-n, --name <name>', '服务器别名') .option('-t, --token <token>', 'API Token') .option('-d, --default', '设为默认服务器') .option('--skip-verify', '跳过连接验证') .option('--lang <lang>', '默认语言 (zh-CN/en)', 'zh-CN') .action(async (options: InitGlobalOptions) => { await initGlobal(options); }); // 子命令: init project (兼容旧版) initCmd .command('project') .description('初始化当前项目配置 (.gitea-mcp.json)') .option('-s, --server <url>', 'Gitea 服务器地址 (覆盖自动检测)') .option('-o, --owner <owner>', '仓库所有者 (覆盖自动检测)') .option('-r, --repo <repo>', '仓库名称 (覆盖自动检测)') .option('-t, --token <token>', 'API Token') .option('--token-ref <id>', '引用全局 Token ID') .option('--token-env <var>', '使用环境变量名') .option('--auto', '完全自动模式,无交互') .option('-f, --force', '强制覆盖已有配置') .action(async (options: InitProjectOptions) => { await initProject(options); }); return initCmd; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SupenBysz/gitea-mcp-tool'

If you have feedback or need assistance with the MCP directory API, please join our Discord server