visigraph 0.0.2 → 0.0.3
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/commands/validate.d.ts +3 -0
- package/dist/commands/validate.js +34 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/exit.d.ts +8 -0
- package/dist/exit.js +9 -0
- package/dist/exit.js.map +1 -0
- package/dist/main.js +28 -28
- package/dist/main.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { loadModel, resolve } from "@visigraph/core";
|
|
2
|
+
import { EXIT } from "../exit.js";
|
|
3
|
+
export function registerValidate(program) {
|
|
4
|
+
program
|
|
5
|
+
.command("validate")
|
|
6
|
+
.argument("<model>", "path to a model file (YAML)")
|
|
7
|
+
.description("check a model and every model it links or requires; every identifier must resolve")
|
|
8
|
+
.addHelpText("after", `
|
|
9
|
+
Exit codes:
|
|
10
|
+
0 the model is valid
|
|
11
|
+
1 the model has problems; each is printed as file:path: message
|
|
12
|
+
2 the file could not be read`)
|
|
13
|
+
.action(async (file) => {
|
|
14
|
+
process.exitCode = await validate(file);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export async function validate(file) {
|
|
18
|
+
const parsed = await loadModel(file);
|
|
19
|
+
let diagnostics = parsed.diagnostics;
|
|
20
|
+
if (parsed.model) {
|
|
21
|
+
diagnostics = diagnostics.concat(resolve(parsed.model, { file }).diagnostics);
|
|
22
|
+
}
|
|
23
|
+
for (const d of diagnostics) {
|
|
24
|
+
const where = d.path ? `${d.file ?? file}:${d.path}` : (d.file ?? file);
|
|
25
|
+
console.error(`${d.severity}: ${where}: ${d.message}`);
|
|
26
|
+
}
|
|
27
|
+
if (diagnostics.length > 0) {
|
|
28
|
+
console.error(`${diagnostics.length} error${diagnostics.length === 1 ? "" : "s"}`);
|
|
29
|
+
return parsed.model ? EXIT.invalid : EXIT.usage;
|
|
30
|
+
}
|
|
31
|
+
console.log(`${file}: ok`);
|
|
32
|
+
return EXIT.ok;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAmB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;SAClD,WAAW,CAAC,mFAAmF,CAAC;SAChG,WAAW,CACV,OAAO,EACP;;;;gCAI0B,CAC3B;SACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,OAAO,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,WAAW,GAAiB,MAAM,CAAC,WAAW,CAAC;IACnD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACnF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC"}
|
package/dist/exit.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Exit codes shared by every command. */
|
|
2
|
+
export declare const EXIT: {
|
|
3
|
+
readonly ok: 0;
|
|
4
|
+
/** The model has problems (dangling references, bad shape). */
|
|
5
|
+
readonly invalid: 1;
|
|
6
|
+
/** Bad usage, unreadable file, or an unexpected failure. */
|
|
7
|
+
readonly usage: 2;
|
|
8
|
+
};
|
package/dist/exit.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Exit codes shared by every command. */
|
|
2
|
+
export const EXIT = {
|
|
3
|
+
ok: 0,
|
|
4
|
+
/** The model has problems (dangling references, bad shape). */
|
|
5
|
+
invalid: 1,
|
|
6
|
+
/** Bad usage, unreadable file, or an unexpected failure. */
|
|
7
|
+
usage: 2,
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=exit.js.map
|
package/dist/exit.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit.js","sourceRoot":"","sources":["../src/exit.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,CAAC;IACL,+DAA+D;IAC/D,OAAO,EAAE,CAAC;IACV,4DAA4D;IAC5D,KAAK,EAAE,CAAC;CACA,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
import { Command, CommanderError } from "commander";
|
|
3
|
+
import { registerValidate } from "./commands/validate.js";
|
|
4
|
+
import { EXIT } from "./exit.js";
|
|
5
|
+
import { DESCRIPTION, VERSION } from "./version.js";
|
|
6
|
+
const program = new Command();
|
|
7
|
+
program
|
|
8
|
+
.name("visigraph")
|
|
9
|
+
.description(DESCRIPTION)
|
|
10
|
+
.version(VERSION, "-v, --version", "print the version and exit")
|
|
11
|
+
.helpOption("-h, --help", "print help and exit")
|
|
12
|
+
.helpCommand("help [command]", "print help for a command")
|
|
13
|
+
.showHelpAfterError("(run with --help for usage)")
|
|
14
|
+
.exitOverride();
|
|
15
|
+
registerValidate(program);
|
|
16
|
+
try {
|
|
17
|
+
if (process.argv.length <= 2) {
|
|
18
|
+
program.outputHelp();
|
|
19
|
+
process.exitCode = EXIT.usage;
|
|
14
20
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (parsed.model) {
|
|
18
|
-
diagnostics = diagnostics.concat(resolve(parsed.model, { file }).diagnostics);
|
|
21
|
+
else {
|
|
22
|
+
await program.parseAsync(process.argv);
|
|
19
23
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
if (e instanceof CommanderError) {
|
|
27
|
+
// --help and --version exit 0; every other commander error is a usage error.
|
|
28
|
+
process.exitCode = e.exitCode === 0 ? EXIT.ok : EXIT.usage;
|
|
23
29
|
}
|
|
24
|
-
|
|
25
|
-
console.error(
|
|
26
|
-
|
|
30
|
+
else {
|
|
31
|
+
console.error(`error: ${e instanceof Error ? e.message : String(e)}`);
|
|
32
|
+
process.exitCode = EXIT.usage;
|
|
27
33
|
}
|
|
28
|
-
console.log(`${file}: ok`);
|
|
29
|
-
return 0;
|
|
30
34
|
}
|
|
31
|
-
main(process.argv.slice(2)).then((code) => process.exit(code), (e) => {
|
|
32
|
-
console.error(`error: ${e instanceof Error ? e.message : String(e)}`);
|
|
33
|
-
process.exit(2);
|
|
34
|
-
});
|
|
35
35
|
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,WAAW,CAAC;KACxB,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC;KAC/D,UAAU,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC/C,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;KACzD,kBAAkB,CAAC,6BAA6B,CAAC;KACjD,YAAY,EAAE,CAAC;AAElB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE1B,IAAI,CAAC;IACH,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAAC,OAAO,CAAU,EAAE,CAAC;IACpB,IAAI,CAAC,YAAY,cAAc,EAAE,CAAC;QAChC,6EAA6E;QAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,CAAC;AACH,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAA6C,CAAC;AAEnF,MAAM,CAAC,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAW,GAAG,CAAC,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "visigraph",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "VisiGraph CLI \u2014 validate architecture models and play journeys through them",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
},
|
|
20
20
|
"homepage": "https://github.com/textologylabs/visigraph",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@visigraph/core": "0.0.
|
|
22
|
+
"@visigraph/core": "0.0.3",
|
|
23
|
+
"commander": "^13.1.0"
|
|
23
24
|
},
|
|
24
25
|
"bugs": {
|
|
25
26
|
"url": "https://github.com/textologylabs/visigraph/issues"
|