@leeguoo/yapi-mcp 0.3.26 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -14
- package/dist/bin.js +35 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/commands/col.d.ts +2 -0
- package/dist/cli/commands/col.js +80 -0
- package/dist/cli/commands/col.js.map +1 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +66 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/docs-sync.d.ts +3 -0
- package/dist/cli/commands/docs-sync.js +1139 -0
- package/dist/cli/commands/docs-sync.js.map +1 -0
- package/dist/cli/commands/env.d.ts +2 -0
- package/dist/cli/commands/env.js +13 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/export.d.ts +2 -0
- package/dist/cli/commands/export.js +86 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/follow.d.ts +2 -0
- package/dist/cli/commands/follow.js +8 -0
- package/dist/cli/commands/follow.js.map +1 -0
- package/dist/cli/commands/group.d.ts +2 -0
- package/dist/cli/commands/group.js +22 -0
- package/dist/cli/commands/group.js.map +1 -0
- package/dist/cli/commands/install-skill.d.ts +1 -0
- package/dist/cli/commands/install-skill.js +9 -0
- package/dist/cli/commands/install-skill.js.map +1 -0
- package/dist/cli/commands/interface.d.ts +2 -0
- package/dist/cli/commands/interface.js +99 -0
- package/dist/cli/commands/interface.js.map +1 -0
- package/dist/cli/commands/log.d.ts +2 -0
- package/dist/cli/commands/log.js +31 -0
- package/dist/cli/commands/log.js.map +1 -0
- package/dist/cli/commands/login.d.ts +2 -0
- package/dist/cli/commands/login.js +90 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +2 -0
- package/dist/cli/commands/logout.js +25 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/member.d.ts +2 -0
- package/dist/cli/commands/member.js +25 -0
- package/dist/cli/commands/member.js.map +1 -0
- package/dist/cli/commands/project.d.ts +2 -0
- package/dist/cli/commands/project.js +49 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/request.d.ts +2 -0
- package/dist/cli/commands/request.js +189 -0
- package/dist/cli/commands/request.js.map +1 -0
- package/dist/cli/commands/search.d.ts +2 -0
- package/dist/cli/commands/search.js +39 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/self-update.d.ts +1 -0
- package/dist/cli/commands/self-update.js +19 -0
- package/dist/cli/commands/self-update.js.map +1 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +27 -0
- package/dist/cli/commands/user.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts +2 -0
- package/dist/cli/commands/whoami.js +8 -0
- package/dist/cli/commands/whoami.js.map +1 -0
- package/dist/cli/http.d.ts +9 -0
- package/dist/cli/http.js +44 -0
- package/dist/cli/http.js.map +1 -0
- package/dist/cli/simple-request.d.ts +2 -0
- package/dist/cli/simple-request.js +135 -0
- package/dist/cli/simple-request.js.map +1 -0
- package/dist/cli/types.d.ts +163 -0
- package/dist/cli/types.js +3 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/utils.d.ts +53 -0
- package/dist/cli/utils.js +610 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/docs/markdown.d.ts +13 -0
- package/dist/docs/markdown.js +77 -3
- package/dist/docs/markdown.js.map +1 -1
- package/dist/yapi-cli.js +459 -3135
- package/dist/yapi-cli.js.map +1 -1
- package/package.json +13 -26
- package/skill-template/SKILL.md +112 -4
- package/dist/cli.js +0 -32
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts +0 -28
- package/dist/config.js +0 -240
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -66
- package/dist/index.js.map +0 -1
- package/dist/server.d.ts +0 -28
- package/dist/server.js +0 -1004
- package/dist/server.js.map +0 -1
- /package/dist/{cli.d.ts → bin.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -54,27 +54,46 @@ Yapi Auto MCP Server 是一个基于 [Model Context Protocol](https://modelconte
|
|
|
54
54
|
|
|
55
55
|
### 推荐方式:用 Cross Request Master 一键安装 Skill(免手动找 Token)
|
|
56
56
|
|
|
57
|
-
如果你日常就在浏览器里使用 YApi,推荐安装 Chrome 扩展 [cross-request-master](https://github.com/leeguooooo/cross-request-master)。它会在 YApi 接口详情页(基本信息区域右上角)提供 **「YApi 工具箱」** 按钮,包含 Skill
|
|
57
|
+
如果你日常就在浏览器里使用 YApi,推荐安装 Chrome 扩展 [cross-request-master](https://github.com/leeguooooo/cross-request-master)。它会在 YApi 接口详情页(基本信息区域右上角)提供 **「YApi 工具箱」** 按钮,包含 Skill 一键安装(推荐,支持 `npx skills add`)/MCP 配置(兼容)/CLI docs-sync 说明;另外保留 **「复制给 AI」** 一键复制接口 Markdown:
|
|
58
58
|
|
|
59
|
-
- Skill
|
|
59
|
+
- Skill 一键安装(推荐):优先生成 `npx skills add` 命令安装仓库导出的 Skill,再配合 `yapi config init` 初始化全局配置;如需一步写入配置,保留 `yapi install-skill` 兼容路径
|
|
60
60
|
- MCP 配置(兼容):使用 `--yapi-auth-mode=global`(账号密码),默认会自动懒登录;也可手动调用一次 `yapi_update_token` 预热缓存
|
|
61
61
|
- CLI 使用与 docs-sync:提供本地 CLI 安装命令和文档同步示例
|
|
62
62
|
|
|
63
63
|
### Skill 一键安装与 CLI
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
推荐先用 `skills` 安装仓库导出的 Skill:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
#
|
|
68
|
+
# 推荐:把仓库里的 yapi Skill 装到全局 agent 目录
|
|
69
|
+
npx skills add leeguooooo/cross-request-master -y -g
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
这条命令只负责安装 Skill 文件,不会写入 `~/.yapi/config.toml`。如果你还没有本地配置,继续执行下面任一方式:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# 方式一:推荐单独初始化配置
|
|
69
76
|
npm install -g @leeguoo/yapi-mcp
|
|
77
|
+
yapi config init \
|
|
78
|
+
--base-url=https://your-yapi-domain.com \
|
|
79
|
+
--auth-mode=global \
|
|
80
|
+
--email=your_email@example.com
|
|
70
81
|
|
|
82
|
+
# 如未保存密码,首次再同步一次浏览器登录态
|
|
83
|
+
yapi login --base-url=https://your-yapi-domain.com --browser
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
也可以继续使用兼容命令,在安装 Skill 的同时写入 `~/.yapi/config.toml`:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npm install -g @leeguoo/yapi-mcp
|
|
71
90
|
yapi install-skill \
|
|
72
91
|
--yapi-base-url=https://your-yapi-domain.com \
|
|
73
92
|
--yapi-email=your_email@example.com \
|
|
74
93
|
--yapi-password=your_password
|
|
75
94
|
```
|
|
76
95
|
|
|
77
|
-
也可以用 npx
|
|
96
|
+
也可以用 npx 临时运行兼容命令(不全局安装):
|
|
78
97
|
|
|
79
98
|
```bash
|
|
80
99
|
npx -y -p @leeguoo/yapi-mcp yapi install-skill \
|
|
@@ -83,22 +102,20 @@ npx -y -p @leeguoo/yapi-mcp yapi install-skill \
|
|
|
83
102
|
--yapi-password=your_password
|
|
84
103
|
```
|
|
85
104
|
|
|
86
|
-
|
|
87
|
-
- Codex: `~/.codex/skills/yapi/`
|
|
88
|
-
- Claude Code: `~/.claude/skills/yapi/`
|
|
89
|
-
- Cursor: `~/.cursor/skills/yapi/`
|
|
105
|
+
`skills` CLI 会维护一份规范化安装副本,并按目标 agent 建立链接/映射。当前全局安装通常可在 `~/.agents/skills/yapi/` 看到 canonical copy,具体 agent 侧落点由 `skills` CLI 决定。
|
|
90
106
|
|
|
91
|
-
Skill
|
|
107
|
+
仓库导出的 Skill 来源:`skills/yapi/SKILL.md`(供 `npx skills add` 发现)。
|
|
108
|
+
npm 包内安装模板来源:`packages/yapi-mcp/skill-template/SKILL.md`(供 `yapi install-skill` 复制到技能目录)。
|
|
92
109
|
后续当 CLI 升级而本地 Skill 仍是旧版本时,`yapi` 会自动提示:
|
|
93
110
|
|
|
94
111
|
```bash
|
|
95
|
-
skill update available: installed Codex@0.3.24, current 0.3.25. Run:
|
|
112
|
+
skill update available: installed Codex@0.3.24, current 0.3.25. Run: npx skills add leeguooooo/cross-request-master -y -g
|
|
96
113
|
```
|
|
97
114
|
|
|
98
115
|
也可以手动重装 Skill:
|
|
99
116
|
|
|
100
117
|
```bash
|
|
101
|
-
|
|
118
|
+
npx skills add leeguooooo/cross-request-master -y -g
|
|
102
119
|
```
|
|
103
120
|
|
|
104
121
|
### CLI 使用
|
|
@@ -106,13 +123,14 @@ yapi install-skill --force
|
|
|
106
123
|
推荐全局安装后直接使用 `yapi` 命令(走同一份 `~/.yapi/config.toml`):
|
|
107
124
|
|
|
108
125
|
当前 CLI 能力补充:
|
|
126
|
+
- 支持 `yapi config init`:单独初始化/更新 `~/.yapi/config.toml`,适合和 `npx skills add` 组合使用
|
|
109
127
|
- 支持 `yapi login --browser`:通过 `agent-browser-stealth` 打开页面,登录后自动同步 `_yapi_token/_yapi_uid` 到本地缓存
|
|
110
128
|
- 默认打开 `base-url` 首页(不强制 `/login`),适配“已登录可直接拿 Cookie”的场景
|
|
111
129
|
- 支持 `yapi login --login-url <url>` 指定登录页
|
|
112
130
|
- 支持 `yapi logout` 清理当前 `base_url` 对应的全局会话缓存
|
|
113
131
|
- 适用于 SSO/额外验证体系:无法使用账号密码时可只走浏览器登录
|
|
114
132
|
- 支持 `yapi self-update` 升级全局 CLI
|
|
115
|
-
- 当已安装的 Skill 版本落后于当前 CLI 时,会自动提示重新执行 `
|
|
133
|
+
- 当已安装的 Skill 版本落后于当前 CLI 时,会自动提示重新执行 `npx skills add leeguooooo/cross-request-master -y -g`
|
|
116
134
|
|
|
117
135
|
```bash
|
|
118
136
|
# 检查版本
|
|
@@ -194,12 +212,14 @@ yapi docs-sync
|
|
|
194
212
|
- 绑定模式同步后会写入 `.yapi/docs-sync.deployments.json`(本地文档 → 已部署 URL)
|
|
195
213
|
- 兼容旧方式:`--dir` 读取目录内 `.yapi.json` 的 `project_id/catid` 与 `source_files`
|
|
196
214
|
- 管理绑定:`yapi docs-sync bind list|get|add|update|remove`
|
|
215
|
+
- 也可以在运行时临时过滤文件:`yapi docs-sync --binding projectA --source-file architecture.md`;优先级是 `--source-file` > 绑定里的 `source_files` > 目录全量扫描
|
|
197
216
|
- `--query` 支持像 curl 一样写成单个字符串:`--query "catid=4631&limit=50&page=1"`
|
|
198
217
|
- 可用 `--dry-run` 只做预览不更新;现在会输出每个文件的 Markdown/HTML/请求体大小,并提前暴露超大文档风险
|
|
199
218
|
- 默认只同步内容变更的文件,如需全量更新使用 `--force`
|
|
200
219
|
- 普通同步命中相同 `file_hashes` 时会在渲染前直接跳过,不再重复渲染 Mermaid / PlantUML / Graphviz / D2;`--dry-run` 仍会保留预览渲染
|
|
201
|
-
- 如果上传返回 `413 Payload Too Large`,CLI
|
|
220
|
+
- 如果上传返回 `413 Payload Too Large`,CLI 会按 `默认 Mermaid -> --mermaid-classic -> --no-mermaid` 自动降级;某个文件一旦降级成功,会把该模式记住,后续同步优先直接使用,避免每次先撞一次 413
|
|
202
221
|
- Mermaid 预渲染依赖 `mmdc`(默认手绘风格;安装时会尝试拉取,失败不影响同步)
|
|
222
|
+
- 如果 `mmdc` 已安装但提示缺少 `chrome-headless-shell` / Puppeteer 浏览器,执行:`npx puppeteer browsers install chrome-headless-shell`
|
|
203
223
|
- PlantUML 预渲染依赖 `plantuml`(需要本机 Java 环境)
|
|
204
224
|
- Graphviz 预渲染依赖 `dot`(graphviz)
|
|
205
225
|
- D2 预渲染依赖 `d2`(默认手绘风格输出)
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const REQUIRED_DEPS = ["yargs", "axios"];
|
|
5
|
+
const missing = [];
|
|
6
|
+
for (const dep of REQUIRED_DEPS) {
|
|
7
|
+
try {
|
|
8
|
+
require.resolve(dep);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
missing.push(dep);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (missing.length > 0) {
|
|
15
|
+
const path = require("path");
|
|
16
|
+
const pkgDir = path.resolve(__dirname, "..");
|
|
17
|
+
const lines = [
|
|
18
|
+
`[yapi-cli] Missing runtime dependencies: ${missing.join(", ")}`,
|
|
19
|
+
"",
|
|
20
|
+
"This usually means the package directory has no node_modules installed.",
|
|
21
|
+
"",
|
|
22
|
+
"To fix, run one of the following in the package directory:",
|
|
23
|
+
` cd "${pkgDir}"`,
|
|
24
|
+
" pnpm install # if using pnpm (recommended for this repo)",
|
|
25
|
+
" # or",
|
|
26
|
+
" npm install # if using npm",
|
|
27
|
+
"",
|
|
28
|
+
"If you installed @leeguoo/yapi-mcp globally, try reinstalling:",
|
|
29
|
+
" npm i -g @leeguoo/yapi-mcp",
|
|
30
|
+
];
|
|
31
|
+
console.error(lines.join("\n"));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
require("./yapi-cli");
|
|
35
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AAQA,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAEzC,MAAM,OAAO,GAAa,EAAE,CAAC;AAC7B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAA0B,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG;QACZ,4CAA4C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAChE,EAAE;QACF,yEAAyE;QACzE,EAAE;QACF,4DAA4D;QAC5D,SAAS,MAAM,GAAG;QAClB,sEAAsE;QACtE,QAAQ;QACR,yCAAyC;QACzC,EAAE;QACF,gEAAgE;QAChE,8BAA8B;KAC/B,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAGD,OAAO,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runCol = runCol;
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const simple_request_1 = require("../simple-request");
|
|
9
|
+
const http_1 = require("../http");
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
async function runCol(action, options) {
|
|
12
|
+
if (action === "list") {
|
|
13
|
+
return await (0, simple_request_1.runSimpleRequest)(options, "/api/col/list", true, (opts) => {
|
|
14
|
+
const projectId = String(opts.projectId || "").trim();
|
|
15
|
+
if (!projectId) {
|
|
16
|
+
console.error("missing --project-id for col list");
|
|
17
|
+
return { ok: false };
|
|
18
|
+
}
|
|
19
|
+
return { ok: true, queryItems: [["project_id", projectId]] };
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (action === "cases" || action === "case-list" || action === "case_list") {
|
|
23
|
+
return await (0, simple_request_1.runSimpleRequest)(options, "/api/col/case_list", true, (opts) => {
|
|
24
|
+
const colId = String(opts.id || "").trim();
|
|
25
|
+
if (!colId) {
|
|
26
|
+
console.error("missing --id (col id) for col cases");
|
|
27
|
+
return { ok: false };
|
|
28
|
+
}
|
|
29
|
+
return { ok: true, queryItems: [["col_id", colId]] };
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (action === "run") {
|
|
33
|
+
const configPath = options.config || (0, utils_1.globalConfigPath)();
|
|
34
|
+
const config = fs_1.default.existsSync(configPath)
|
|
35
|
+
? (0, utils_1.parseSimpleToml)(fs_1.default.readFileSync(configPath, "utf8"))
|
|
36
|
+
: {};
|
|
37
|
+
const baseUrl = options.baseUrl || config.base_url || "";
|
|
38
|
+
if (!baseUrl) {
|
|
39
|
+
console.error("missing --base-url or config base_url");
|
|
40
|
+
return 2;
|
|
41
|
+
}
|
|
42
|
+
const colId = String(options.id || "").trim();
|
|
43
|
+
if (!colId) {
|
|
44
|
+
console.error("missing --id (col id) for col run");
|
|
45
|
+
return 2;
|
|
46
|
+
}
|
|
47
|
+
const projectId = options.projectId || config.project_id || "";
|
|
48
|
+
const rawToken = options.token || config.token || "";
|
|
49
|
+
const token = (0, utils_1.resolveToken)(rawToken, projectId);
|
|
50
|
+
if (!token) {
|
|
51
|
+
console.error("missing --token for col run (requires project token, not cookie auth)");
|
|
52
|
+
return 2;
|
|
53
|
+
}
|
|
54
|
+
const url = (0, http_1.buildUrl)(baseUrl, "/api/open/run_auto_test", [["id", colId]], token, options.tokenParam || "token");
|
|
55
|
+
try {
|
|
56
|
+
const response = await (0, http_1.fetchWithTimeout)(url, { method: "GET" }, options.timeout || 30000);
|
|
57
|
+
const text = await response.text();
|
|
58
|
+
if (options.noPretty) {
|
|
59
|
+
console.log(text);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
try {
|
|
63
|
+
const payload = JSON.parse(text);
|
|
64
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
console.log(text);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error("request failed: " + (error instanceof Error ? error.message : String(error)));
|
|
74
|
+
return 2;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
console.error(`unknown col action: ${action || "(missing)"}`);
|
|
78
|
+
return 2;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=col.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"col.js","sourceRoot":"","sources":["../../../src/cli/commands/col.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runConfig = runConfig;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
function resolveAuthMode(explicit, existing, merged) {
|
|
10
|
+
const normalized = String(explicit || existing.auth_mode || "").trim().toLowerCase();
|
|
11
|
+
if (!normalized) {
|
|
12
|
+
return merged.token ? "token" : "global";
|
|
13
|
+
}
|
|
14
|
+
if (normalized === "token" || normalized === "global")
|
|
15
|
+
return normalized;
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
async function runConfig(action, options) {
|
|
19
|
+
const normalizedAction = String(action || "init").trim().toLowerCase() || "init";
|
|
20
|
+
if (normalizedAction !== "init") {
|
|
21
|
+
console.error(`unknown config action: ${normalizedAction}`);
|
|
22
|
+
return 2;
|
|
23
|
+
}
|
|
24
|
+
const configPath = options.config || (0, utils_1.globalConfigPath)();
|
|
25
|
+
const existing = fs_1.default.existsSync(configPath)
|
|
26
|
+
? (0, utils_1.parseSimpleToml)(fs_1.default.readFileSync(configPath, "utf8"))
|
|
27
|
+
: {};
|
|
28
|
+
const merged = { ...existing };
|
|
29
|
+
if (options.baseUrl !== undefined)
|
|
30
|
+
merged.base_url = options.baseUrl;
|
|
31
|
+
if (options.email !== undefined)
|
|
32
|
+
merged.email = options.email;
|
|
33
|
+
if (options.password !== undefined)
|
|
34
|
+
merged.password = options.password;
|
|
35
|
+
if (options.token !== undefined)
|
|
36
|
+
merged.token = options.token;
|
|
37
|
+
if (options.projectId !== undefined)
|
|
38
|
+
merged.project_id = options.projectId;
|
|
39
|
+
if (!merged.base_url) {
|
|
40
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
41
|
+
console.error("missing --base-url");
|
|
42
|
+
return 2;
|
|
43
|
+
}
|
|
44
|
+
merged.base_url = await (0, utils_1.promptRequired)("YApi base URL: ", false);
|
|
45
|
+
}
|
|
46
|
+
const authMode = resolveAuthMode(options.authMode || "", existing, merged);
|
|
47
|
+
if (!authMode) {
|
|
48
|
+
console.error("invalid --auth-mode (use token or global)");
|
|
49
|
+
return 2;
|
|
50
|
+
}
|
|
51
|
+
merged.auth_mode = authMode;
|
|
52
|
+
merged.email = merged.email || "";
|
|
53
|
+
merged.password = merged.password || "";
|
|
54
|
+
merged.token = merged.token || "";
|
|
55
|
+
merged.project_id = merged.project_id || "";
|
|
56
|
+
(0, utils_1.writeConfig)(configPath, merged);
|
|
57
|
+
console.log(`Config written to: ${configPath}`);
|
|
58
|
+
if (authMode === "global" && !merged.password) {
|
|
59
|
+
console.log("Global auth configured without saved password. Run `yapi login --base-url <url> --browser` once to sync cookie, or rerun with --password to enable password relogin.");
|
|
60
|
+
}
|
|
61
|
+
if (authMode === "token" && !merged.token) {
|
|
62
|
+
console.log("Token mode configured without token. Pass --token now or set it later before requests.");
|
|
63
|
+
}
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
|