@atcute/lex-cli 2.7.0 → 2.8.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/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +6 -2
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +60 -27
- package/dist/commands/generate.js.map +1 -1
- package/dist/config.d.ts +30 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -12
- package/dist/config.js.map +1 -1
- package/dist/pull-sources/git.d.ts.map +1 -1
- package/dist/pull-sources/git.js +61 -58
- package/dist/pull-sources/git.js.map +1 -1
- package/package.json +4 -4
- package/src/commands/export.ts +7 -2
- package/src/commands/generate.ts +71 -29
- package/src/config.ts +77 -23
- package/src/pull-sources/git.ts +64 -63
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASvD,eAAO,MAAM,mBAAmB;;;;mFAY/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAgCnE;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAgB,aAAa,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASvD,eAAO,MAAM,mBAAmB;;;;mFAY/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAgCnE;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAgB,aAAa,KAAG,OAAO,CAAC,IAAI,CAqCjE,CAAC"}
|
package/dist/commands/export.js
CHANGED
|
@@ -42,8 +42,12 @@ const writeLexicon = async (outdir, nsid, doc, formatter) => {
|
|
|
42
42
|
export const runExport = async (args) => {
|
|
43
43
|
const config = await loadConfig(args.config);
|
|
44
44
|
const exportConfig = ensureExportConfig(config);
|
|
45
|
-
// use export.files if specified, otherwise fall back to
|
|
46
|
-
const files = exportConfig.files ?? config.files;
|
|
45
|
+
// use export.files if specified, otherwise fall back to generate.files
|
|
46
|
+
const files = exportConfig.files ?? config.generate?.files;
|
|
47
|
+
if (!files || files.length === 0) {
|
|
48
|
+
console.error(pc.bold(pc.red(`export.files or generate.files must be specified`)));
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
47
51
|
const outdir = path.resolve(config.root, exportConfig.outdir);
|
|
48
52
|
const formatter = await createFormatter(config.formatter, config.root);
|
|
49
53
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAmB,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,UAAU,EAA4C,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CACzC,QAAQ,EACR,KAAK,CACJ,MAAM,CAAC;IACN,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;CACxB,CAAC,EACF,aAAa,CACb,EACD;IACC,KAAK,EAAE,OAAO,CAAA,wCAAwC;IACtD,WAAW,EAAE,OAAO,CAAA,uGAAuG;CAC3H,CACD,CAAC;AAIF;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,CAAC,MAAwB,EAAgB,EAAE;IACrE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EACzB,MAAc,EACd,IAAY,EACZ,GAAe,EACf,SAAoB,EACJ,EAAE;IAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAE1E,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAmB,EAAiB,EAAE;IACrE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEhD,
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA6HvD,eAAO,MAAM,qBAAqB;;;;mFAYjC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAyBvE;;;GAGG;AACH,eAAO,MAAM,WAAW,SAAgB,eAAe,KAAG,OAAO,CAAC,IAAI,CA8CrE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as module from 'node:module';
|
|
2
3
|
import * as path from 'node:path';
|
|
3
4
|
import { merge, object } from '@optique/core/constructs';
|
|
4
5
|
import { message } from '@optique/core/message';
|
|
@@ -16,36 +17,45 @@ import { sharedOptions } from '../shared-options.js';
|
|
|
16
17
|
*/
|
|
17
18
|
const resolveImportsToMappings = async (imports, configDirname) => {
|
|
18
19
|
const mappings = [];
|
|
20
|
+
const require = module.createRequire(path.join(configDirname, '__lex_cli__.js'));
|
|
19
21
|
for (const packageName of imports) {
|
|
20
|
-
// walk up from config directory to find package in node_modules
|
|
21
22
|
let packageJson;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
try {
|
|
24
|
+
const entryPath = require.resolve(packageName);
|
|
25
|
+
let currentDir = path.dirname(entryPath);
|
|
26
|
+
while (true) {
|
|
27
|
+
const candidatePath = path.join(currentDir, 'package.json');
|
|
28
|
+
try {
|
|
29
|
+
const content = await fs.readFile(candidatePath, 'utf8');
|
|
30
|
+
packageJson = JSON.parse(content);
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if (err.code !== 'ENOENT') {
|
|
35
|
+
console.error(pc.bold(pc.red(`failed to read package.json for "${packageName}":`)));
|
|
36
|
+
console.error(err);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
if (currentDir === configDirname) {
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
const parentDir = path.dirname(currentDir);
|
|
44
|
+
if (parentDir === currentDir) {
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
currentDir = parentDir;
|
|
41
48
|
}
|
|
42
49
|
}
|
|
43
|
-
|
|
50
|
+
catch (err) {
|
|
44
51
|
console.error(pc.bold(pc.red(`failed to resolve package "${packageName}"`)));
|
|
45
|
-
console.error(
|
|
52
|
+
console.error(err);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
if (!packageJson) {
|
|
56
|
+
console.error(pc.bold(pc.red(`failed to locate package.json for "${packageName}"`)));
|
|
46
57
|
process.exit(1);
|
|
47
58
|
}
|
|
48
|
-
// validate package.json
|
|
49
59
|
const result = packageJsonSchema.try(packageJson, { mode: 'passthrough' });
|
|
50
60
|
if (!result.ok) {
|
|
51
61
|
console.error(pc.bold(pc.red(`invalid atcute:lexicons in "${packageName}":`)));
|
|
@@ -104,27 +114,50 @@ export const generateCommandSchema = command('generate', merge(object({
|
|
|
104
114
|
brief: message `generate type definitions from lexicon documents`,
|
|
105
115
|
description: message `reads lexicon documents from the configured files and generates TypeScript type definitions and runtime validators.`,
|
|
106
116
|
});
|
|
117
|
+
const ensureGenerateConfig = (config) => {
|
|
118
|
+
const generate = config.generate;
|
|
119
|
+
if (!generate) {
|
|
120
|
+
console.error(pc.bold(pc.red(`generate configuration missing`)));
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
const { outdir, files } = generate;
|
|
124
|
+
if (!outdir) {
|
|
125
|
+
console.error(pc.bold(pc.red(`generate.outdir is required`)));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
if (!files || files.length === 0) {
|
|
129
|
+
console.error(pc.bold(pc.red(`generate.files is required`)));
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
return { ...generate, outdir, files };
|
|
133
|
+
};
|
|
107
134
|
/**
|
|
108
135
|
* runs the generate command to create type definitions from lexicon documents
|
|
109
136
|
* @param args parsed command arguments
|
|
110
137
|
*/
|
|
111
138
|
export const runGenerate = async (args) => {
|
|
112
139
|
const config = await loadConfig(args.config);
|
|
140
|
+
const generateConfig = ensureGenerateConfig(config);
|
|
113
141
|
// resolve imports to mappings
|
|
114
|
-
const importMappings =
|
|
115
|
-
|
|
142
|
+
const importMappings = generateConfig.imports
|
|
143
|
+
? await resolveImportsToMappings(generateConfig.imports, config.root)
|
|
144
|
+
: [];
|
|
145
|
+
const allMappings = [...importMappings, ...(generateConfig.mappings ?? [])];
|
|
116
146
|
// load lexicons from files
|
|
117
|
-
const loaded = await loadLexicons(
|
|
147
|
+
const loaded = await loadLexicons(generateConfig.files, config.root);
|
|
118
148
|
const documents = loaded.map((l) => l.doc);
|
|
119
|
-
const outdir = path.join(config.root,
|
|
149
|
+
const outdir = path.join(config.root, generateConfig.outdir);
|
|
120
150
|
const formatter = await createFormatter(config.formatter, config.root);
|
|
151
|
+
if (generateConfig.clean) {
|
|
152
|
+
await fs.rm(outdir, { recursive: true, force: true });
|
|
153
|
+
}
|
|
121
154
|
try {
|
|
122
155
|
const pending = [];
|
|
123
156
|
for (const file of generateLexiconApi({
|
|
124
157
|
documents: documents,
|
|
125
158
|
mappings: allMappings,
|
|
126
159
|
modules: {
|
|
127
|
-
importSuffix:
|
|
160
|
+
importSuffix: generateConfig.modules?.importSuffix ?? '.js',
|
|
128
161
|
},
|
|
129
162
|
})) {
|
|
130
163
|
const filename = path.join(outdir, file.filename);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAmB,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAsB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -76,6 +76,16 @@ declare const formatterConfigSchema: v.UnionType<[v.ObjectType<{
|
|
|
76
76
|
type: v.Type<"lsp">;
|
|
77
77
|
command: v.Type<string>;
|
|
78
78
|
}, undefined>]>;
|
|
79
|
+
declare const generateConfigSchema: v.ObjectType<{
|
|
80
|
+
outdir: v.Optional<string>;
|
|
81
|
+
files: v.Optional<string[]>;
|
|
82
|
+
imports: v.Optional<string[]>;
|
|
83
|
+
mappings: v.Optional<ImportMapping[]>;
|
|
84
|
+
modules: v.Optional<{
|
|
85
|
+
importSuffix?: string | undefined;
|
|
86
|
+
}>;
|
|
87
|
+
clean: v.Optional<boolean>;
|
|
88
|
+
}, undefined>;
|
|
79
89
|
export type GitSourceConfig = v.Infer<typeof gitSourceConfigSchema>;
|
|
80
90
|
export type AtprotoNsidsSourceConfig = v.Infer<typeof atprotoNsidsSourceConfigSchema>;
|
|
81
91
|
export type AtprotoAuthoritySourceConfig = v.Infer<typeof atprotoAuthoritySourceConfigSchema>;
|
|
@@ -84,11 +94,17 @@ export type SourceConfig = v.Infer<typeof sourceConfigSchema>;
|
|
|
84
94
|
export type PullConfig = v.Infer<typeof pullConfigSchema>;
|
|
85
95
|
export type ExportConfig = v.Infer<typeof exportConfigSchema>;
|
|
86
96
|
export type FormatterConfig = v.Infer<typeof formatterConfigSchema>;
|
|
97
|
+
export type GenerateConfig = v.Infer<typeof generateConfigSchema>;
|
|
87
98
|
export declare const lexiconConfigSchema: v.ObjectType<{
|
|
88
|
-
outdir
|
|
89
|
-
|
|
99
|
+
/** @deprecated moved to `generate.outdir` */
|
|
100
|
+
outdir: v.Optional<string>;
|
|
101
|
+
/** @deprecated moved to `generate.files` */
|
|
102
|
+
files: v.Optional<string[]>;
|
|
103
|
+
/** @deprecated moved to `generate.imports` */
|
|
90
104
|
imports: v.Optional<string[]>;
|
|
105
|
+
/** @deprecated moved to `generate.mappings` */
|
|
91
106
|
mappings: v.Optional<ImportMapping[]>;
|
|
107
|
+
/** @deprecated moved to `generate.modules` */
|
|
92
108
|
modules: v.Optional<{
|
|
93
109
|
importSuffix?: string | undefined;
|
|
94
110
|
}>;
|
|
@@ -102,6 +118,16 @@ export declare const lexiconConfigSchema: v.ObjectType<{
|
|
|
102
118
|
type: "lsp";
|
|
103
119
|
command: string;
|
|
104
120
|
}>;
|
|
121
|
+
generate: v.Optional<{
|
|
122
|
+
outdir?: string | undefined;
|
|
123
|
+
files?: string[] | undefined;
|
|
124
|
+
imports?: string[] | undefined;
|
|
125
|
+
mappings?: ImportMapping[] | undefined;
|
|
126
|
+
modules?: {
|
|
127
|
+
importSuffix?: string | undefined;
|
|
128
|
+
} | undefined;
|
|
129
|
+
clean?: boolean | undefined;
|
|
130
|
+
}>;
|
|
105
131
|
pull: v.Optional<{
|
|
106
132
|
outdir: string;
|
|
107
133
|
clean?: boolean | undefined;
|
|
@@ -128,9 +154,9 @@ export declare const lexiconConfigSchema: v.ObjectType<{
|
|
|
128
154
|
}>;
|
|
129
155
|
}, undefined>;
|
|
130
156
|
export type LexiconConfig = v.Infer<typeof lexiconConfigSchema>;
|
|
131
|
-
export
|
|
157
|
+
export type NormalizedConfig = Omit<LexiconConfig, 'outdir' | 'files' | 'imports' | 'mappings' | 'modules'> & {
|
|
132
158
|
root: string;
|
|
133
|
-
}
|
|
159
|
+
};
|
|
134
160
|
export declare const loadConfig: (configPath?: string) => Promise<NormalizedConfig>;
|
|
135
161
|
export {};
|
|
136
162
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,QAAA,MAAM,qBAAqB;;;;;aAUzB,CAAC;AAEH,QAAA,MAAM,8BAA8B;;;;aAMlC,CAAC;AAEH,QAAA,MAAM,kCAAkC;;;;;aAatC,CAAC;AAEH,QAAA,MAAM,yBAAyB;;;;;;;;;eAA8E,CAAC;AAE9G,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;iBAA4D,CAAC;AAErF,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;aAMpB,CAAC;AAEH,QAAA,MAAM,kBAAkB;;;;aAItB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;eAc1B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,QAAA,MAAM,qBAAqB;;;;;aAUzB,CAAC;AAEH,QAAA,MAAM,8BAA8B;;;;aAMlC,CAAC;AAEH,QAAA,MAAM,kCAAkC;;;;;aAatC,CAAC;AAEH,QAAA,MAAM,yBAAyB;;;;;;;;;eAA8E,CAAC;AAE9G,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;iBAA4D,CAAC;AAErF,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;aAMpB,CAAC;AAEH,QAAA,MAAM,kBAAkB;;;;aAItB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;eAc1B,CAAC;AAkDF,QAAA,MAAM,oBAAoB;;;;;;;;;aAaxB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAC9F,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,mBAAmB;IAC/B,6CAA6C;;IAK7C,4CAA4C;;IAK5C,8CAA8C;;IAE9C,+CAA+C;;IAE/C,8CAA8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAM7C,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAClC,aAAa,EACb,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CACvD,GAAG;IACH,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,UAAU,gBAAuB,MAAM,KAAG,OAAO,CAAC,gBAAgB,CA8E9E,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -97,23 +97,47 @@ const importMappingSchema = v.object({
|
|
|
97
97
|
.assert((patterns) => patterns.length > 0, `nsid requires at least one pattern`),
|
|
98
98
|
imports: mappingImports,
|
|
99
99
|
});
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
const modulesConfigSchema = v
|
|
101
|
+
.object({
|
|
102
|
+
importSuffix: v
|
|
103
|
+
.string()
|
|
104
|
+
.assert((value) => value.length > 0, `must not be empty`)
|
|
105
|
+
.optional(),
|
|
106
|
+
})
|
|
107
|
+
.partial();
|
|
108
|
+
const generateConfigSchema = v.object({
|
|
109
|
+
outdir: v
|
|
110
|
+
.string()
|
|
111
|
+
.assert((value) => value.length > 0, `must not be empty`)
|
|
112
|
+
.optional(),
|
|
102
113
|
files: v
|
|
103
114
|
.array(v.string().assert((value) => value.length > 0, `must not be empty`))
|
|
104
|
-
.assert((value) => value.length > 0, `must include at least one glob pattern`)
|
|
115
|
+
.assert((value) => value.length > 0, `must include at least one glob pattern`)
|
|
116
|
+
.optional(),
|
|
105
117
|
imports: v.array(v.string().assert((value) => value.length > 0, `must not be empty`)).optional(),
|
|
106
118
|
mappings: v.array(importMappingSchema).optional(),
|
|
107
|
-
modules:
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
.
|
|
119
|
+
modules: modulesConfigSchema.optional(),
|
|
120
|
+
clean: v.boolean().optional(),
|
|
121
|
+
});
|
|
122
|
+
export const lexiconConfigSchema = v.object({
|
|
123
|
+
/** @deprecated moved to `generate.outdir` */
|
|
124
|
+
outdir: v
|
|
125
|
+
.string()
|
|
126
|
+
.assert((value) => value.length > 0, `must not be empty`)
|
|
127
|
+
.optional(),
|
|
128
|
+
/** @deprecated moved to `generate.files` */
|
|
129
|
+
files: v
|
|
130
|
+
.array(v.string().assert((value) => value.length > 0, `must not be empty`))
|
|
131
|
+
.assert((value) => value.length > 0, `must include at least one glob pattern`)
|
|
115
132
|
.optional(),
|
|
133
|
+
/** @deprecated moved to `generate.imports` */
|
|
134
|
+
imports: v.array(v.string().assert((value) => value.length > 0, `must not be empty`)).optional(),
|
|
135
|
+
/** @deprecated moved to `generate.mappings` */
|
|
136
|
+
mappings: v.array(importMappingSchema).optional(),
|
|
137
|
+
/** @deprecated moved to `generate.modules` */
|
|
138
|
+
modules: modulesConfigSchema.optional(),
|
|
116
139
|
formatter: formatterConfigSchema.optional(() => ({ type: 'prettier' })),
|
|
140
|
+
generate: generateConfigSchema.optional(),
|
|
117
141
|
pull: pullConfigSchema.optional(),
|
|
118
142
|
export: exportConfigSchema.optional(),
|
|
119
143
|
});
|
|
@@ -163,6 +187,26 @@ export const loadConfig = async (configPath) => {
|
|
|
163
187
|
}
|
|
164
188
|
process.exit(1);
|
|
165
189
|
}
|
|
166
|
-
|
|
190
|
+
const { outdir, files, imports, mappings, modules, generate, ...rest } = configResult.value;
|
|
191
|
+
// back-compat: top-level generate options were moved into `generate.*`. merge the legacy
|
|
192
|
+
// top-level values into `generate`, with nested `generate.*` winning on conflicts. the result
|
|
193
|
+
// is only present if at least one generate-related option was provided anywhere.
|
|
194
|
+
const hasLegacyTopLevel = outdir !== undefined ||
|
|
195
|
+
files !== undefined ||
|
|
196
|
+
imports !== undefined ||
|
|
197
|
+
mappings !== undefined ||
|
|
198
|
+
modules !== undefined;
|
|
199
|
+
let normalizedGenerate;
|
|
200
|
+
if (generate || hasLegacyTopLevel) {
|
|
201
|
+
normalizedGenerate = {
|
|
202
|
+
outdir: generate?.outdir ?? outdir,
|
|
203
|
+
files: generate?.files ?? files,
|
|
204
|
+
imports: generate?.imports ?? imports,
|
|
205
|
+
mappings: generate?.mappings ?? mappings,
|
|
206
|
+
modules: generate?.modules ?? modules,
|
|
207
|
+
clean: generate?.clean,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return { ...rest, generate: normalizedGenerate, root: configDirname };
|
|
167
211
|
};
|
|
168
212
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/pull-sources/git.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAiB,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WACjB,eAAe,oBACL,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC,KAC5D,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/pull-sources/git.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAiB,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WACjB,eAAe,oBACL,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC,KAC5D,OAAO,CAAC,UAAU,CAmFpB,CAAC"}
|
package/dist/pull-sources/git.js
CHANGED
|
@@ -13,68 +13,71 @@ export const pullGitSource = async (source, parseLexiconFile) => {
|
|
|
13
13
|
const tempParent = await fs.mkdtemp(path.join(os.tmpdir(), 'lex-cli-pull-'));
|
|
14
14
|
const cloneDir = path.join(tempParent, 'repo');
|
|
15
15
|
try {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
catch (err) {
|
|
28
|
-
if (err instanceof GitError) {
|
|
29
|
-
console.error(pc.bold(pc.red(`git clone failed for ${source.remote}:`)));
|
|
30
|
-
console.error(err.stderr || err.message);
|
|
31
|
-
process.exit(1);
|
|
16
|
+
try {
|
|
17
|
+
await runGit([
|
|
18
|
+
'clone',
|
|
19
|
+
'--filter=blob:none',
|
|
20
|
+
'--depth',
|
|
21
|
+
'1',
|
|
22
|
+
'--sparse',
|
|
23
|
+
...(source.ref ? ['--branch', source.ref, '--single-branch'] : []),
|
|
24
|
+
source.remote,
|
|
25
|
+
cloneDir,
|
|
26
|
+
], { timeoutMs: 60_000 });
|
|
32
27
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
catch (err) {
|
|
41
|
-
if (err instanceof GitError) {
|
|
42
|
-
console.error(pc.bold(pc.red(`git sparse-checkout failed for ${source.remote}:`)));
|
|
43
|
-
console.error(err.stderr || err.message);
|
|
44
|
-
process.exit(1);
|
|
28
|
+
catch (err) {
|
|
29
|
+
if (err instanceof GitError) {
|
|
30
|
+
console.error(pc.bold(pc.red(`git clone failed for ${source.remote}:`)));
|
|
31
|
+
console.error(err.stderr || err.message);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
throw err;
|
|
45
35
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const absolute = path.join(cloneDir, filename);
|
|
51
|
-
const stat = await fs.stat(absolute);
|
|
52
|
-
if (!stat.isFile()) {
|
|
53
|
-
continue;
|
|
36
|
+
try {
|
|
37
|
+
await runGit(['-C', cloneDir, 'sparse-checkout', 'set', '--no-cone', ...source.pattern], {
|
|
38
|
+
timeoutMs: 30_000,
|
|
39
|
+
});
|
|
54
40
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (err instanceof GitError) {
|
|
43
|
+
console.error(pc.bold(pc.red(`git sparse-checkout failed for ${source.remote}:`)));
|
|
44
|
+
console.error(err.stderr || err.message);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
const pulled = new Map();
|
|
50
|
+
for await (const filename of fs.glob(source.pattern, { cwd: cloneDir })) {
|
|
51
|
+
const absolute = path.join(cloneDir, filename);
|
|
52
|
+
const stat = await fs.stat(absolute);
|
|
53
|
+
if (!stat.isFile()) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const location = {
|
|
57
|
+
absolutePath: absolute,
|
|
58
|
+
relativePath: filename,
|
|
59
|
+
sourceDescription: source.remote,
|
|
60
|
+
};
|
|
61
|
+
const doc = await parseLexiconFile(location);
|
|
62
|
+
pulled.set(doc.id, { nsid: doc.id, doc, location });
|
|
74
63
|
}
|
|
75
|
-
|
|
64
|
+
let rev;
|
|
65
|
+
try {
|
|
66
|
+
const result = await runGit(['-C', cloneDir, 'rev-parse', 'HEAD'], { timeoutMs: 10_000 });
|
|
67
|
+
rev = result.stdout.trim();
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
if (err instanceof GitError) {
|
|
71
|
+
console.error(pc.bold(pc.red(`git rev-parse failed for ${source.remote}:`)));
|
|
72
|
+
console.error(err.stderr || err.message);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
return { pulled, rev };
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
await fs.rm(tempParent, { recursive: true, force: true });
|
|
76
81
|
}
|
|
77
|
-
await fs.rm(tempParent, { recursive: true, force: true });
|
|
78
|
-
return { pulled, rev };
|
|
79
82
|
};
|
|
80
83
|
//# sourceMappingURL=git.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/pull-sources/git.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAI7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EACjC,MAAuB,EACvB,gBAA8D,EACxC,EAAE;IACxB,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAE7E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,CAAC;QACJ,MAAM,MAAM,CACX;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/pull-sources/git.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atcute/lex-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "cli tool to generate type definitions for atcute",
|
|
5
5
|
"license": "0BSD",
|
|
6
6
|
"repository": {
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
"@optique/core": "^0.10.7",
|
|
29
29
|
"@optique/run": "^0.10.7",
|
|
30
30
|
"picocolors": "^1.1.1",
|
|
31
|
-
"prettier": "^3.8.
|
|
31
|
+
"prettier": "^3.8.2",
|
|
32
32
|
"@atcute/identity": "^1.1.4",
|
|
33
33
|
"@atcute/identity-resolver": "^1.2.2",
|
|
34
|
-
"@atcute/lexicon-doc": "^2.2.0",
|
|
35
34
|
"@atcute/lexicon-resolver": "^0.1.6",
|
|
35
|
+
"@atcute/lexicon-doc": "^2.2.0",
|
|
36
36
|
"@atcute/lexicons": "^1.3.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@types/node": "^25.
|
|
39
|
+
"@types/node": "^25.6.0",
|
|
40
40
|
"tschema": "^3.2.0",
|
|
41
41
|
"@atcute/uint8array": "^1.1.1"
|
|
42
42
|
},
|
package/src/commands/export.ts
CHANGED
|
@@ -68,8 +68,13 @@ export const runExport = async (args: ExportCommand): Promise<void> => {
|
|
|
68
68
|
const config = await loadConfig(args.config);
|
|
69
69
|
const exportConfig = ensureExportConfig(config);
|
|
70
70
|
|
|
71
|
-
// use export.files if specified, otherwise fall back to
|
|
72
|
-
const files = exportConfig.files ?? config.files;
|
|
71
|
+
// use export.files if specified, otherwise fall back to generate.files
|
|
72
|
+
const files = exportConfig.files ?? config.generate?.files;
|
|
73
|
+
if (!files || files.length === 0) {
|
|
74
|
+
console.error(pc.bold(pc.red(`export.files or generate.files must be specified`)));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
|
|
73
78
|
const outdir = path.resolve(config.root, exportConfig.outdir);
|
|
74
79
|
const formatter = await createFormatter(config.formatter, config.root);
|
|
75
80
|
|
package/src/commands/generate.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as module from 'node:module';
|
|
2
3
|
import * as path from 'node:path';
|
|
3
4
|
|
|
4
5
|
import { merge, object } from '@optique/core/constructs';
|
|
@@ -8,7 +9,7 @@ import { command, constant } from '@optique/core/primitives';
|
|
|
8
9
|
import pc from 'picocolors';
|
|
9
10
|
|
|
10
11
|
import { generateLexiconApi, type ImportMapping } from '../codegen.ts';
|
|
11
|
-
import { loadConfig } from '../config.ts';
|
|
12
|
+
import { loadConfig, type GenerateConfig, type NormalizedConfig } from '../config.ts';
|
|
12
13
|
import { createFormatter } from '../formatter.ts';
|
|
13
14
|
import { loadLexicons } from '../lexicon-loader.ts';
|
|
14
15
|
import { packageJsonSchema } from '../lexicon-metadata.ts';
|
|
@@ -22,40 +23,51 @@ const resolveImportsToMappings = async (
|
|
|
22
23
|
configDirname: string,
|
|
23
24
|
): Promise<ImportMapping[]> => {
|
|
24
25
|
const mappings: ImportMapping[] = [];
|
|
26
|
+
const require = module.createRequire(path.join(configDirname, '__lex_cli__.js'));
|
|
25
27
|
|
|
26
28
|
for (const packageName of imports) {
|
|
27
|
-
// walk up from config directory to find package in node_modules
|
|
28
29
|
let packageJson: unknown;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
const entryPath = require.resolve(packageName);
|
|
33
|
+
|
|
34
|
+
let currentDir = path.dirname(entryPath);
|
|
35
|
+
while (true) {
|
|
36
|
+
const candidatePath = path.join(currentDir, 'package.json');
|
|
37
|
+
try {
|
|
38
|
+
const content = await fs.readFile(candidatePath, 'utf8');
|
|
39
|
+
packageJson = JSON.parse(content);
|
|
40
|
+
break;
|
|
41
|
+
} catch (err: any) {
|
|
42
|
+
if (err.code !== 'ENOENT') {
|
|
43
|
+
console.error(pc.bold(pc.red(`failed to read package.json for "${packageName}":`)));
|
|
44
|
+
console.error(err);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (currentDir === configDirname) {
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const parentDir = path.dirname(currentDir);
|
|
54
|
+
if (parentDir === currentDir) {
|
|
55
|
+
break;
|
|
45
56
|
}
|
|
46
57
|
|
|
47
|
-
|
|
48
|
-
currentDir = path.dirname(currentDir);
|
|
58
|
+
currentDir = parentDir;
|
|
49
59
|
}
|
|
60
|
+
} catch (err) {
|
|
61
|
+
console.error(pc.bold(pc.red(`failed to resolve package "${packageName}"`)));
|
|
62
|
+
console.error(err);
|
|
63
|
+
process.exit(1);
|
|
50
64
|
}
|
|
51
65
|
|
|
52
|
-
if (!
|
|
53
|
-
console.error(pc.bold(pc.red(`failed to
|
|
54
|
-
console.error(`Could not find package in node_modules starting from ${configDirname}`);
|
|
66
|
+
if (!packageJson) {
|
|
67
|
+
console.error(pc.bold(pc.red(`failed to locate package.json for "${packageName}"`)));
|
|
55
68
|
process.exit(1);
|
|
56
69
|
}
|
|
57
70
|
|
|
58
|
-
// validate package.json
|
|
59
71
|
const result = packageJsonSchema.try(packageJson, { mode: 'passthrough' });
|
|
60
72
|
if (!result.ok) {
|
|
61
73
|
console.error(pc.bold(pc.red(`invalid atcute:lexicons in "${packageName}":`)));
|
|
@@ -133,24 +145,54 @@ export const generateCommandSchema = command(
|
|
|
133
145
|
|
|
134
146
|
export type GenerateCommand = InferValue<typeof generateCommandSchema>;
|
|
135
147
|
|
|
148
|
+
type ResolvedGenerateConfig = GenerateConfig & { outdir: string; files: string[] };
|
|
149
|
+
|
|
150
|
+
const ensureGenerateConfig = (config: NormalizedConfig): ResolvedGenerateConfig => {
|
|
151
|
+
const generate = config.generate;
|
|
152
|
+
if (!generate) {
|
|
153
|
+
console.error(pc.bold(pc.red(`generate configuration missing`)));
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const { outdir, files } = generate;
|
|
158
|
+
if (!outdir) {
|
|
159
|
+
console.error(pc.bold(pc.red(`generate.outdir is required`)));
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (!files || files.length === 0) {
|
|
164
|
+
console.error(pc.bold(pc.red(`generate.files is required`)));
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return { ...generate, outdir, files };
|
|
169
|
+
};
|
|
170
|
+
|
|
136
171
|
/**
|
|
137
172
|
* runs the generate command to create type definitions from lexicon documents
|
|
138
173
|
* @param args parsed command arguments
|
|
139
174
|
*/
|
|
140
175
|
export const runGenerate = async (args: GenerateCommand): Promise<void> => {
|
|
141
176
|
const config = await loadConfig(args.config);
|
|
177
|
+
const generateConfig = ensureGenerateConfig(config);
|
|
142
178
|
|
|
143
179
|
// resolve imports to mappings
|
|
144
|
-
const importMappings =
|
|
145
|
-
|
|
180
|
+
const importMappings = generateConfig.imports
|
|
181
|
+
? await resolveImportsToMappings(generateConfig.imports, config.root)
|
|
182
|
+
: [];
|
|
183
|
+
const allMappings = [...importMappings, ...(generateConfig.mappings ?? [])];
|
|
146
184
|
|
|
147
185
|
// load lexicons from files
|
|
148
|
-
const loaded = await loadLexicons(
|
|
186
|
+
const loaded = await loadLexicons(generateConfig.files, config.root);
|
|
149
187
|
const documents = loaded.map((l) => l.doc);
|
|
150
188
|
|
|
151
|
-
const outdir = path.join(config.root,
|
|
189
|
+
const outdir = path.join(config.root, generateConfig.outdir);
|
|
152
190
|
const formatter = await createFormatter(config.formatter, config.root);
|
|
153
191
|
|
|
192
|
+
if (generateConfig.clean) {
|
|
193
|
+
await fs.rm(outdir, { recursive: true, force: true });
|
|
194
|
+
}
|
|
195
|
+
|
|
154
196
|
try {
|
|
155
197
|
const pending: Promise<void>[] = [];
|
|
156
198
|
|
|
@@ -158,7 +200,7 @@ export const runGenerate = async (args: GenerateCommand): Promise<void> => {
|
|
|
158
200
|
documents: documents,
|
|
159
201
|
mappings: allMappings,
|
|
160
202
|
modules: {
|
|
161
|
-
importSuffix:
|
|
203
|
+
importSuffix: generateConfig.modules?.importSuffix ?? '.js',
|
|
162
204
|
},
|
|
163
205
|
})) {
|
|
164
206
|
const filename = path.join(outdir, file.filename);
|
package/src/config.ts
CHANGED
|
@@ -79,15 +79,6 @@ const formatterConfigSchema = v.union(
|
|
|
79
79
|
}),
|
|
80
80
|
);
|
|
81
81
|
|
|
82
|
-
export type GitSourceConfig = v.Infer<typeof gitSourceConfigSchema>;
|
|
83
|
-
export type AtprotoNsidsSourceConfig = v.Infer<typeof atprotoNsidsSourceConfigSchema>;
|
|
84
|
-
export type AtprotoAuthoritySourceConfig = v.Infer<typeof atprotoAuthoritySourceConfigSchema>;
|
|
85
|
-
export type AtprotoSourceConfig = v.Infer<typeof atprotoSourceConfigSchema>;
|
|
86
|
-
export type SourceConfig = v.Infer<typeof sourceConfigSchema>;
|
|
87
|
-
export type PullConfig = v.Infer<typeof pullConfigSchema>;
|
|
88
|
-
export type ExportConfig = v.Infer<typeof exportConfigSchema>;
|
|
89
|
-
export type FormatterConfig = v.Infer<typeof formatterConfigSchema>;
|
|
90
|
-
|
|
91
82
|
const isValidLexiconPattern = (pattern: string): boolean => {
|
|
92
83
|
if (pattern.endsWith('.*')) {
|
|
93
84
|
return isNsid(`${pattern.slice(0, -2)}.x`);
|
|
@@ -127,32 +118,71 @@ const importMappingSchema: v.Type<ImportMapping> = v.object({
|
|
|
127
118
|
imports: mappingImports,
|
|
128
119
|
});
|
|
129
120
|
|
|
130
|
-
|
|
131
|
-
|
|
121
|
+
const modulesConfigSchema = v
|
|
122
|
+
.object({
|
|
123
|
+
importSuffix: v
|
|
124
|
+
.string()
|
|
125
|
+
.assert((value) => value.length > 0, `must not be empty`)
|
|
126
|
+
.optional(),
|
|
127
|
+
})
|
|
128
|
+
.partial();
|
|
129
|
+
|
|
130
|
+
const generateConfigSchema = v.object({
|
|
131
|
+
outdir: v
|
|
132
|
+
.string()
|
|
133
|
+
.assert((value) => value.length > 0, `must not be empty`)
|
|
134
|
+
.optional(),
|
|
132
135
|
files: v
|
|
133
136
|
.array(v.string().assert((value) => value.length > 0, `must not be empty`))
|
|
134
|
-
.assert((value) => value.length > 0, `must include at least one glob pattern`)
|
|
137
|
+
.assert((value) => value.length > 0, `must include at least one glob pattern`)
|
|
138
|
+
.optional(),
|
|
135
139
|
imports: v.array(v.string().assert((value) => value.length > 0, `must not be empty`)).optional(),
|
|
136
140
|
mappings: v.array(importMappingSchema).optional(),
|
|
137
|
-
modules:
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
141
|
+
modules: modulesConfigSchema.optional(),
|
|
142
|
+
clean: v.boolean().optional(),
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
export type GitSourceConfig = v.Infer<typeof gitSourceConfigSchema>;
|
|
146
|
+
export type AtprotoNsidsSourceConfig = v.Infer<typeof atprotoNsidsSourceConfigSchema>;
|
|
147
|
+
export type AtprotoAuthoritySourceConfig = v.Infer<typeof atprotoAuthoritySourceConfigSchema>;
|
|
148
|
+
export type AtprotoSourceConfig = v.Infer<typeof atprotoSourceConfigSchema>;
|
|
149
|
+
export type SourceConfig = v.Infer<typeof sourceConfigSchema>;
|
|
150
|
+
export type PullConfig = v.Infer<typeof pullConfigSchema>;
|
|
151
|
+
export type ExportConfig = v.Infer<typeof exportConfigSchema>;
|
|
152
|
+
export type FormatterConfig = v.Infer<typeof formatterConfigSchema>;
|
|
153
|
+
export type GenerateConfig = v.Infer<typeof generateConfigSchema>;
|
|
154
|
+
|
|
155
|
+
export const lexiconConfigSchema = v.object({
|
|
156
|
+
/** @deprecated moved to `generate.outdir` */
|
|
157
|
+
outdir: v
|
|
158
|
+
.string()
|
|
159
|
+
.assert((value) => value.length > 0, `must not be empty`)
|
|
160
|
+
.optional(),
|
|
161
|
+
/** @deprecated moved to `generate.files` */
|
|
162
|
+
files: v
|
|
163
|
+
.array(v.string().assert((value) => value.length > 0, `must not be empty`))
|
|
164
|
+
.assert((value) => value.length > 0, `must include at least one glob pattern`)
|
|
145
165
|
.optional(),
|
|
166
|
+
/** @deprecated moved to `generate.imports` */
|
|
167
|
+
imports: v.array(v.string().assert((value) => value.length > 0, `must not be empty`)).optional(),
|
|
168
|
+
/** @deprecated moved to `generate.mappings` */
|
|
169
|
+
mappings: v.array(importMappingSchema).optional(),
|
|
170
|
+
/** @deprecated moved to `generate.modules` */
|
|
171
|
+
modules: modulesConfigSchema.optional(),
|
|
146
172
|
formatter: formatterConfigSchema.optional((): FormatterConfig => ({ type: 'prettier' })),
|
|
173
|
+
generate: generateConfigSchema.optional(),
|
|
147
174
|
pull: pullConfigSchema.optional(),
|
|
148
175
|
export: exportConfigSchema.optional(),
|
|
149
176
|
});
|
|
150
177
|
|
|
151
178
|
export type LexiconConfig = v.Infer<typeof lexiconConfigSchema>;
|
|
152
179
|
|
|
153
|
-
export
|
|
180
|
+
export type NormalizedConfig = Omit<
|
|
181
|
+
LexiconConfig,
|
|
182
|
+
'outdir' | 'files' | 'imports' | 'mappings' | 'modules'
|
|
183
|
+
> & {
|
|
154
184
|
root: string;
|
|
155
|
-
}
|
|
185
|
+
};
|
|
156
186
|
|
|
157
187
|
export const loadConfig = async (configPath?: string): Promise<NormalizedConfig> => {
|
|
158
188
|
let configFilename: string | undefined;
|
|
@@ -207,5 +237,29 @@ export const loadConfig = async (configPath?: string): Promise<NormalizedConfig>
|
|
|
207
237
|
process.exit(1);
|
|
208
238
|
}
|
|
209
239
|
|
|
210
|
-
|
|
240
|
+
const { outdir, files, imports, mappings, modules, generate, ...rest } = configResult.value;
|
|
241
|
+
|
|
242
|
+
// back-compat: top-level generate options were moved into `generate.*`. merge the legacy
|
|
243
|
+
// top-level values into `generate`, with nested `generate.*` winning on conflicts. the result
|
|
244
|
+
// is only present if at least one generate-related option was provided anywhere.
|
|
245
|
+
const hasLegacyTopLevel =
|
|
246
|
+
outdir !== undefined ||
|
|
247
|
+
files !== undefined ||
|
|
248
|
+
imports !== undefined ||
|
|
249
|
+
mappings !== undefined ||
|
|
250
|
+
modules !== undefined;
|
|
251
|
+
|
|
252
|
+
let normalizedGenerate: GenerateConfig | undefined;
|
|
253
|
+
if (generate || hasLegacyTopLevel) {
|
|
254
|
+
normalizedGenerate = {
|
|
255
|
+
outdir: generate?.outdir ?? outdir,
|
|
256
|
+
files: generate?.files ?? files,
|
|
257
|
+
imports: generate?.imports ?? imports,
|
|
258
|
+
mappings: generate?.mappings ?? mappings,
|
|
259
|
+
modules: generate?.modules ?? modules,
|
|
260
|
+
clean: generate?.clean,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return { ...rest, generate: normalizedGenerate, root: configDirname };
|
|
211
265
|
};
|
package/src/pull-sources/git.ts
CHANGED
|
@@ -26,80 +26,81 @@ export const pullGitSource = async (
|
|
|
26
26
|
const cloneDir = path.join(tempParent, 'repo');
|
|
27
27
|
|
|
28
28
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
29
|
+
try {
|
|
30
|
+
await runGit(
|
|
31
|
+
[
|
|
32
|
+
'clone',
|
|
33
|
+
'--filter=blob:none',
|
|
34
|
+
'--depth',
|
|
35
|
+
'1',
|
|
36
|
+
'--sparse',
|
|
37
|
+
...(source.ref ? ['--branch', source.ref, '--single-branch'] : []),
|
|
38
|
+
source.remote,
|
|
39
|
+
cloneDir,
|
|
40
|
+
],
|
|
41
|
+
{ timeoutMs: 60_000 },
|
|
42
|
+
);
|
|
43
|
+
} catch (err) {
|
|
44
|
+
if (err instanceof GitError) {
|
|
45
|
+
console.error(pc.bold(pc.red(`git clone failed for ${source.remote}:`)));
|
|
46
|
+
console.error(err.stderr || err.message);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
throw err;
|
|
47
51
|
}
|
|
48
52
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
try {
|
|
54
|
+
await runGit(['-C', cloneDir, 'sparse-checkout', 'set', '--no-cone', ...source.pattern], {
|
|
55
|
+
timeoutMs: 30_000,
|
|
56
|
+
});
|
|
57
|
+
} catch (err) {
|
|
58
|
+
if (err instanceof GitError) {
|
|
59
|
+
console.error(pc.bold(pc.red(`git sparse-checkout failed for ${source.remote}:`)));
|
|
60
|
+
console.error(err.stderr || err.message);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
throw err;
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const pulled = new Map<string, PulledLexicon>();
|
|
67
|
+
const pulled = new Map<string, PulledLexicon>();
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
for await (const filename of fs.glob(source.pattern, { cwd: cloneDir })) {
|
|
70
|
+
const absolute = path.join(cloneDir, filename);
|
|
71
|
+
const stat = await fs.stat(absolute);
|
|
71
72
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
if (!stat.isFile()) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
const location: SourceLocation = {
|
|
78
|
+
absolutePath: absolute,
|
|
79
|
+
relativePath: filename,
|
|
80
|
+
sourceDescription: source.remote,
|
|
81
|
+
};
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
const doc = await parseLexiconFile(location);
|
|
83
84
|
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
pulled.set(doc.id, { nsid: doc.id, doc, location });
|
|
86
|
+
}
|
|
86
87
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
88
|
+
let rev: string;
|
|
89
|
+
try {
|
|
90
|
+
const result = await runGit(['-C', cloneDir, 'rev-parse', 'HEAD'], { timeoutMs: 10_000 });
|
|
91
|
+
rev = result.stdout.trim();
|
|
92
|
+
} catch (err) {
|
|
93
|
+
if (err instanceof GitError) {
|
|
94
|
+
console.error(pc.bold(pc.red(`git rev-parse failed for ${source.remote}:`)));
|
|
95
|
+
console.error(err.stderr || err.message);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
throw err;
|
|
97
100
|
}
|
|
98
101
|
|
|
99
|
-
|
|
102
|
+
return { pulled, rev };
|
|
103
|
+
} finally {
|
|
104
|
+
await fs.rm(tempParent, { recursive: true, force: true });
|
|
100
105
|
}
|
|
101
|
-
|
|
102
|
-
await fs.rm(tempParent, { recursive: true, force: true });
|
|
103
|
-
|
|
104
|
-
return { pulled, rev };
|
|
105
106
|
};
|