@rhost/testkit 1.4.0 → 1.5.0
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 +1 -0
- package/dist/cli/index.js +15 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +107 -19
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/lint.d.ts +2 -0
- package/dist/cli/lint.d.ts.map +1 -0
- package/dist/cli/lint.js +163 -0
- package/dist/cli/lint.js.map +1 -0
- package/dist/cli/mush-format.d.ts +2 -0
- package/dist/cli/mush-format.d.ts.map +1 -0
- package/dist/cli/mush-format.js +232 -0
- package/dist/cli/mush-format.js.map +1 -0
- package/dist/client.d.ts +43 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +78 -5
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/offline/document.d.ts +8 -0
- package/dist/offline/document.d.ts.map +1 -0
- package/dist/offline/document.js +124 -0
- package/dist/offline/document.js.map +1 -0
- package/dist/offline/expect.d.ts +27 -0
- package/dist/offline/expect.d.ts.map +1 -0
- package/dist/offline/expect.js +90 -0
- package/dist/offline/expect.js.map +1 -0
- package/dist/offline/index.d.ts +5 -0
- package/dist/offline/index.d.ts.map +1 -0
- package/dist/offline/index.js +14 -0
- package/dist/offline/index.js.map +1 -0
- package/dist/offline/mock-client.d.ts +19 -0
- package/dist/offline/mock-client.d.ts.map +1 -0
- package/dist/offline/mock-client.js +36 -0
- package/dist/offline/mock-client.js.map +1 -0
- package/dist/offline/mock-world.d.ts +30 -0
- package/dist/offline/mock-world.d.ts.map +1 -0
- package/dist/offline/mock-world.js +64 -0
- package/dist/offline/mock-world.js.map +1 -0
- package/dist/offline/reduced-expect.d.ts +38 -0
- package/dist/offline/reduced-expect.d.ts.map +1 -0
- package/dist/offline/reduced-expect.js +61 -0
- package/dist/offline/reduced-expect.js.map +1 -0
- package/dist/offline/runner.d.ts +13 -0
- package/dist/offline/runner.d.ts.map +1 -0
- package/dist/offline/runner.js +174 -0
- package/dist/offline/runner.js.map +1 -0
- package/dist/offline/types.d.ts +78 -0
- package/dist/offline/types.d.ts.map +1 -0
- package/dist/offline/types.js +3 -0
- package/dist/offline/types.js.map +1 -0
- package/dist/reporter.d.ts +3 -1
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +20 -0
- package/dist/reporter.js.map +1 -1
- package/dist/runner.d.ts +39 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +82 -15
- package/dist/runner.js.map +1 -1
- package/dist/validator/formatter.js +13 -2
- package/dist/validator/formatter.js.map +1 -1
- package/dist/validator/mush-format.d.ts +43 -0
- package/dist/validator/mush-format.d.ts.map +1 -0
- package/dist/validator/mush-format.js +484 -0
- package/dist/validator/mush-format.js.map +1 -0
- package/dist/validator/mush-lint.d.ts +22 -0
- package/dist/validator/mush-lint.d.ts.map +1 -0
- package/dist/validator/mush-lint.js +590 -0
- package/dist/validator/mush-lint.js.map +1 -0
- package/package.json +10 -2
package/README.md
CHANGED
|
@@ -1231,6 +1231,7 @@ See [ROADMAP.md](./ROADMAP.md) for full details and implementation notes.
|
|
|
1231
1231
|
| v1.1.0 | Server pre-flight assertions · Multi-persona test matrix · Side-effect assertion mode |
|
|
1232
1232
|
| v1.2.0 | Register clobber analyzer · Deploy pipeline with rollback · Dialect compatibility report |
|
|
1233
1233
|
| v1.3.0 | **Softcode formatter** (`rhost-testkit fmt`) · **Benchmark mode** (`RhostBenchmark`) |
|
|
1234
|
+
| v1.4.0 | **PostgreSQL sidecar** (`docker-compose.yml`) · **`execscript` Jobs bridge** (`scripts/jobs_db.py`) · **`rhost.config.json`** custom scripts dir + mush config · `softcode/` directory |
|
|
1234
1235
|
|
|
1235
1236
|
### Planned
|
|
1236
1237
|
|
package/dist/cli/index.js
CHANGED
|
@@ -9,6 +9,8 @@ const watch_1 = require("./watch");
|
|
|
9
9
|
const init_1 = require("./init");
|
|
10
10
|
const deploy_1 = require("./deploy");
|
|
11
11
|
const fmt_1 = require("./fmt");
|
|
12
|
+
const mush_format_1 = require("./mush-format");
|
|
13
|
+
const lint_1 = require("./lint");
|
|
12
14
|
const args = process.argv.slice(2);
|
|
13
15
|
const cmd = args[0];
|
|
14
16
|
switch (cmd) {
|
|
@@ -27,6 +29,12 @@ switch (cmd) {
|
|
|
27
29
|
case 'fmt':
|
|
28
30
|
(0, fmt_1.runFmtCli)(args.slice(1));
|
|
29
31
|
break;
|
|
32
|
+
case 'mush-format':
|
|
33
|
+
(0, mush_format_1.runMushFormatCli)(args.slice(1));
|
|
34
|
+
break;
|
|
35
|
+
case 'lint':
|
|
36
|
+
(0, lint_1.runLintCli)(args.slice(1));
|
|
37
|
+
break;
|
|
30
38
|
case '--version':
|
|
31
39
|
case '-v': {
|
|
32
40
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
@@ -56,9 +64,11 @@ USAGE
|
|
|
56
64
|
COMMANDS
|
|
57
65
|
validate Validate a softcode expression offline (no server needed)
|
|
58
66
|
watch Watch test files and re-run on change
|
|
59
|
-
init
|
|
67
|
+
init Scaffold project structure and optional CI/CD templates
|
|
60
68
|
deploy Deploy a softcode file with automatic rollback on failure
|
|
61
|
-
fmt Format a softcode
|
|
69
|
+
fmt Format a softcode expression (normalize whitespace)
|
|
70
|
+
mush-format Two-way converter: expand installer→src or compress src→installer
|
|
71
|
+
lint Static analysis: bare input, missing locks, dead attrs, length budgets
|
|
62
72
|
|
|
63
73
|
OPTIONS
|
|
64
74
|
-v, --version Print version and exit
|
|
@@ -71,8 +81,9 @@ EXAMPLES
|
|
|
71
81
|
rhost-testkit validate --file mycode.mush
|
|
72
82
|
rhost-testkit watch
|
|
73
83
|
rhost-testkit watch src/__tests__/math.test.ts
|
|
74
|
-
rhost-testkit init
|
|
75
|
-
rhost-testkit init
|
|
84
|
+
rhost-testkit init
|
|
85
|
+
rhost-testkit init my-project
|
|
86
|
+
rhost-testkit init . --ci github
|
|
76
87
|
rhost-testkit deploy --file mycode.mush --dry-run
|
|
77
88
|
rhost-testkit fmt mycode.mush
|
|
78
89
|
rhost-testkit fmt --check mycode.mush
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AACA,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;;AAE9E,yCAA4C;AAC5C,mCAAsC;AACtC,iCAAoC;AACpC,qCAAwC;AACxC,+BAAkC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AACA,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;;AAE9E,yCAA4C;AAC5C,mCAAsC;AACtC,iCAAoC;AACpC,qCAAwC;AACxC,+BAAkC;AAClC,+CAAiD;AACjD,iCAAoC;AAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,QAAQ,GAAG,EAAE,CAAC;IACZ,KAAK,UAAU;QACb,IAAA,yBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM;IAER,KAAK,OAAO;QACV,IAAA,mBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM;IAER,KAAK,MAAM;QACT,IAAA,iBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM;IAER,KAAK,QAAQ;QACX,IAAA,qBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM;IAER,KAAK,KAAK;QACR,IAAA,eAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM;IAER,KAAK,aAAa;QAChB,IAAA,8BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM;IAER,KAAK,MAAM;QACT,IAAA,iBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM;IAER,KAAK,WAAW,CAAC;IACjB,KAAK,IAAI,CAAC,CAAC,CAAC;QACV,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI,CAAC;IACV,KAAK,SAAS;QACZ,SAAS,EAAE,CAAC;QACZ,MAAM;IAER;QACE,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,KAAK,CAAC,CAAC;QAC3D,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,SAAS;IAChB,8DAA8D;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC;iBACG,GAAG,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B3B,CAAC,IAAI,EAAE,CAAC,CAAC;AACV,CAAC"}
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAiIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CA4C5E"}
|
package/dist/cli/init.js
CHANGED
|
@@ -40,8 +40,41 @@ exports.runInitCli = runInitCli;
|
|
|
40
40
|
const fs = __importStar(require("fs"));
|
|
41
41
|
const path = __importStar(require("path"));
|
|
42
42
|
// ---------------------------------------------------------------------------
|
|
43
|
-
//
|
|
43
|
+
// Scaffold templates
|
|
44
44
|
// ---------------------------------------------------------------------------
|
|
45
|
+
const EXAMPLE_MUSH = `\
|
|
46
|
+
@@ ============================================================================
|
|
47
|
+
@@ Mushcode Installer for: Example
|
|
48
|
+
@@ Version: 1.0.0
|
|
49
|
+
@@ Requires: None
|
|
50
|
+
@@ ============================================================================
|
|
51
|
+
|
|
52
|
+
&CMD_HELLO me=$+hello:@pemit %#=Hello, [name(%#)]!
|
|
53
|
+
&HELP_HELLO me=Usage: +hello — greet yourself
|
|
54
|
+
|
|
55
|
+
@@ ---[ UNINSTALL ]-----------------------------------------------------------
|
|
56
|
+
&CMD_HELLO me=
|
|
57
|
+
&HELP_HELLO me=
|
|
58
|
+
@@ [END OF FILE]
|
|
59
|
+
`;
|
|
60
|
+
const EXAMPLE_TEST = `\
|
|
61
|
+
import { RhostRunner } from '@rhost/testkit';
|
|
62
|
+
|
|
63
|
+
const runner = new RhostRunner();
|
|
64
|
+
|
|
65
|
+
runner.describe('Example', ({ it }) => {
|
|
66
|
+
it('add works', async ({ expect }) => {
|
|
67
|
+
await expect('add(2,3)').toBe('5');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
runner.run({
|
|
72
|
+
host: process.env.RHOST_HOST ?? 'localhost',
|
|
73
|
+
port: Number(process.env.RHOST_PORT ?? 4201),
|
|
74
|
+
username: process.env.RHOST_USER ?? '#1',
|
|
75
|
+
password: process.env.RHOST_PASS ?? 'potrzebie',
|
|
76
|
+
});
|
|
77
|
+
`;
|
|
45
78
|
const GITHUB_WORKFLOW = `\
|
|
46
79
|
name: MUSH Tests
|
|
47
80
|
|
|
@@ -123,6 +156,7 @@ mush-tests:
|
|
|
123
156
|
// Public handler
|
|
124
157
|
// ---------------------------------------------------------------------------
|
|
125
158
|
function runInitCli(args, cwd = process.cwd()) {
|
|
159
|
+
let dir = null;
|
|
126
160
|
let ci = null;
|
|
127
161
|
let force = false;
|
|
128
162
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -142,24 +176,70 @@ function runInitCli(args, cwd = process.cwd()) {
|
|
|
142
176
|
process.exit(0);
|
|
143
177
|
}
|
|
144
178
|
else if (!arg.startsWith('-')) {
|
|
145
|
-
|
|
179
|
+
if (dir !== null) {
|
|
180
|
+
die(`Unexpected argument: ${arg}`);
|
|
181
|
+
}
|
|
182
|
+
dir = arg;
|
|
146
183
|
}
|
|
147
184
|
else {
|
|
148
185
|
die(`Unknown option: ${arg}`);
|
|
149
186
|
}
|
|
150
187
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
188
|
+
const targetDir = path.resolve(cwd, dir ?? '.');
|
|
189
|
+
// Create the target directory if it doesn't exist
|
|
190
|
+
if (!fs.existsSync(targetDir)) {
|
|
191
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
192
|
+
console.log(`rhost-testkit init: created ${targetDir}`);
|
|
193
|
+
}
|
|
194
|
+
// Scaffold project structure
|
|
195
|
+
scaffoldProject(targetDir, force);
|
|
196
|
+
// Optionally write CI workflow
|
|
197
|
+
if (ci) {
|
|
198
|
+
scaffoldCi(targetDir, ci, force);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
202
|
+
// Scaffold helpers
|
|
203
|
+
// ---------------------------------------------------------------------------
|
|
204
|
+
function scaffoldProject(targetDir, force) {
|
|
205
|
+
const dirs = [
|
|
206
|
+
path.join(targetDir, 'softcode'),
|
|
207
|
+
path.join(targetDir, 'src', '__tests__'),
|
|
208
|
+
path.join(targetDir, 'dist'),
|
|
209
|
+
];
|
|
210
|
+
for (const d of dirs) {
|
|
211
|
+
if (!fs.existsSync(d)) {
|
|
212
|
+
fs.mkdirSync(d, { recursive: true });
|
|
213
|
+
console.log(`rhost-testkit init: created ${d}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const files = [
|
|
217
|
+
{
|
|
218
|
+
file: path.join(targetDir, 'softcode', 'example.mush'),
|
|
219
|
+
content: EXAMPLE_MUSH,
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
file: path.join(targetDir, 'src', '__tests__', 'example.test.ts'),
|
|
223
|
+
content: EXAMPLE_TEST,
|
|
224
|
+
},
|
|
225
|
+
];
|
|
226
|
+
for (const { file, content } of files) {
|
|
227
|
+
if (fs.existsSync(file) && !force) {
|
|
228
|
+
console.log(`rhost-testkit init: ${file} already exists (use --force to overwrite)`);
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
fs.writeFileSync(file, content, 'utf8');
|
|
232
|
+
console.log(`rhost-testkit init: wrote ${file}`);
|
|
155
233
|
}
|
|
234
|
+
}
|
|
235
|
+
function scaffoldCi(targetDir, ci, force) {
|
|
156
236
|
const targets = {
|
|
157
237
|
github: {
|
|
158
|
-
file: path.join(
|
|
238
|
+
file: path.join(targetDir, '.github', 'workflows', 'mush-tests.yml'),
|
|
159
239
|
content: GITHUB_WORKFLOW,
|
|
160
240
|
},
|
|
161
241
|
gitlab: {
|
|
162
|
-
file: path.join(
|
|
242
|
+
file: path.join(targetDir, '.gitlab-ci.yml'),
|
|
163
243
|
content: GITLAB_CI,
|
|
164
244
|
},
|
|
165
245
|
};
|
|
@@ -168,8 +248,8 @@ function runInitCli(args, cwd = process.cwd()) {
|
|
|
168
248
|
die(`--ci: unknown platform '${ci}' — use 'github' or 'gitlab'`);
|
|
169
249
|
}
|
|
170
250
|
if (fs.existsSync(target.file) && !force) {
|
|
171
|
-
console.
|
|
172
|
-
|
|
251
|
+
console.log(`rhost-testkit init: ${target.file} already exists (use --force to overwrite)`);
|
|
252
|
+
return;
|
|
173
253
|
}
|
|
174
254
|
const dir = path.dirname(target.file);
|
|
175
255
|
if (!fs.existsSync(dir)) {
|
|
@@ -184,20 +264,28 @@ function runInitCli(args, cwd = process.cwd()) {
|
|
|
184
264
|
function printHelp() {
|
|
185
265
|
console.log(`
|
|
186
266
|
USAGE
|
|
187
|
-
rhost-testkit init --ci <platform>
|
|
267
|
+
rhost-testkit init [dir] [--ci <platform>] [--force]
|
|
188
268
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
269
|
+
ARGUMENTS
|
|
270
|
+
dir Directory to initialise (default: current directory)
|
|
271
|
+
Created automatically if it does not exist.
|
|
192
272
|
|
|
193
273
|
OPTIONS
|
|
194
|
-
--
|
|
195
|
-
|
|
274
|
+
--ci <platform> Also generate a CI/CD workflow file
|
|
275
|
+
Platforms: github, gitlab
|
|
276
|
+
--force Overwrite existing files
|
|
277
|
+
-h, --help Show this help
|
|
278
|
+
|
|
279
|
+
SCAFFOLD
|
|
280
|
+
softcode/example.mush Starter installer file
|
|
281
|
+
src/__tests__/example.test.ts Starter RhostRunner test
|
|
282
|
+
dist/ Output directory (empty)
|
|
196
283
|
|
|
197
284
|
EXAMPLES
|
|
198
|
-
rhost-testkit init
|
|
199
|
-
rhost-testkit init
|
|
200
|
-
rhost-testkit init --ci github
|
|
285
|
+
rhost-testkit init
|
|
286
|
+
rhost-testkit init my-project
|
|
287
|
+
rhost-testkit init . --ci github
|
|
288
|
+
rhost-testkit init my-project --ci gitlab --force
|
|
201
289
|
`.trim());
|
|
202
290
|
}
|
|
203
291
|
// ---------------------------------------------------------------------------
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"AAQA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CA+C5E"}
|
package/dist/cli/lint.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// rhost-testkit lint — static analysis CLI
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.runLintCli = runLintCli;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const mush_lint_1 = require("../validator/mush-lint");
|
|
43
|
+
function runLintCli(args, cwd = process.cwd()) {
|
|
44
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
45
|
+
printHelp();
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
const jsonMode = args.includes('--json');
|
|
49
|
+
const strict = args.includes('--strict'); // exit 1 on any WARN too
|
|
50
|
+
const files = args.filter(a => !a.startsWith('-'));
|
|
51
|
+
if (files.length === 0) {
|
|
52
|
+
const input = fs.readFileSync('/dev/stdin', 'utf8');
|
|
53
|
+
const result = (0, mush_lint_1.lintContent)(input, '<stdin>');
|
|
54
|
+
printResult('<stdin>', result.diagnostics, jsonMode);
|
|
55
|
+
process.exit(exitCode(result.errors, result.warnings, strict));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
let totalErrors = 0;
|
|
59
|
+
let totalWarnings = 0;
|
|
60
|
+
let exitWithError = false;
|
|
61
|
+
for (const file of files) {
|
|
62
|
+
const resolved = path.resolve(cwd, file);
|
|
63
|
+
if (!fs.existsSync(resolved)) {
|
|
64
|
+
console.error(`rhost-testkit lint: file not found: ${resolved}`);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
const content = fs.readFileSync(resolved, 'utf8');
|
|
68
|
+
const result = (0, mush_lint_1.lintContent)(content, file);
|
|
69
|
+
printResult(path.relative(cwd, resolved), result.diagnostics, jsonMode);
|
|
70
|
+
totalErrors += result.errors;
|
|
71
|
+
totalWarnings += result.warnings;
|
|
72
|
+
if (exitCode(result.errors, result.warnings, strict) > 0) {
|
|
73
|
+
exitWithError = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (files.length > 1 && !jsonMode) {
|
|
77
|
+
console.log(`\nTotal: ${totalErrors} error(s), ${totalWarnings} warning(s) across ${files.length} file(s)`);
|
|
78
|
+
}
|
|
79
|
+
process.exit(exitWithError ? 1 : 0);
|
|
80
|
+
}
|
|
81
|
+
function exitCode(errors, warnings, strict) {
|
|
82
|
+
if (errors > 0)
|
|
83
|
+
return 1;
|
|
84
|
+
if (strict && warnings > 0)
|
|
85
|
+
return 1;
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
function printResult(filename, diags, jsonMode) {
|
|
89
|
+
if (jsonMode) {
|
|
90
|
+
console.log(JSON.stringify({ file: filename, diagnostics: diags }));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (diags.length === 0) {
|
|
94
|
+
console.log(`${filename}: clean`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const errors = diags.filter(d => d.severity === 'ERROR').length;
|
|
98
|
+
const warnings = diags.filter(d => d.severity === 'WARN').length;
|
|
99
|
+
const infos = diags.filter(d => d.severity === 'INFO').length;
|
|
100
|
+
const hdr = `mush-lint: ${filename}`;
|
|
101
|
+
console.log(hdr);
|
|
102
|
+
console.log('='.repeat(hdr.length));
|
|
103
|
+
for (const d of diags) {
|
|
104
|
+
const attrPart = d.attr ? ` [${d.attr}]` : '';
|
|
105
|
+
const loc = `line ${d.line}`;
|
|
106
|
+
console.log(`${padRight(d.severity, 7)} ${padRight(d.code, 4)} ${padRight(loc, 10)}${attrPart} ${d.message}`);
|
|
107
|
+
}
|
|
108
|
+
const summary = [];
|
|
109
|
+
if (errors > 0)
|
|
110
|
+
summary.push(`${errors} error(s)`);
|
|
111
|
+
if (warnings > 0)
|
|
112
|
+
summary.push(`${warnings} warning(s)`);
|
|
113
|
+
if (infos > 0)
|
|
114
|
+
summary.push(`${infos} info`);
|
|
115
|
+
console.log(`\n${summary.join(', ')}`);
|
|
116
|
+
if (errors > 0) {
|
|
117
|
+
console.log('Packaging blocked until errors are resolved.');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function padRight(s, n) {
|
|
121
|
+
return s.length >= n ? s : s + ' '.repeat(n - s.length);
|
|
122
|
+
}
|
|
123
|
+
function printHelp() {
|
|
124
|
+
console.log(`
|
|
125
|
+
USAGE
|
|
126
|
+
rhost-testkit lint [options] [file...]
|
|
127
|
+
|
|
128
|
+
OPTIONS
|
|
129
|
+
--json Output diagnostics as JSON (one object per file, newline-delimited)
|
|
130
|
+
--strict Exit 1 on warnings as well as errors
|
|
131
|
+
|
|
132
|
+
SEVERITY
|
|
133
|
+
ERROR Must fix before packaging (blocks mush-build Phase 6)
|
|
134
|
+
WARN Should fix; explain if skipping
|
|
135
|
+
INFO Style suggestion
|
|
136
|
+
|
|
137
|
+
CHECKS
|
|
138
|
+
S1 Bare user input in @pemit/@emit/think
|
|
139
|
+
S2 @create without @lock
|
|
140
|
+
S3 execscript() with user-controlled argument
|
|
141
|
+
S4 User input in @switch case label
|
|
142
|
+
S5 Hardcoded dbref in HELP* attributes
|
|
143
|
+
C1 FN_* accepts %0 without input guard
|
|
144
|
+
C2 CMD_* with no HELP* entry
|
|
145
|
+
C3 Installer missing header/footer markers
|
|
146
|
+
C4 Installer missing UNINSTALL section
|
|
147
|
+
F1 @@ comment line exceeds 78 chars
|
|
148
|
+
F2 Separator line not exactly 78 chars
|
|
149
|
+
F3 Wrong attribute order (Config→UDFs→Commands→Help)
|
|
150
|
+
F4 Comment style mismatch (// or ## instead of @@)
|
|
151
|
+
L1 Attribute body exceeds 7500 chars (approaching Rhost limit)
|
|
152
|
+
I1 Attribute name not uppercase
|
|
153
|
+
I2 No Version field in installer header
|
|
154
|
+
I3 No Requires field in installer header
|
|
155
|
+
|
|
156
|
+
EXAMPLES
|
|
157
|
+
rhost-testkit lint softcode/my-system.mush
|
|
158
|
+
rhost-testkit lint dist/my-system.installer.txt
|
|
159
|
+
rhost-testkit lint --strict softcode/*.mush
|
|
160
|
+
rhost-testkit lint --json dist/my-system.installer.txt
|
|
161
|
+
`.trim());
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mush-format.d.ts","sourceRoot":"","sources":["../../src/cli/mush-format.ts"],"names":[],"mappings":"AAYA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAmBlF"}
|