@mirascript/cli 0.1.90 → 0.1.92
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/index.js +103 -54
- package/dist/index.js.map +2 -2
- package/package.json +9 -6
- package/src/commands/format.ts +120 -58
- package/src/index.ts +3 -1
- package/tests/format.ts +87 -0
- package/tests/tsconfig.json +3 -0
package/dist/index.js
CHANGED
|
@@ -299,81 +299,129 @@ command.description("执行 MiraScript 脚本,默认命令").option(
|
|
|
299
299
|
|
|
300
300
|
// src/commands/format.ts
|
|
301
301
|
import fs from "node:fs/promises";
|
|
302
|
-
import {
|
|
302
|
+
import { text as readText } from "node:stream/consumers";
|
|
303
|
+
import { InvalidArgumentError as InvalidArgumentError2, program as program2 } from "@commander-js/extra-typings";
|
|
303
304
|
import { loadModule } from "@mirascript/bindings/wasm";
|
|
304
|
-
|
|
305
|
-
var
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
templateConfig.trivia = true;
|
|
313
|
-
templateConfig.diagnostic_position_encoding = mod.wasm.DiagnosticPositionEncoding.Utf8;
|
|
305
|
+
import { formatDiagnosticMessage, parseDiagnostics } from "@mirascript/mirascript/subtle";
|
|
306
|
+
var DEFAULT_LINE_WIDTH = 80;
|
|
307
|
+
var DEFAULT_TAB_SIZE = 2;
|
|
308
|
+
function positiveInteger(name) {
|
|
309
|
+
return (value) => {
|
|
310
|
+
const parsed = Number(value);
|
|
311
|
+
if (!Number.isSafeInteger(parsed) || parsed <= 0) {
|
|
312
|
+
throw new InvalidArgumentError2(`${name} 必须是正整数`);
|
|
314
313
|
}
|
|
315
|
-
return
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
}
|
|
323
|
-
return scriptConfig;
|
|
314
|
+
return parsed;
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
function applyEdits(source, edits) {
|
|
318
|
+
let output = source;
|
|
319
|
+
for (const edit of edits.toSorted((left, right) => right.start - left.start)) {
|
|
320
|
+
output = output.slice(0, edit.start) + edit.text + output.slice(edit.end);
|
|
324
321
|
}
|
|
322
|
+
return output;
|
|
325
323
|
}
|
|
326
|
-
async function format2(input, templateMode) {
|
|
327
|
-
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
324
|
+
async function format2(input, templateMode, options2) {
|
|
325
|
+
const module = await loadModule();
|
|
326
|
+
const result = module.formatSync(
|
|
327
|
+
input,
|
|
328
|
+
{
|
|
329
|
+
input_mode: templateMode ? "Template" : "Script",
|
|
330
|
+
trivia: true,
|
|
331
|
+
// MiraScript 配置枚举的公开序列化值固定为 Utf8。
|
|
332
|
+
// eslint-disable-next-line unicorn/text-encoding-identifier-case
|
|
333
|
+
diagnostic_position_encoding: "Utf8"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
tabSize: options2.tabSize,
|
|
337
|
+
insertSpaces: !options2.useTabs,
|
|
338
|
+
printWidth: options2.lineWidth
|
|
339
|
+
}
|
|
340
|
+
);
|
|
341
|
+
const parsed = parseDiagnostics(input, result.diagnostics);
|
|
342
|
+
if (parsed.errors.length > 0) {
|
|
343
|
+
for (const diagnostic of parsed.errors) {
|
|
344
|
+
console.error(formatDiagnosticMessage(diagnostic.code));
|
|
345
|
+
}
|
|
346
|
+
return void 0;
|
|
337
347
|
}
|
|
348
|
+
return applyEdits(input, result.edits);
|
|
338
349
|
}
|
|
339
350
|
var command2 = program2.command("format");
|
|
340
|
-
command2.description("格式化 MiraScript 脚本").option("-w, --write", "直接修改文件").option("-t, --template", "
|
|
341
|
-
if (
|
|
342
|
-
|
|
351
|
+
command2.description("格式化 MiraScript 脚本").option("-w, --write", "直接修改文件").option("-c, --check", "检查文件是否已经格式化").option("-t, --template", "使用模板模式;文件默认根据 .miratpl 扩展名推断").option("--no-template", "强制使用脚本模式").option("--line-width <columns>", "最大行宽", positiveInteger("最大行宽"), DEFAULT_LINE_WIDTH).option("--tab-size <columns>", "缩进宽度", positiveInteger("缩进宽度"), DEFAULT_TAB_SIZE).option("--use-tabs", "使用制表符缩进").argument("<script...>", '要格式化的脚本文件路径或 glob,输入 "-" 表示从标准输入读取').action(async (patterns, options2) => {
|
|
352
|
+
if (options2.write && options2.check) {
|
|
353
|
+
console.error("--write 与 --check 不能同时使用");
|
|
354
|
+
process.exitCode = 2;
|
|
355
|
+
return;
|
|
343
356
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
357
|
+
const formatterOptions = {
|
|
358
|
+
lineWidth: options2.lineWidth,
|
|
359
|
+
tabSize: options2.tabSize,
|
|
360
|
+
useTabs: !!options2.useTabs
|
|
361
|
+
};
|
|
362
|
+
if (patterns.length === 1 && patterns[0] === "-") {
|
|
363
|
+
if (options2.write || options2.check) {
|
|
364
|
+
console.error("标准输入不能与 --write 或 --check 一起使用");
|
|
365
|
+
process.exitCode = 2;
|
|
366
|
+
return;
|
|
348
367
|
}
|
|
349
|
-
const
|
|
368
|
+
const input = await readText(process.stdin);
|
|
369
|
+
const output = await format2(input, options2.template === true, formatterOptions);
|
|
350
370
|
if (output == null) {
|
|
351
371
|
console.error("格式化失败");
|
|
352
|
-
process.
|
|
372
|
+
process.exitCode = 1;
|
|
373
|
+
return;
|
|
353
374
|
}
|
|
354
375
|
process.stdout.write(output);
|
|
355
376
|
return;
|
|
356
377
|
}
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
378
|
+
if (patterns.includes("-")) {
|
|
379
|
+
console.error("标准输入不能与文件路径混用");
|
|
380
|
+
process.exitCode = 2;
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const files = /* @__PURE__ */ new Set();
|
|
384
|
+
for await (const file of fs.glob(patterns)) files.add(file);
|
|
385
|
+
const sortedFiles = [...files].toSorted();
|
|
386
|
+
if (sortedFiles.length === 0) {
|
|
387
|
+
console.error("没有匹配到任何脚本文件");
|
|
388
|
+
process.exitCode = 2;
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
let failed = false;
|
|
392
|
+
for (const [index, file] of sortedFiles.entries()) {
|
|
393
|
+
try {
|
|
394
|
+
const input = await fs.readFile(file, "utf8");
|
|
395
|
+
const template = options2.template ?? file.toLowerCase().endsWith(".miratpl");
|
|
396
|
+
const output = await format2(input, template, formatterOptions);
|
|
361
397
|
if (output == null) {
|
|
362
398
|
console.error(`格式化失败: ${file}`);
|
|
399
|
+
failed = true;
|
|
363
400
|
continue;
|
|
364
401
|
}
|
|
365
|
-
if (
|
|
366
|
-
|
|
367
|
-
|
|
402
|
+
if (options2.check) {
|
|
403
|
+
if (output !== input) {
|
|
404
|
+
console.error(`需要格式化: ${file}`);
|
|
405
|
+
failed = true;
|
|
406
|
+
}
|
|
407
|
+
} else if (options2.write) {
|
|
408
|
+
if (output !== input) {
|
|
409
|
+
await fs.writeFile(file, output, "utf8");
|
|
410
|
+
console.error(`已格式化: ${file}`);
|
|
411
|
+
}
|
|
412
|
+
} else if (sortedFiles.length === 1) {
|
|
413
|
+
process.stdout.write(output);
|
|
414
|
+
} else {
|
|
415
|
+
if (index > 0) process.stdout.write("\n");
|
|
416
|
+
process.stdout.write(`// File: ${file}
|
|
417
|
+
${output}`);
|
|
368
418
|
}
|
|
369
|
-
|
|
370
|
-
console.
|
|
371
|
-
|
|
372
|
-
process.stdout.write(`// File: ${file}
|
|
373
|
-
`);
|
|
374
|
-
process.stdout.write((output ?? input) + "\n");
|
|
419
|
+
} catch (error) {
|
|
420
|
+
console.error(`无法处理文件 ${file}: ${error instanceof Error ? error.message : String(error)}`);
|
|
421
|
+
failed = true;
|
|
375
422
|
}
|
|
376
423
|
}
|
|
424
|
+
if (failed) process.exitCode = 1;
|
|
377
425
|
});
|
|
378
426
|
|
|
379
427
|
// src/commands/repl.ts
|
|
@@ -540,7 +588,8 @@ var binName = Object.keys(pkg.bin)[0];
|
|
|
540
588
|
if (binName) {
|
|
541
589
|
p = program5.name(binName);
|
|
542
590
|
}
|
|
543
|
-
|
|
591
|
+
p.version(pkg.version).description(pkg.description);
|
|
592
|
+
var index_default = p;
|
|
544
593
|
export {
|
|
545
594
|
index_default as default
|
|
546
595
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/commands/run.ts", "../src/utils/execute.ts", "../src/utils/print.ts", "../src/utils/color.ts", "../src/utils/repl.ts", "../src/commands/format.ts", "../src/commands/repl.ts", "../src/commands/man/index.ts", "../src/commands/man/lib.ts", "../src/commands/man/table.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["program", "styles", "supportsColor", "text", "options", "format", "supportsColor", "styles", "compile", "CompileError", "createVmContext", "CompileError", "createVmContext", "script", "compile", "result", "p", "template", "program", "format", "command", "program", "program", "program", "lib", "styles", "lib", "styles", "styles", "path", "lib", "styles", "name", "command", "program", "lib", "program"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["program", "styles", "supportsColor", "text", "options", "format", "supportsColor", "styles", "compile", "CompileError", "createVmContext", "CompileError", "createVmContext", "script", "compile", "result", "p", "template", "InvalidArgumentError", "program", "format", "options", "command", "program", "program", "program", "lib", "styles", "lib", "styles", "styles", "path", "lib", "styles", "name", "command", "program", "lib", "program"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirascript/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.92",
|
|
4
4
|
"author": "CloudPSS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Cli for MiraScript, an expression based scripting language.",
|
|
@@ -35,19 +35,22 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@commander-js/extra-typings": "^15.0.0",
|
|
38
|
-
"@mirascript/bindings": "~0.1.
|
|
39
|
-
"@mirascript/
|
|
40
|
-
"@mirascript/
|
|
38
|
+
"@mirascript/bindings": "~0.1.92",
|
|
39
|
+
"@mirascript/help": "~0.1.92",
|
|
40
|
+
"@mirascript/mirascript": "~0.1.92",
|
|
41
41
|
"ansi-styles": "^7.0.0",
|
|
42
42
|
"commander": "^15.0.0",
|
|
43
43
|
"supports-color": "^11.0.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"
|
|
46
|
+
"ava": "^8.0.1",
|
|
47
|
+
"c8": "^12.0.0",
|
|
48
|
+
"type-fest": "^5.9.0"
|
|
47
49
|
},
|
|
48
50
|
"scripts": {
|
|
49
51
|
"watch": "pnpm build --watch",
|
|
50
52
|
"build": "pnpm clean && pnpm tsc && node ./esbuild.config.js",
|
|
51
|
-
"clean": "rimraf dist"
|
|
53
|
+
"clean": "rimraf dist",
|
|
54
|
+
"test": "c8 ava"
|
|
52
55
|
}
|
|
53
56
|
}
|
package/src/commands/format.ts
CHANGED
|
@@ -1,90 +1,152 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { text as readText } from 'node:stream/consumers';
|
|
4
|
+
import { InvalidArgumentError, program } from '@commander-js/extra-typings';
|
|
5
|
+
import { loadModule } from '@mirascript/bindings/wasm';
|
|
6
|
+
import { formatDiagnosticMessage, parseDiagnostics } from '@mirascript/mirascript/subtle';
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
const DEFAULT_LINE_WIDTH = 80;
|
|
9
|
+
const DEFAULT_TAB_SIZE = 2;
|
|
8
10
|
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
scriptConfig = new mod.wasm.CompileConfig();
|
|
23
|
-
scriptConfig.input_mode = mod.wasm.InputMode.Script;
|
|
24
|
-
scriptConfig.trivia = true;
|
|
25
|
-
scriptConfig.diagnostic_position_encoding = mod.wasm.DiagnosticPositionEncoding.Utf8;
|
|
11
|
+
/** CLI 格式化参数。 */
|
|
12
|
+
type FormatterOptions = {
|
|
13
|
+
readonly lineWidth: number;
|
|
14
|
+
readonly tabSize: number;
|
|
15
|
+
readonly useTabs: boolean;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/** 创建正整数参数解析器。 */
|
|
19
|
+
function positiveInteger(name: string): (value: string) => number {
|
|
20
|
+
return (value) => {
|
|
21
|
+
const parsed = Number(value);
|
|
22
|
+
if (!Number.isSafeInteger(parsed) || parsed <= 0) {
|
|
23
|
+
throw new InvalidArgumentError(`${name} 必须是正整数`);
|
|
26
24
|
}
|
|
27
|
-
return
|
|
28
|
-
}
|
|
25
|
+
return parsed;
|
|
26
|
+
};
|
|
29
27
|
}
|
|
30
28
|
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
/** 按倒序应用 UTF-16 偏移编辑。 */
|
|
30
|
+
function applyEdits(source: string, edits: ReadonlyArray<{ start: number; end: number; text: string }>): string {
|
|
31
|
+
let output = source;
|
|
32
|
+
for (const edit of edits.toSorted((left, right) => right.start - left.start)) {
|
|
33
|
+
output = output.slice(0, edit.start) + edit.text + output.slice(edit.end);
|
|
34
|
+
}
|
|
35
|
+
return output;
|
|
36
|
+
}
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
/** 使用统一 binding 格式化一份源码。 */
|
|
39
|
+
async function format(input: string, templateMode: boolean, options: FormatterOptions): Promise<string | undefined> {
|
|
40
|
+
const module = await loadModule();
|
|
41
|
+
const result = module.formatSync(
|
|
42
|
+
input,
|
|
43
|
+
{
|
|
44
|
+
input_mode: templateMode ? 'Template' : 'Script',
|
|
45
|
+
trivia: true,
|
|
46
|
+
// MiraScript 配置枚举的公开序列化值固定为 Utf8。
|
|
47
|
+
// eslint-disable-next-line unicorn/text-encoding-identifier-case
|
|
48
|
+
diagnostic_position_encoding: 'Utf8',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
tabSize: options.tabSize,
|
|
52
|
+
insertSpaces: !options.useTabs,
|
|
53
|
+
printWidth: options.lineWidth,
|
|
54
|
+
},
|
|
55
|
+
);
|
|
56
|
+
const parsed = parseDiagnostics(input, result.diagnostics);
|
|
57
|
+
if (parsed.errors.length > 0) {
|
|
58
|
+
for (const diagnostic of parsed.errors) {
|
|
59
|
+
console.error(formatDiagnosticMessage(diagnostic.code));
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
44
62
|
}
|
|
63
|
+
return applyEdits(input, result.edits);
|
|
45
64
|
}
|
|
46
65
|
|
|
47
66
|
const command = program.command('format');
|
|
48
67
|
command
|
|
49
68
|
.description('格式化 MiraScript 脚本')
|
|
50
69
|
.option('-w, --write', '直接修改文件')
|
|
51
|
-
.option('-
|
|
70
|
+
.option('-c, --check', '检查文件是否已经格式化')
|
|
71
|
+
.option('-t, --template', '使用模板模式;文件默认根据 .miratpl 扩展名推断')
|
|
72
|
+
.option('--no-template', '强制使用脚本模式')
|
|
73
|
+
.option('--line-width <columns>', '最大行宽', positiveInteger('最大行宽'), DEFAULT_LINE_WIDTH)
|
|
74
|
+
.option('--tab-size <columns>', '缩进宽度', positiveInteger('缩进宽度'), DEFAULT_TAB_SIZE)
|
|
75
|
+
.option('--use-tabs', '使用制表符缩进')
|
|
52
76
|
.argument('<script...>', '要格式化的脚本文件路径或 glob,输入 "-" 表示从标准输入读取')
|
|
53
|
-
.action(async (
|
|
54
|
-
if (
|
|
55
|
-
|
|
77
|
+
.action(async (patterns, options) => {
|
|
78
|
+
if (options.write && options.check) {
|
|
79
|
+
console.error('--write 与 --check 不能同时使用');
|
|
80
|
+
process.exitCode = 2;
|
|
81
|
+
return;
|
|
56
82
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
83
|
+
const formatterOptions: FormatterOptions = {
|
|
84
|
+
lineWidth: options.lineWidth,
|
|
85
|
+
tabSize: options.tabSize,
|
|
86
|
+
useTabs: !!options.useTabs,
|
|
87
|
+
};
|
|
88
|
+
if (patterns.length === 1 && patterns[0] === '-') {
|
|
89
|
+
if (options.write || options.check) {
|
|
90
|
+
console.error('标准输入不能与 --write 或 --check 一起使用');
|
|
91
|
+
process.exitCode = 2;
|
|
92
|
+
return;
|
|
62
93
|
}
|
|
63
|
-
const
|
|
94
|
+
const input = await readText(process.stdin);
|
|
95
|
+
const output = await format(input, options.template === true, formatterOptions);
|
|
64
96
|
if (output == null) {
|
|
65
97
|
console.error('格式化失败');
|
|
66
|
-
process.
|
|
98
|
+
process.exitCode = 1;
|
|
99
|
+
return;
|
|
67
100
|
}
|
|
68
101
|
process.stdout.write(output);
|
|
69
102
|
return;
|
|
70
103
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
104
|
+
if (patterns.includes('-')) {
|
|
105
|
+
console.error('标准输入不能与文件路径混用');
|
|
106
|
+
process.exitCode = 2;
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const files = new Set<string>();
|
|
111
|
+
for await (const file of fs.glob(patterns)) files.add(file);
|
|
112
|
+
const sortedFiles = [...files].toSorted();
|
|
113
|
+
if (sortedFiles.length === 0) {
|
|
114
|
+
console.error('没有匹配到任何脚本文件');
|
|
115
|
+
process.exitCode = 2;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
let failed = false;
|
|
120
|
+
for (const [index, file] of sortedFiles.entries()) {
|
|
121
|
+
try {
|
|
122
|
+
const input = await fs.readFile(file, 'utf8');
|
|
123
|
+
const template = options.template ?? file.toLowerCase().endsWith('.miratpl');
|
|
124
|
+
const output = await format(input, template, formatterOptions);
|
|
75
125
|
if (output == null) {
|
|
76
126
|
console.error(`格式化失败: ${file}`);
|
|
127
|
+
failed = true;
|
|
77
128
|
continue;
|
|
78
129
|
}
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
|
|
130
|
+
if (options.check) {
|
|
131
|
+
if (output !== input) {
|
|
132
|
+
console.error(`需要格式化: ${file}`);
|
|
133
|
+
failed = true;
|
|
134
|
+
}
|
|
135
|
+
} else if (options.write) {
|
|
136
|
+
if (output !== input) {
|
|
137
|
+
await fs.writeFile(file, output, 'utf8');
|
|
138
|
+
console.error(`已格式化: ${file}`);
|
|
139
|
+
}
|
|
140
|
+
} else if (sortedFiles.length === 1) {
|
|
141
|
+
process.stdout.write(output);
|
|
142
|
+
} else {
|
|
143
|
+
if (index > 0) process.stdout.write('\n');
|
|
144
|
+
process.stdout.write(`// File: ${file}\n${output}`);
|
|
82
145
|
}
|
|
83
|
-
|
|
84
|
-
console.
|
|
85
|
-
|
|
86
|
-
process.stdout.write(`// File: ${file}\n`);
|
|
87
|
-
process.stdout.write((output ?? input) + '\n');
|
|
146
|
+
} catch (error) {
|
|
147
|
+
console.error(`无法处理文件 ${file}: ${error instanceof Error ? error.message : String(error)}`);
|
|
148
|
+
failed = true;
|
|
88
149
|
}
|
|
89
150
|
}
|
|
151
|
+
if (failed) process.exitCode = 1;
|
|
90
152
|
});
|
package/src/index.ts
CHANGED
package/tests/format.ts
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import test from 'ava';
|
|
6
|
+
|
|
7
|
+
const packageDir = path.dirname(import.meta.dirname);
|
|
8
|
+
const cli = path.join(packageDir, 'cli.js');
|
|
9
|
+
|
|
10
|
+
interface RunResult {
|
|
11
|
+
readonly code: number | null;
|
|
12
|
+
readonly stdout: string;
|
|
13
|
+
readonly stderr: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** 在独立进程中运行 CLI,以覆盖真实参数解析、标准流和退出码。 */
|
|
17
|
+
function run(args: readonly string[], input = ''): Promise<RunResult> {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
const child = spawn(process.execPath, [cli, ...args], { cwd: packageDir });
|
|
20
|
+
let stdout = '';
|
|
21
|
+
let stderr = '';
|
|
22
|
+
child.stdout.setEncoding('utf8').on('data', (chunk: string) => (stdout += chunk));
|
|
23
|
+
child.stderr.setEncoding('utf8').on('data', (chunk: string) => (stderr += chunk));
|
|
24
|
+
child.on('error', reject);
|
|
25
|
+
child.on('close', (code) => resolve({ code, stdout, stderr }));
|
|
26
|
+
child.stdin.end(input);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
test('formats stdin with width options and reports syntax errors', async (t) => {
|
|
31
|
+
const formatted = await run(['format', '--line-width', '12', '-'], 'let x=[1,2,3,4];');
|
|
32
|
+
t.is(formatted.code, 0);
|
|
33
|
+
t.regex(formatted.stdout, /let x = \[\n {2}1,/);
|
|
34
|
+
|
|
35
|
+
const invalid = await run(['format', '-'], 'let x=[1,2,;');
|
|
36
|
+
t.is(invalid.code, 1);
|
|
37
|
+
t.regex(invalid.stderr, /格式化失败/);
|
|
38
|
+
|
|
39
|
+
const empty = await run(['format', '-']);
|
|
40
|
+
t.is(empty.code, 0);
|
|
41
|
+
t.is(empty.stdout, '\n');
|
|
42
|
+
|
|
43
|
+
const singleLine = await run(['format', '-'], ' \n \n[1,2]\n \n');
|
|
44
|
+
t.is(singleLine.code, 0);
|
|
45
|
+
t.is(singleLine.stdout, '[1, 2]');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test('check and write use deterministic exit codes', async (t) => {
|
|
49
|
+
const directory = await mkdtemp(path.join(tmpdir(), 'mirascript-format-'));
|
|
50
|
+
const file = path.join(directory, 'input.mira');
|
|
51
|
+
try {
|
|
52
|
+
await writeFile(file, 'let x=[1,2,3,4];', 'utf8');
|
|
53
|
+
t.is((await run(['format', '--check', file])).code, 1);
|
|
54
|
+
t.is((await run(['format', '--write', file])).code, 0);
|
|
55
|
+
t.is((await run(['format', '--check', file])).code, 0);
|
|
56
|
+
t.is(await readFile(file, 'utf8'), 'let x = [1, 2, 3, 4];');
|
|
57
|
+
} finally {
|
|
58
|
+
await rm(directory, { recursive: true, force: true });
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('rejects invalid argument combinations and unmatched globs', async (t) => {
|
|
63
|
+
t.is((await run(['format', '--write', '--check', 'missing.mira'])).code, 2);
|
|
64
|
+
t.is((await run(['format', 'definitely-not-present-*.mira'])).code, 2);
|
|
65
|
+
t.is((await run(['format', '--check', '-'])).code, 2);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test('infers template mode from the file extension and permits an explicit override', async (t) => {
|
|
69
|
+
const directory = await mkdtemp(path.join(tmpdir(), 'mirascript-format-template-'));
|
|
70
|
+
const file = path.join(directory, 'input.miratpl');
|
|
71
|
+
try {
|
|
72
|
+
await writeFile(file, 'Hello, $("World")!', 'utf8');
|
|
73
|
+
const inferred = await run(['format', file]);
|
|
74
|
+
t.is(inferred.code, 0);
|
|
75
|
+
t.is(inferred.stdout, 'Hello, $("World")!');
|
|
76
|
+
|
|
77
|
+
t.is((await run(['format', '--write', file])).code, 0);
|
|
78
|
+
t.is(await readFile(file, 'utf8'), 'Hello, $("World")!');
|
|
79
|
+
t.is((await run(['format', '--check', file])).code, 0);
|
|
80
|
+
|
|
81
|
+
const overridden = await run(['format', '--no-template', file]);
|
|
82
|
+
t.is(overridden.code, 1);
|
|
83
|
+
t.regex(overridden.stderr, /格式化失败/);
|
|
84
|
+
} finally {
|
|
85
|
+
await rm(directory, { recursive: true, force: true });
|
|
86
|
+
}
|
|
87
|
+
});
|