@voxgig/create-sdkgen 0.2.0 → 0.3.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/create-sdkgen.js +45 -20
- package/dist/create-sdkgen.js.map +1 -1
- package/package.json +6 -6
- package/src/create-sdkgen.ts +50 -23
package/dist/create-sdkgen.js
CHANGED
|
@@ -45,14 +45,22 @@ const JostracaModule = __importStar(require("jostraca"));
|
|
|
45
45
|
const util_1 = require("@voxgig/util");
|
|
46
46
|
const package_json_1 = __importDefault(require("../package.json"));
|
|
47
47
|
const { names, Jostraca } = JostracaModule;
|
|
48
|
+
// TODO: CreateSdkGen opts and generate opts should be mostly the same, and
|
|
49
|
+
// generate should override
|
|
48
50
|
function CreateSdkGen(opts) {
|
|
49
51
|
const fs = opts.fs || Fs;
|
|
52
|
+
const debug = opts.debug;
|
|
50
53
|
const pino = (0, util_1.prettyPino)('create', opts);
|
|
51
54
|
const log = pino.child({ cmp: 'create' });
|
|
52
55
|
const jostraca = Jostraca();
|
|
53
56
|
async function generate(spec) {
|
|
54
57
|
const start = Date.now();
|
|
55
|
-
|
|
58
|
+
let dryrun = !!spec.dryrun;
|
|
59
|
+
log.info({
|
|
60
|
+
point: 'generate-start',
|
|
61
|
+
start,
|
|
62
|
+
note: spec.project + (dryrun ? ' ** DRY RUN **' : '')
|
|
63
|
+
});
|
|
56
64
|
log.debug({ point: 'generate-spec', spec, note: JSON.stringify(spec, null, 2) });
|
|
57
65
|
const projectFolder = resolveProjectFolder(spec);
|
|
58
66
|
const rootPath = node_path_1.default.join(projectFolder, spec.root);
|
|
@@ -63,6 +71,7 @@ function CreateSdkGen(opts) {
|
|
|
63
71
|
const folder = node_path_1.default.join(process.cwd(), name + (name.endsWith('-sdk') ? '' : '-sdk'));
|
|
64
72
|
const jopts = {
|
|
65
73
|
fs: () => fs,
|
|
74
|
+
debug,
|
|
66
75
|
folder,
|
|
67
76
|
log: log.child({ cmp: 'jostraca' }),
|
|
68
77
|
meta: { spec },
|
|
@@ -72,7 +81,7 @@ function CreateSdkGen(opts) {
|
|
|
72
81
|
}
|
|
73
82
|
},
|
|
74
83
|
control: {
|
|
75
|
-
dryrun
|
|
84
|
+
dryrun,
|
|
76
85
|
}
|
|
77
86
|
};
|
|
78
87
|
const model = {
|
|
@@ -84,12 +93,17 @@ function CreateSdkGen(opts) {
|
|
|
84
93
|
};
|
|
85
94
|
names(model, model.name);
|
|
86
95
|
names(model, model.name, 'project_name');
|
|
87
|
-
log.debug({
|
|
88
|
-
|
|
96
|
+
log.debug({
|
|
97
|
+
point: 'generate-jostraca',
|
|
98
|
+
jostraca: jopts,
|
|
99
|
+
note: JSON.stringify(jopts, null, 2)
|
|
100
|
+
});
|
|
89
101
|
const jres = await jostraca.generate(jopts, () => Root({ model, spec }));
|
|
90
|
-
// console.log('JRES', jres)
|
|
91
102
|
(0, util_1.showChanges)(jopts.log, 'generate-result', jres, node_path_1.default.dirname(process.cwd()));
|
|
92
|
-
if (
|
|
103
|
+
if (spec.dryrun || !spec.install) {
|
|
104
|
+
log.info({ point: 'generate-install', note: 'skipping npm install' });
|
|
105
|
+
}
|
|
106
|
+
if (!spec.dryrun) {
|
|
93
107
|
await installNpm(spec, jopts, model);
|
|
94
108
|
}
|
|
95
109
|
log.info({ point: 'generate-end' });
|
|
@@ -113,9 +127,8 @@ function CreateSdkGen(opts) {
|
|
|
113
127
|
async function installNpm(spec, opts, model) {
|
|
114
128
|
const folder = opts.folder;
|
|
115
129
|
const log = opts.log;
|
|
116
|
-
return new Promise((resolve, reject) => {
|
|
130
|
+
return new Promise(async (resolve, reject) => {
|
|
117
131
|
const cwd = node_path_1.default.resolve(folder, '.sdk');
|
|
118
|
-
log.info({ point: 'generate-install', install: 'npm', note: 'npm install # ' + cwd });
|
|
119
132
|
const env = {
|
|
120
133
|
...process.env,
|
|
121
134
|
PATH: `${node_path_1.default.dirname(process.execPath)}${node_path_1.default.delimiter}${process.env.PATH}`,
|
|
@@ -126,18 +139,28 @@ async function installNpm(spec, opts, model) {
|
|
|
126
139
|
env,
|
|
127
140
|
stdio: 'inherit', // Direct passthrough for real-time output
|
|
128
141
|
};
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
142
|
+
const postInstall = async () => {
|
|
143
|
+
await installTargets(spec, opts, model, spawn_opts);
|
|
144
|
+
await installFeatures(spec, opts, model, spawn_opts);
|
|
145
|
+
};
|
|
146
|
+
if (spec.install) {
|
|
147
|
+
log.info({ point: 'generate-install', note: 'running npm install in ' + cwd });
|
|
148
|
+
const child = (0, child_process_1.spawn)('npm', args, spawn_opts);
|
|
149
|
+
child.on('error', (err) => reject(new Error(`Failed to start npm: ${err.message}`)));
|
|
150
|
+
child.on('close', async (code) => {
|
|
151
|
+
if (code !== 0) {
|
|
152
|
+
reject(new Error(`npm install exited with code ${code}`));
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
await postInstall();
|
|
156
|
+
return resolve(null);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
await postInstall();
|
|
162
|
+
return resolve(null);
|
|
163
|
+
}
|
|
141
164
|
});
|
|
142
165
|
}
|
|
143
166
|
async function installTargets(spec, opts, model, spawn_opts) {
|
|
@@ -153,6 +176,7 @@ async function installTargets(spec, opts, model, spawn_opts) {
|
|
|
153
176
|
note: 'npm run target-add ' + targetlist
|
|
154
177
|
});
|
|
155
178
|
const args = ['run', 'add-target', targetlist];
|
|
179
|
+
log.info({ point: 'generate-target', note: 'adding targets: ' + targetlist });
|
|
156
180
|
const child = (0, child_process_1.spawn)('npm', args, spawn_opts);
|
|
157
181
|
child.on('error', (err) => reject(new Error(`Failed to start npm: ${err.message}`)));
|
|
158
182
|
child.on('close', async (code) => {
|
|
@@ -178,6 +202,7 @@ async function installFeatures(spec, opts, model, spawn_opts) {
|
|
|
178
202
|
note: 'npm run feature-add ' + featurelist
|
|
179
203
|
});
|
|
180
204
|
const args = ['run', 'add-feature', featurelist];
|
|
205
|
+
log.info({ point: 'generate-feature', note: 'adding features: ' + featurelist });
|
|
181
206
|
const child = (0, child_process_1.spawn)('npm', args, spawn_opts);
|
|
182
207
|
child.on('error', (err) => reject(new Error(`Failed to start npm: ${err.message}`)));
|
|
183
208
|
child.on('close', async (code) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-sdkgen.js","sourceRoot":"","sources":["../src/create-sdkgen.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"create-sdkgen.js","sourceRoot":"","sources":["../src/create-sdkgen.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voxgig/create-sdkgen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"main": "dist/create-sdkgen.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/create-sdkgen.d.ts",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"create-sdkgen": "bin/create-sdkgen"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
|
-
"test": "node --enable-source-maps --test dist-test",
|
|
24
|
-
"test-some": "node --enable-source-maps --test-name-pattern=\"$npm_config_pattern\" --test dist-test",
|
|
23
|
+
"test": "node --enable-source-maps --test dist-test/**/*.test.js",
|
|
24
|
+
"test-some": "node --enable-source-maps --test-name-pattern=\"$npm_config_pattern\" --test dist-test/**/*.test.js",
|
|
25
25
|
"watch": "tsc --build src test -w",
|
|
26
26
|
"build": "tsc --build src test",
|
|
27
27
|
"test-model": "voxgig-model project/.sdk/test/test.jsonic",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
],
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@hapi/code": "^9.0.3",
|
|
45
|
-
"@types/node": "24.
|
|
45
|
+
"@types/node": "24.2.0",
|
|
46
46
|
"esbuild": "^0.25.8",
|
|
47
|
-
"memfs": "^4.
|
|
47
|
+
"memfs": "^4.36.0",
|
|
48
48
|
"typescript": "^5.9.2"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
@@ -52,6 +52,6 @@
|
|
|
52
52
|
"aontu": "^0.28.0",
|
|
53
53
|
"chokidar": "^4.0.3",
|
|
54
54
|
"gubu": "^9.0.0",
|
|
55
|
-
"jostraca": "^0.24.
|
|
55
|
+
"jostraca": "^0.24.1"
|
|
56
56
|
}
|
|
57
57
|
}
|
package/src/create-sdkgen.ts
CHANGED
|
@@ -36,9 +36,12 @@ type GenerateSpec = {
|
|
|
36
36
|
|
|
37
37
|
const { names, Jostraca } = JostracaModule
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
// TODO: CreateSdkGen opts and generate opts should be mostly the same, and
|
|
40
|
+
// generate should override
|
|
40
41
|
function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
41
42
|
const fs = opts.fs || Fs
|
|
43
|
+
|
|
44
|
+
const debug = opts.debug
|
|
42
45
|
const pino = prettyPino('create', opts)
|
|
43
46
|
const log = pino.child({ cmp: 'create' })
|
|
44
47
|
|
|
@@ -47,7 +50,13 @@ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
|
47
50
|
async function generate(spec: GenerateSpec) {
|
|
48
51
|
const start = Date.now()
|
|
49
52
|
|
|
50
|
-
|
|
53
|
+
let dryrun = !!spec.dryrun
|
|
54
|
+
|
|
55
|
+
log.info({
|
|
56
|
+
point: 'generate-start',
|
|
57
|
+
start,
|
|
58
|
+
note: spec.project + (dryrun ? ' ** DRY RUN **' : '')
|
|
59
|
+
})
|
|
51
60
|
log.debug({ point: 'generate-spec', spec, note: JSON.stringify(spec, null, 2) })
|
|
52
61
|
|
|
53
62
|
const projectFolder = resolveProjectFolder(spec)
|
|
@@ -63,6 +72,7 @@ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
|
63
72
|
|
|
64
73
|
const jopts = {
|
|
65
74
|
fs: () => fs,
|
|
75
|
+
debug,
|
|
66
76
|
folder,
|
|
67
77
|
log: log.child({ cmp: 'jostraca' }),
|
|
68
78
|
meta: { spec },
|
|
@@ -72,7 +82,7 @@ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
|
72
82
|
}
|
|
73
83
|
},
|
|
74
84
|
control: {
|
|
75
|
-
dryrun
|
|
85
|
+
dryrun,
|
|
76
86
|
}
|
|
77
87
|
}
|
|
78
88
|
|
|
@@ -87,17 +97,21 @@ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
|
87
97
|
names(model, model.name)
|
|
88
98
|
names(model, model.name, 'project_name')
|
|
89
99
|
|
|
90
|
-
log.debug({
|
|
91
|
-
|
|
92
|
-
|
|
100
|
+
log.debug({
|
|
101
|
+
point: 'generate-jostraca',
|
|
102
|
+
jostraca: jopts,
|
|
103
|
+
note: JSON.stringify(jopts, null, 2)
|
|
104
|
+
})
|
|
93
105
|
|
|
94
106
|
const jres = await jostraca.generate(jopts, () => Root({ model, spec }))
|
|
95
107
|
|
|
96
|
-
// console.log('JRES', jres)
|
|
97
|
-
|
|
98
108
|
showChanges(jopts.log, 'generate-result', jres, Path.dirname(process.cwd()))
|
|
99
109
|
|
|
100
|
-
if (
|
|
110
|
+
if (spec.dryrun || !spec.install) {
|
|
111
|
+
log.info({ point: 'generate-install', note: 'skipping npm install' })
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (!spec.dryrun) {
|
|
101
115
|
await installNpm(spec, jopts, model)
|
|
102
116
|
}
|
|
103
117
|
|
|
@@ -137,9 +151,8 @@ async function installNpm(spec: GenerateSpec, opts: any, model: any) {
|
|
|
137
151
|
const folder = opts.folder
|
|
138
152
|
const log = opts.log
|
|
139
153
|
|
|
140
|
-
return new Promise((resolve, reject) => {
|
|
154
|
+
return new Promise(async (resolve, reject) => {
|
|
141
155
|
const cwd = Path.resolve(folder, '.sdk')
|
|
142
|
-
log.info({ point: 'generate-install', install: 'npm', note: 'npm install # ' + cwd })
|
|
143
156
|
|
|
144
157
|
const env = {
|
|
145
158
|
...process.env,
|
|
@@ -154,20 +167,32 @@ async function installNpm(spec: GenerateSpec, opts: any, model: any) {
|
|
|
154
167
|
stdio: 'inherit', // Direct passthrough for real-time output
|
|
155
168
|
}
|
|
156
169
|
|
|
157
|
-
const
|
|
170
|
+
const postInstall = async () => {
|
|
171
|
+
await installTargets(spec, opts, model, spawn_opts)
|
|
172
|
+
await installFeatures(spec, opts, model, spawn_opts)
|
|
173
|
+
}
|
|
158
174
|
|
|
159
|
-
|
|
175
|
+
if (spec.install) {
|
|
176
|
+
log.info({ point: 'generate-install', note: 'running npm install in ' + cwd })
|
|
160
177
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
178
|
+
const child = spawn('npm', args, spawn_opts)
|
|
179
|
+
|
|
180
|
+
child.on('error', (err) => reject(new Error(`Failed to start npm: ${err.message}`)))
|
|
181
|
+
|
|
182
|
+
child.on('close', async (code) => {
|
|
183
|
+
if (code !== 0) {
|
|
184
|
+
reject(new Error(`npm install exited with code ${code}`))
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
await postInstall()
|
|
188
|
+
return resolve(null)
|
|
189
|
+
}
|
|
190
|
+
})
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
await postInstall()
|
|
194
|
+
return resolve(null)
|
|
195
|
+
}
|
|
171
196
|
})
|
|
172
197
|
}
|
|
173
198
|
|
|
@@ -190,6 +215,7 @@ async function installTargets(spec: GenerateSpec, opts: any, model: any, spawn_o
|
|
|
190
215
|
|
|
191
216
|
const args = ['run', 'add-target', targetlist]
|
|
192
217
|
|
|
218
|
+
log.info({ point: 'generate-target', note: 'adding targets: ' + targetlist })
|
|
193
219
|
const child = spawn('npm', args, spawn_opts)
|
|
194
220
|
|
|
195
221
|
child.on('error', (err) => reject(new Error(`Failed to start npm: ${err.message}`)))
|
|
@@ -224,6 +250,7 @@ async function installFeatures(spec: GenerateSpec, opts: any, model: any, spawn_
|
|
|
224
250
|
|
|
225
251
|
const args = ['run', 'add-feature', featurelist]
|
|
226
252
|
|
|
253
|
+
log.info({ point: 'generate-feature', note: 'adding features: ' + featurelist })
|
|
227
254
|
const child = spawn('npm', args, spawn_opts)
|
|
228
255
|
|
|
229
256
|
child.on('error', (err) => reject(new Error(`Failed to start npm: ${err.message}`)))
|