@nbtca/prompt 1.0.25 → 1.0.26
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/dist/config/data.js +0 -1
- package/dist/core/vim-keys.js +0 -1
- package/dist/features/docs.js +6 -3
- package/dist/features/settings.js +1 -1
- package/dist/i18n/locales/en.json +39 -1
- package/dist/i18n/locales/zh.json +39 -1
- package/dist/index.js +48 -38
- package/package.json +1 -1
package/dist/config/data.js
CHANGED
|
@@ -35,7 +35,6 @@ export const APP_INFO = {
|
|
|
35
35
|
name: 'Prompt',
|
|
36
36
|
version: readPackageVersion(),
|
|
37
37
|
description: '浙大宁波理工学院计算机协会',
|
|
38
|
-
fullDescription: 'NBTCA Prompt - 极简命令行工具',
|
|
39
38
|
author: 'm1ngsama <contact@m1ng.space>',
|
|
40
39
|
license: 'MIT',
|
|
41
40
|
repository: 'https://github.com/nbtca/prompt'
|
package/dist/core/vim-keys.js
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*/
|
|
7
7
|
// Maps single-byte vim keys to terminal escape sequences (ranger-style hjkl)
|
|
8
8
|
const VIM_TO_SEQ = {
|
|
9
|
-
h: Buffer.from('\u0003'), // back/cancel (ranger: go to parent)
|
|
10
9
|
j: Buffer.from('\u001b[B'), // down arrow
|
|
11
10
|
k: Buffer.from('\u001b[A'), // up arrow
|
|
12
11
|
l: Buffer.from('\r'), // enter/confirm (ranger: open/enter)
|
package/dist/features/docs.js
CHANGED
|
@@ -31,7 +31,8 @@ function detectTerminalType() {
|
|
|
31
31
|
/** Check whether an external command exists on PATH (once at startup). */
|
|
32
32
|
function commandExists(cmd) {
|
|
33
33
|
try {
|
|
34
|
-
|
|
34
|
+
const check = process.platform === 'win32' ? 'where' : 'which';
|
|
35
|
+
execFileSync(check, [cmd], { stdio: 'ignore' });
|
|
35
36
|
return true;
|
|
36
37
|
}
|
|
37
38
|
catch {
|
|
@@ -465,7 +466,7 @@ async function viewMarkdownFile(filePath) {
|
|
|
465
466
|
while (true) {
|
|
466
467
|
try {
|
|
467
468
|
ensureMarkedConfigured();
|
|
468
|
-
const s = createSpinner(`${trans.docs.
|
|
469
|
+
const s = createSpinner(`${trans.docs.loadingFile}: ${filePath}`);
|
|
469
470
|
const rawResult = await fetchGitHubRawContent(filePath);
|
|
470
471
|
if (rawResult.staleFallback) {
|
|
471
472
|
warning(trans.docs.usingCachedData);
|
|
@@ -580,7 +581,9 @@ async function searchDocs() {
|
|
|
580
581
|
continue;
|
|
581
582
|
if (entry.value.toLowerCase().includes(keyword)) {
|
|
582
583
|
const name = cachedPath.split('/').pop() || cachedPath;
|
|
583
|
-
|
|
584
|
+
const parentDir = cachedPath.split('/').slice(0, -1).join('/');
|
|
585
|
+
const matchedCat = categories.find(c => parentDir.startsWith(c.path));
|
|
586
|
+
results.push({ name, path: cachedPath, category: matchedCat?.name ?? parentDir });
|
|
584
587
|
}
|
|
585
588
|
}
|
|
586
589
|
s.stop(`${results.length} ${trans.docs.searchResults}`);
|
|
@@ -26,7 +26,7 @@ function showAbout() {
|
|
|
26
26
|
const content = [
|
|
27
27
|
row(trans.about.project, APP_INFO.name),
|
|
28
28
|
row(trans.about.version, `v${APP_INFO.version}`),
|
|
29
|
-
row(trans.about.description,
|
|
29
|
+
row(trans.about.description, trans.about.descriptionText),
|
|
30
30
|
'',
|
|
31
31
|
link(trans.about.github, APP_INFO.repository),
|
|
32
32
|
link(trans.about.website, URLS.homepage),
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"project": "Project",
|
|
29
29
|
"version": "Version",
|
|
30
30
|
"description": "Description",
|
|
31
|
+
"descriptionText": "NBTCA Prompt - Minimalist CLI Tool",
|
|
31
32
|
"github": "GitHub",
|
|
32
33
|
"website": "Website",
|
|
33
34
|
"email": "Email",
|
|
@@ -91,7 +92,8 @@
|
|
|
91
92
|
"searchPlaceholder": "Enter keyword...",
|
|
92
93
|
"searching": "Searching documents...",
|
|
93
94
|
"searchResults": "results found",
|
|
94
|
-
"searchNoResults": "No documents match your search"
|
|
95
|
+
"searchNoResults": "No documents match your search",
|
|
96
|
+
"loadingFile": "Loading"
|
|
95
97
|
},
|
|
96
98
|
"links": {
|
|
97
99
|
"choose": "Open a link:",
|
|
@@ -161,5 +163,41 @@
|
|
|
161
163
|
"upToDate": "You are on the latest version ({version})",
|
|
162
164
|
"checkFailed": "Could not check for updates",
|
|
163
165
|
"command": "Run: npm i -g @nbtca/prompt"
|
|
166
|
+
},
|
|
167
|
+
"cli": {
|
|
168
|
+
"usage": "Usage:",
|
|
169
|
+
"interactive": "Interactive menu",
|
|
170
|
+
"runCommand": "Run a command",
|
|
171
|
+
"commands": "Commands:",
|
|
172
|
+
"flags": "Flags:",
|
|
173
|
+
"cmdWebsite": "Official website URL",
|
|
174
|
+
"cmdGithub": "GitHub organization URL",
|
|
175
|
+
"cmdRoadmap": "Project roadmap URL",
|
|
176
|
+
"cmdRepair": "Repair service URL",
|
|
177
|
+
"cmdTheme": "View or set theme",
|
|
178
|
+
"cmdLang": "Set language",
|
|
179
|
+
"cmdUpdate": "Check for updates",
|
|
180
|
+
"flagVersion": "Show version",
|
|
181
|
+
"flagHelp": "Show help",
|
|
182
|
+
"flagOpen": "Open in browser (URL commands)",
|
|
183
|
+
"flagJson": "JSON output (events, status)",
|
|
184
|
+
"flagToday": "Today only (events)",
|
|
185
|
+
"flagNext": "Limit to next N (events)",
|
|
186
|
+
"flagWatch": "Live refresh (status)",
|
|
187
|
+
"flagInterval": "Refresh interval (status --watch)",
|
|
188
|
+
"flagTimeout": "HTTP timeout (status)",
|
|
189
|
+
"flagRetries": "Retry count (status)",
|
|
190
|
+
"flagPlain": "Disable colors",
|
|
191
|
+
"flagNoLogo": "Skip logo",
|
|
192
|
+
"unknownCommand": "Unknown command: {command}",
|
|
193
|
+
"unknownCommandHint": "Run `nbtca --help` to see available commands.",
|
|
194
|
+
"unknownFlag": "Unknown flag: {flag}",
|
|
195
|
+
"unknownFlagHint": "Run `nbtca --help` to see available flags.",
|
|
196
|
+
"invalidFlag": "Flag {flag} is not valid for this command.",
|
|
197
|
+
"invalidFlagHint": "Run `nbtca --help` to see command usage.",
|
|
198
|
+
"invalidLang": "Invalid language. Use `zh` or `en`.",
|
|
199
|
+
"invalidNext": "Invalid --next value. Use --next=<number> (>= 1).",
|
|
200
|
+
"requiresTty": "Interactive mode requires a TTY terminal.",
|
|
201
|
+
"requiresTtyHint": "Use `nbtca --help` for command mode."
|
|
164
202
|
}
|
|
165
203
|
}
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"project": "项目",
|
|
29
29
|
"version": "版本",
|
|
30
30
|
"description": "描述",
|
|
31
|
+
"descriptionText": "NBTCA Prompt - 极简命令行工具",
|
|
31
32
|
"github": "GitHub",
|
|
32
33
|
"website": "网站",
|
|
33
34
|
"email": "邮箱",
|
|
@@ -91,7 +92,8 @@
|
|
|
91
92
|
"searchPlaceholder": "输入关键词...",
|
|
92
93
|
"searching": "正在搜索文档...",
|
|
93
94
|
"searchResults": "个结果",
|
|
94
|
-
"searchNoResults": "未找到匹配的文档"
|
|
95
|
+
"searchNoResults": "未找到匹配的文档",
|
|
96
|
+
"loadingFile": "正在加载"
|
|
95
97
|
},
|
|
96
98
|
"links": {
|
|
97
99
|
"choose": "打开链接:",
|
|
@@ -161,5 +163,41 @@
|
|
|
161
163
|
"upToDate": "已是最新版本 ({version})",
|
|
162
164
|
"checkFailed": "无法检查更新",
|
|
163
165
|
"command": "运行: npm i -g @nbtca/prompt"
|
|
166
|
+
},
|
|
167
|
+
"cli": {
|
|
168
|
+
"usage": "用法:",
|
|
169
|
+
"interactive": "交互式菜单",
|
|
170
|
+
"runCommand": "运行命令",
|
|
171
|
+
"commands": "命令:",
|
|
172
|
+
"flags": "选项:",
|
|
173
|
+
"cmdWebsite": "官方网站 URL",
|
|
174
|
+
"cmdGithub": "GitHub 组织 URL",
|
|
175
|
+
"cmdRoadmap": "项目路线图 URL",
|
|
176
|
+
"cmdRepair": "维修服务 URL",
|
|
177
|
+
"cmdTheme": "查看或设置主题",
|
|
178
|
+
"cmdLang": "设置语言",
|
|
179
|
+
"cmdUpdate": "检查更新",
|
|
180
|
+
"flagVersion": "显示版本号",
|
|
181
|
+
"flagHelp": "显示帮助",
|
|
182
|
+
"flagOpen": "在浏览器中打开(URL 命令)",
|
|
183
|
+
"flagJson": "JSON 输出(events, status)",
|
|
184
|
+
"flagToday": "仅显示今日(events)",
|
|
185
|
+
"flagNext": "限制为前 N 个(events)",
|
|
186
|
+
"flagWatch": "实时刷新(status)",
|
|
187
|
+
"flagInterval": "刷新间隔(status --watch)",
|
|
188
|
+
"flagTimeout": "HTTP 超时时间(status)",
|
|
189
|
+
"flagRetries": "重试次数(status)",
|
|
190
|
+
"flagPlain": "禁用颜色",
|
|
191
|
+
"flagNoLogo": "跳过 Logo",
|
|
192
|
+
"unknownCommand": "未知命令: {command}",
|
|
193
|
+
"unknownCommandHint": "运行 `nbtca --help` 查看可用命令。",
|
|
194
|
+
"unknownFlag": "未知选项: {flag}",
|
|
195
|
+
"unknownFlagHint": "运行 `nbtca --help` 查看可用选项。",
|
|
196
|
+
"invalidFlag": "选项 {flag} 对此命令无效。",
|
|
197
|
+
"invalidFlagHint": "运行 `nbtca --help` 查看命令用法。",
|
|
198
|
+
"invalidLang": "无效语言。请使用 `zh` 或 `en`。",
|
|
199
|
+
"invalidNext": "无效的 --next 值。请使用 --next=<数字>(>= 1)。",
|
|
200
|
+
"requiresTty": "交互模式需要 TTY 终端。",
|
|
201
|
+
"requiresTtyHint": "使用 `nbtca --help` 查看命令模式。"
|
|
164
202
|
}
|
|
165
203
|
}
|
package/dist/index.js
CHANGED
|
@@ -115,8 +115,9 @@ function validateFlags(command, flags) {
|
|
|
115
115
|
return !KNOWN_FLAG_PREFIXES.some((prefix) => flag.startsWith(prefix));
|
|
116
116
|
});
|
|
117
117
|
if (unknown.length > 0) {
|
|
118
|
-
|
|
119
|
-
console.error(chalk.
|
|
118
|
+
const trans0 = t();
|
|
119
|
+
console.error(chalk.red(fmt(trans0.cli.unknownFlag, { flag: unknown[0] })));
|
|
120
|
+
console.error(chalk.dim(trans0.cli.unknownFlagHint));
|
|
120
121
|
process.exit(1);
|
|
121
122
|
}
|
|
122
123
|
const allowed = getAllowedFlagsFor(command);
|
|
@@ -127,43 +128,46 @@ function validateFlags(command, flags) {
|
|
|
127
128
|
return !allowedPrefixes.some((prefix) => flag.startsWith(prefix));
|
|
128
129
|
});
|
|
129
130
|
if (disallowed.length > 0) {
|
|
130
|
-
|
|
131
|
-
console.error(chalk.
|
|
131
|
+
const trans1 = t();
|
|
132
|
+
console.error(chalk.red(fmt(trans1.cli.invalidFlag, { flag: disallowed[0] })));
|
|
133
|
+
console.error(chalk.dim(trans1.cli.invalidFlagHint));
|
|
132
134
|
process.exit(1);
|
|
133
135
|
}
|
|
134
136
|
}
|
|
135
137
|
function printHelp() {
|
|
138
|
+
const trans = t();
|
|
139
|
+
const c = trans.cli;
|
|
136
140
|
console.log(chalk.bold('NBTCA Prompt'));
|
|
137
141
|
console.log();
|
|
138
|
-
console.log(
|
|
139
|
-
console.log(
|
|
140
|
-
console.log(
|
|
142
|
+
console.log(c.usage);
|
|
143
|
+
console.log(` nbtca ${c.interactive}`);
|
|
144
|
+
console.log(` nbtca <command> [flags] ${c.runCommand}`);
|
|
141
145
|
console.log();
|
|
142
|
-
console.log(
|
|
143
|
-
console.log(
|
|
144
|
-
console.log(
|
|
145
|
-
console.log(
|
|
146
|
-
console.log(
|
|
147
|
-
console.log(
|
|
148
|
-
console.log(
|
|
149
|
-
console.log(
|
|
150
|
-
console.log(
|
|
151
|
-
console.log(
|
|
152
|
-
console.log(
|
|
146
|
+
console.log(c.commands);
|
|
147
|
+
console.log(` events ${trans.menu.eventsDesc}`);
|
|
148
|
+
console.log(` docs ${trans.menu.docsDesc}`);
|
|
149
|
+
console.log(` status ${trans.menu.statusDesc}`);
|
|
150
|
+
console.log(` website ${c.cmdWebsite}`);
|
|
151
|
+
console.log(` github ${c.cmdGithub}`);
|
|
152
|
+
console.log(` roadmap ${c.cmdRoadmap}`);
|
|
153
|
+
console.log(` repair ${c.cmdRepair}`);
|
|
154
|
+
console.log(` theme ${c.cmdTheme}`);
|
|
155
|
+
console.log(` lang <zh|en> ${c.cmdLang}`);
|
|
156
|
+
console.log(` update ${c.cmdUpdate}`);
|
|
153
157
|
console.log();
|
|
154
|
-
console.log(
|
|
155
|
-
console.log(
|
|
156
|
-
console.log(
|
|
157
|
-
console.log(
|
|
158
|
-
console.log(
|
|
159
|
-
console.log(
|
|
160
|
-
console.log(
|
|
161
|
-
console.log(
|
|
162
|
-
console.log(
|
|
163
|
-
console.log(
|
|
164
|
-
console.log(
|
|
165
|
-
console.log(
|
|
166
|
-
console.log(
|
|
158
|
+
console.log(c.flags);
|
|
159
|
+
console.log(` --version ${c.flagVersion}`);
|
|
160
|
+
console.log(` --help ${c.flagHelp}`);
|
|
161
|
+
console.log(` --open ${c.flagOpen}`);
|
|
162
|
+
console.log(` --json ${c.flagJson}`);
|
|
163
|
+
console.log(` --today ${c.flagToday}`);
|
|
164
|
+
console.log(` --next=<n> ${c.flagNext}`);
|
|
165
|
+
console.log(` --watch ${c.flagWatch}`);
|
|
166
|
+
console.log(` --interval=<s> ${c.flagInterval}`);
|
|
167
|
+
console.log(` --timeout=<ms> ${c.flagTimeout}`);
|
|
168
|
+
console.log(` --retries=<n> ${c.flagRetries}`);
|
|
169
|
+
console.log(` --plain ${c.flagPlain}`);
|
|
170
|
+
console.log(` --no-logo ${c.flagNoLogo}`);
|
|
167
171
|
}
|
|
168
172
|
async function runEventsCommand(flags) {
|
|
169
173
|
let events = await fetchEvents();
|
|
@@ -180,7 +184,7 @@ async function runEventsCommand(flags) {
|
|
|
180
184
|
if (nextFlag) {
|
|
181
185
|
const n = Number.parseInt(nextFlag.split('=')[1] || '', 10);
|
|
182
186
|
if (!Number.isInteger(n) || n < 1) {
|
|
183
|
-
console.error(chalk.red(
|
|
187
|
+
console.error(chalk.red(t().cli.invalidNext));
|
|
184
188
|
process.exit(1);
|
|
185
189
|
}
|
|
186
190
|
events = events.slice(0, n);
|
|
@@ -301,8 +305,9 @@ async function runCommandMode(argv) {
|
|
|
301
305
|
validateFlags(command, flags);
|
|
302
306
|
if (!command) {
|
|
303
307
|
if (!hasInteractiveTerminal()) {
|
|
304
|
-
|
|
305
|
-
console.error(chalk.
|
|
308
|
+
const cliTrans = t().cli;
|
|
309
|
+
console.error(chalk.red(cliTrans.requiresTty));
|
|
310
|
+
console.error(chalk.dim(cliTrans.requiresTtyHint));
|
|
306
311
|
process.exit(1);
|
|
307
312
|
}
|
|
308
313
|
await main({ skipLogo: flags.has('--no-logo') });
|
|
@@ -311,7 +316,7 @@ async function runCommandMode(argv) {
|
|
|
311
316
|
if (command === 'lang' || command === 'language') {
|
|
312
317
|
const language = (args[0] || '').toLowerCase();
|
|
313
318
|
if (language !== 'zh' && language !== 'en') {
|
|
314
|
-
console.error(chalk.red(
|
|
319
|
+
console.error(chalk.red(t().cli.invalidLang));
|
|
315
320
|
process.exit(1);
|
|
316
321
|
}
|
|
317
322
|
const persisted = setLanguage(language);
|
|
@@ -340,8 +345,9 @@ async function runCommandMode(argv) {
|
|
|
340
345
|
}
|
|
341
346
|
const action = ACTION_ALIASES[command];
|
|
342
347
|
if (!action) {
|
|
343
|
-
|
|
344
|
-
console.error(chalk.
|
|
348
|
+
const cliT = t().cli;
|
|
349
|
+
console.error(chalk.red(fmt(cliT.unknownCommand, { command })));
|
|
350
|
+
console.error(chalk.dim(cliT.unknownCommandHint));
|
|
345
351
|
process.exit(1);
|
|
346
352
|
}
|
|
347
353
|
if (action === 'events') {
|
|
@@ -350,7 +356,7 @@ async function runCommandMode(argv) {
|
|
|
350
356
|
}
|
|
351
357
|
if (action === 'status') {
|
|
352
358
|
const ok = await runStatusCommand(flags);
|
|
353
|
-
if (!ok)
|
|
359
|
+
if (!ok && !flags.has('--json'))
|
|
354
360
|
process.exit(1);
|
|
355
361
|
return;
|
|
356
362
|
}
|
|
@@ -379,9 +385,13 @@ async function runCommandMode(argv) {
|
|
|
379
385
|
const content = [
|
|
380
386
|
row(trans.about.project, APP_INFO.name),
|
|
381
387
|
row(trans.about.version, `v${APP_INFO.version}`),
|
|
388
|
+
row(trans.about.description, trans.about.descriptionText),
|
|
382
389
|
'',
|
|
383
390
|
link(trans.about.github, APP_INFO.repository),
|
|
384
391
|
link(trans.about.website, URLS.homepage),
|
|
392
|
+
link(trans.about.email, URLS.email),
|
|
393
|
+
'',
|
|
394
|
+
row(trans.about.license, `MIT | ${trans.about.author}: m1ngsama`),
|
|
385
395
|
].join('\n');
|
|
386
396
|
note(content, trans.about.title);
|
|
387
397
|
return;
|