@typed-sql/cli 1.0.0-beta.1 → 1.0.0-beta.2
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/CHANGELOG.md +6 -0
- package/README.md +5 -0
- package/dist/packages/cli/src/cli.js +55 -5
- package/dist/packages/cli/src/cli.js.map +1 -1
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -11,6 +11,11 @@ pnpm add -D @typed-sql/cli@next typescript@7.0.2
|
|
|
11
11
|
Install one dialect and its application-owned driver, then create `typed-sql.config.ts` as shown in
|
|
12
12
|
the [root guide](https://github.com/Lojhan/typed-sql#configure-the-database-contract).
|
|
13
13
|
|
|
14
|
+
```sh
|
|
15
|
+
pnpm exec typed-sql --help
|
|
16
|
+
pnpm exec typed-sql --version
|
|
17
|
+
```
|
|
18
|
+
|
|
14
19
|
```sh
|
|
15
20
|
# Introspect the configured database and write schema metadata.
|
|
16
21
|
pnpm exec typed-sql generate
|
|
@@ -1,9 +1,49 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
|
-
import { resolve } from "node:path";
|
|
3
|
+
import { dirname, join, parse, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
4
5
|
import { checkFile } from "@typed-sql/compiler";
|
|
5
6
|
import { fromConfig, loadConfig } from "@typed-sql/config";
|
|
6
7
|
import { checkSchemaDrift, generateSchemaPackage, loadGeneratedSchemaSnapshot, } from "@typed-sql/schema";
|
|
8
|
+
const commands = new Set(["check", "generate", "drift"]);
|
|
9
|
+
async function packageVersion() {
|
|
10
|
+
let directory = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const root = parse(directory).root;
|
|
12
|
+
while (directory !== root) {
|
|
13
|
+
try {
|
|
14
|
+
const manifest = JSON.parse(await readFile(join(directory, "package.json"), "utf8"));
|
|
15
|
+
if (manifest.name === "@typed-sql/cli" && manifest.version !== undefined)
|
|
16
|
+
return manifest.version;
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
if (!(error instanceof Error && "code" in error && error.code === "ENOENT"))
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
directory = dirname(directory);
|
|
23
|
+
}
|
|
24
|
+
throw new Error("Could not determine the @typed-sql/cli version");
|
|
25
|
+
}
|
|
26
|
+
function help(version) {
|
|
27
|
+
return `typed-sql ${version}
|
|
28
|
+
|
|
29
|
+
Usage:
|
|
30
|
+
typed-sql <command> [options]
|
|
31
|
+
|
|
32
|
+
Commands:
|
|
33
|
+
check Infer SQL result types and verify them with TypeScript 7
|
|
34
|
+
generate Introspect or load a schema snapshot and generate the typed contract
|
|
35
|
+
drift Compare the generated contract with the live database catalog
|
|
36
|
+
|
|
37
|
+
Global options:
|
|
38
|
+
-h, --help Show this help
|
|
39
|
+
-v, --version Show the installed CLI version
|
|
40
|
+
|
|
41
|
+
Examples:
|
|
42
|
+
typed-sql check --config typed-sql.config.ts --file src/query.ts --project tsconfig.json
|
|
43
|
+
typed-sql generate --config typed-sql.config.ts --out generated/db
|
|
44
|
+
typed-sql drift --config typed-sql.config.ts
|
|
45
|
+
`;
|
|
46
|
+
}
|
|
7
47
|
function parseArguments(args) {
|
|
8
48
|
const command = args[0];
|
|
9
49
|
const options = {};
|
|
@@ -34,7 +74,20 @@ async function readSnapshot(path, validate) {
|
|
|
34
74
|
return validate(JSON.parse(await readFile(path, "utf8")));
|
|
35
75
|
}
|
|
36
76
|
async function main() {
|
|
37
|
-
const
|
|
77
|
+
const args = process.argv.slice(2);
|
|
78
|
+
const version = await packageVersion();
|
|
79
|
+
if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
|
|
80
|
+
process.stdout.write(help(version));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (args.includes("--version") || args.includes("-v")) {
|
|
84
|
+
process.stdout.write(`${version}\n`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const parsed = parseArguments(args);
|
|
88
|
+
if (parsed.command === undefined || !commands.has(parsed.command)) {
|
|
89
|
+
throw new Error(`Unknown command ${parsed.command ?? "<none>"}. Run typed-sql --help for usage.`);
|
|
90
|
+
}
|
|
38
91
|
const loaded = await loadConfig({ ...(parsed.options.config === undefined ? {} : { file: parsed.options.config }) });
|
|
39
92
|
const config = loaded.config;
|
|
40
93
|
const dialect = config.dialect;
|
|
@@ -87,9 +140,6 @@ async function main() {
|
|
|
87
140
|
process.stdout.write("No schema drift detected\n");
|
|
88
141
|
return;
|
|
89
142
|
}
|
|
90
|
-
process.stdout.write("typed-sql check --config typed-sql.config.ts --file <query.ts> [--project tsconfig.json]\n");
|
|
91
|
-
process.stdout.write("typed-sql generate --config typed-sql.config.ts [--out <directory>]\n");
|
|
92
|
-
process.stdout.write("typed-sql drift --config typed-sql.config.ts\n");
|
|
93
143
|
}
|
|
94
144
|
main().catch((error) => {
|
|
95
145
|
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typed-sql/cli",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.2",
|
|
4
4
|
"description": "Config-driven typed-sql generation, checking, and schema drift CLI.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Lojhan",
|
|
@@ -33,8 +33,11 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@typed-sql/compiler": "1.0.0-beta.1",
|
|
36
|
-
"@typed-sql/config": "1.0.0-beta.1",
|
|
37
36
|
"@typed-sql/core": "1.0.0-beta.1",
|
|
37
|
+
"@typed-sql/config": "1.0.0-beta.1",
|
|
38
38
|
"@typed-sql/schema": "1.0.0-beta.1"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"test": "poku test --reporter=compact --enforce"
|
|
39
42
|
}
|
|
40
43
|
}
|