@live-change/cli 0.8.14 → 0.8.16
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/lib/starter.js +152 -106
- package/package.json +8 -8
package/lib/starter.js
CHANGED
|
@@ -146,115 +146,156 @@ let globalServicesConfig
|
|
|
146
146
|
export default function starter(servicesConfig = null) {
|
|
147
147
|
globalServicesConfig = servicesConfig
|
|
148
148
|
yargs(process.argv.slice(2))
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
149
|
+
.command('apiServer', 'start server', (yargs) => {
|
|
150
|
+
apiServerOptions(yargs)
|
|
151
|
+
startOptions(yargs)
|
|
152
|
+
}, async (argv) => {
|
|
153
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
154
|
+
await apiServer(argv)
|
|
155
|
+
})
|
|
156
|
+
.command('devApiServer', 'shortcut for apiServer --withServices --updateServices', (yargs) => {
|
|
157
|
+
apiServerOptions(yargs)
|
|
158
|
+
startOptions(yargs)
|
|
159
|
+
}, async (argv) => {
|
|
160
|
+
argv = {
|
|
161
|
+
...argv,
|
|
162
|
+
withServices: true, updateServices: true
|
|
163
|
+
}
|
|
164
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
165
|
+
await apiServer(argv)
|
|
166
|
+
})
|
|
167
|
+
.command('memApiServer', 'shortcut for devApiServer --withDb --dbBackend mem --createDb', (yargs) => {
|
|
168
|
+
apiServerOptions(yargs)
|
|
169
|
+
startOptions(yargs)
|
|
170
|
+
}, async (argv) => {
|
|
171
|
+
argv = {
|
|
172
|
+
...argv,
|
|
173
|
+
withApi: true, withServices: true, updateServices: true,
|
|
174
|
+
withDb: true, dbBackend: 'mem', createDb: true
|
|
175
|
+
}
|
|
176
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
177
|
+
await apiServer(argv)
|
|
178
|
+
})
|
|
179
|
+
.command('ssrServer', 'start ssr server', (yargs) => {
|
|
180
|
+
ssrServerOptions(yargs)
|
|
181
|
+
apiServerOptions(yargs)
|
|
182
|
+
startOptions(yargs)
|
|
183
|
+
}, async (argv) => {
|
|
184
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
185
|
+
await server({...argv, uidBorders: '[]'}, false)
|
|
186
|
+
})
|
|
187
|
+
.command('server', 'start server', (yargs) => {
|
|
188
|
+
ssrServerOptions(yargs)
|
|
189
|
+
apiServerOptions(yargs)
|
|
190
|
+
startOptions(yargs)
|
|
191
|
+
}, async (argv) => {
|
|
192
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
193
|
+
await server({...argv, uidBorders: '[]'}, false)
|
|
194
|
+
})
|
|
195
|
+
.command('ssrDev', 'start ssr server in development mode', (yargs) => {
|
|
196
|
+
ssrServerOptions(yargs)
|
|
197
|
+
apiServerOptions(yargs)
|
|
198
|
+
startOptions(yargs)
|
|
199
|
+
}, async (argv) => {
|
|
200
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
201
|
+
await server({...argv, uidBorders: '[]'}, true)
|
|
202
|
+
})
|
|
203
|
+
.command('dev', 'shortcut for ssrDev --withApi --withServices --updateServices --createDb', (yargs) => {
|
|
204
|
+
ssrServerOptions(yargs)
|
|
205
|
+
apiServerOptions(yargs)
|
|
206
|
+
startOptions(yargs)
|
|
207
|
+
}, async (argv) => {
|
|
208
|
+
argv = {
|
|
209
|
+
...argv,
|
|
210
|
+
withApi: true, withServices: true, updateServices: true, createDb: true,
|
|
211
|
+
}
|
|
212
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
213
|
+
await server({...argv, uidBorders: '[]'}, true)
|
|
214
|
+
})
|
|
215
|
+
.command('memDev', 'shortcut for dev --withDb --dbBackend mem --createDb', (yargs) => {
|
|
216
|
+
ssrServerOptions(yargs)
|
|
217
|
+
apiServerOptions(yargs)
|
|
218
|
+
startOptions(yargs)
|
|
219
|
+
}, async (argv) => {
|
|
220
|
+
argv = {
|
|
221
|
+
...argv,
|
|
222
|
+
withApi: true, withServices: true, updateServices: true,
|
|
223
|
+
withDb: true, dbBackend: 'mem', createDb: true
|
|
224
|
+
}
|
|
225
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
226
|
+
await server({...argv, uidBorders: '[]'}, true)
|
|
227
|
+
})
|
|
228
|
+
.command('localDev', 'shortcut for dev --withDb --createDb', (yargs) => {
|
|
229
|
+
ssrServerOptions(yargs)
|
|
230
|
+
apiServerOptions(yargs)
|
|
231
|
+
startOptions(yargs)
|
|
232
|
+
}, async (argv) => {
|
|
233
|
+
argv = {
|
|
234
|
+
...argv,
|
|
235
|
+
withApi: true, withServices: true, updateServices: true,
|
|
236
|
+
withDb: true, createDb: true
|
|
237
|
+
}
|
|
238
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
239
|
+
await server({...argv, uidBorders: '[]'}, true)
|
|
240
|
+
})
|
|
241
|
+
.command('describe', 'describe server', (yargs) => {
|
|
242
|
+
yargs.option('service', {
|
|
243
|
+
describe: 'service that will be described',
|
|
244
|
+
type: 'string',
|
|
245
|
+
default: '*'
|
|
227
246
|
})
|
|
228
|
-
.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
startOptions(yargs)
|
|
232
|
-
}, async (argv) => {
|
|
233
|
-
argv = {
|
|
234
|
-
...argv,
|
|
235
|
-
withApi: true, withServices: true, updateServices: true,
|
|
236
|
-
withDb: true, createDb: true
|
|
237
|
-
}
|
|
238
|
-
await setupApp({...argv, uidBorders: '[]'})
|
|
239
|
-
await server({...argv, uidBorders: '[]'}, true)
|
|
247
|
+
yargs.option('json', {
|
|
248
|
+
describe: 'print json',
|
|
249
|
+
type: 'boolean'
|
|
240
250
|
})
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
251
|
+
}, async (argv) => {
|
|
252
|
+
await describe(argv)
|
|
253
|
+
})
|
|
254
|
+
.command('changes', 'show changes', (yargs) => {
|
|
255
|
+
yargs.option('service', {
|
|
256
|
+
describe: 'service that will be described',
|
|
257
|
+
type: 'string',
|
|
258
|
+
default: '*'
|
|
249
259
|
})
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
260
|
+
}, async (argv) => {
|
|
261
|
+
await setupApp({...argv, uidBorders: '[]'})
|
|
262
|
+
await changes(argv)
|
|
263
|
+
})
|
|
264
|
+
.option('verbose', {
|
|
265
|
+
alias: 'v',
|
|
266
|
+
type: 'boolean',
|
|
267
|
+
description: 'Run with verbose logging'
|
|
268
|
+
}).argv
|
|
255
269
|
/// TODO api.gen.js generation command
|
|
256
270
|
}
|
|
257
271
|
|
|
272
|
+
async function changes(argv) {
|
|
273
|
+
if(globalServicesConfig) argv.services = globalServicesConfig
|
|
274
|
+
const services = new Services(argv.services)
|
|
275
|
+
await services.loadServices()
|
|
276
|
+
await services.processDefinitions()
|
|
277
|
+
async function printChanges(service) {
|
|
278
|
+
const oldServiceJson = app.getOldServiceDefinition(service.name)
|
|
279
|
+
const changes = service.computeChanges(oldServiceJson)
|
|
280
|
+
console.log("Service", service.name)
|
|
281
|
+
for(const change of changes) {
|
|
282
|
+
console.log(JSON.stringify(change, null, " "))
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
if(argv.service === '*') {
|
|
286
|
+
for(const service of services.serviceDefinitions) {
|
|
287
|
+
await printChanges(service)
|
|
288
|
+
}
|
|
289
|
+
} else {
|
|
290
|
+
const service = services.serviceDefinitions.find(s => s.name === argv.service)
|
|
291
|
+
if(service) {
|
|
292
|
+
await printChanges(service)
|
|
293
|
+
} else {
|
|
294
|
+
console.error("Service", argv.service, "not found")
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
process.exit(0)
|
|
298
|
+
}
|
|
258
299
|
|
|
259
300
|
async function describe(argv) {
|
|
260
301
|
if(globalServicesConfig) argv.services = globalServicesConfig
|
|
@@ -263,6 +304,10 @@ async function describe(argv) {
|
|
|
263
304
|
await services.processDefinitions()
|
|
264
305
|
function describeService(service) {
|
|
265
306
|
console.log("Service", service.name)
|
|
307
|
+
if(argv.json) {
|
|
308
|
+
console.log(JSON.stringify(service.toJSON(), null, " "))
|
|
309
|
+
return
|
|
310
|
+
}
|
|
266
311
|
console.log(" models:")
|
|
267
312
|
for(const modelName in service.models) {
|
|
268
313
|
const model = service.models[modelName]
|
|
@@ -304,18 +349,19 @@ async function describe(argv) {
|
|
|
304
349
|
console.log(" ", eventName, "(", properties.join(', '), ")")
|
|
305
350
|
}
|
|
306
351
|
}
|
|
307
|
-
if(argv.service
|
|
352
|
+
if(argv.service === '*') {
|
|
308
353
|
for(const service of services.serviceDefinitions) {
|
|
309
354
|
describeService(service)
|
|
310
355
|
}
|
|
311
356
|
} else {
|
|
312
|
-
const service = services.serviceDefinitions.find(s => s.name
|
|
357
|
+
const service = services.serviceDefinitions.find(s => s.name === argv.service)
|
|
313
358
|
if(service) {
|
|
314
359
|
describeService(service)
|
|
315
360
|
} else {
|
|
316
361
|
console.error("Service", argv.service, "not found")
|
|
317
362
|
}
|
|
318
363
|
}
|
|
364
|
+
process.exit(0)
|
|
319
365
|
}
|
|
320
366
|
|
|
321
367
|
async function apiServer(argv) {
|
|
@@ -358,7 +404,7 @@ async function server(argv, dev) {
|
|
|
358
404
|
if(argv.versionFile) argv.version = await readFile(argv.versionFile, 'utf8')
|
|
359
405
|
|
|
360
406
|
if(!argv.withApi) {
|
|
361
|
-
const apiServerHost = (argv.apiHost
|
|
407
|
+
const apiServerHost = (argv.apiHost === '0.0.0.0' ? 'localhost' : argv.apiHost) + ':' + argv.apiPort
|
|
362
408
|
const target = `http://${apiServerHost}/`
|
|
363
409
|
const apiProxy = createProxyMiddleware({
|
|
364
410
|
target,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@live-change/cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.16",
|
|
4
4
|
"description": "Live Change Framework - command line interface",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"type": "module",
|
|
26
26
|
"homepage": "https://github.com/live-change/live-change-stack",
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@live-change/dao": "^0.8.
|
|
29
|
-
"@live-change/dao-sockjs": "^0.8.
|
|
30
|
-
"@live-change/dao-websocket": "^0.8.
|
|
31
|
-
"@live-change/db-server": "^0.8.
|
|
32
|
-
"@live-change/framework": "^0.8.
|
|
33
|
-
"@live-change/server": "^0.8.
|
|
28
|
+
"@live-change/dao": "^0.8.16",
|
|
29
|
+
"@live-change/dao-sockjs": "^0.8.16",
|
|
30
|
+
"@live-change/dao-websocket": "^0.8.16",
|
|
31
|
+
"@live-change/db-server": "^0.8.16",
|
|
32
|
+
"@live-change/framework": "^0.8.16",
|
|
33
|
+
"@live-change/server": "^0.8.16",
|
|
34
34
|
"dotenv": "^16.4.4",
|
|
35
35
|
"express": "^4.18.2",
|
|
36
36
|
"http-proxy-middleware": "2.0.6",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"websocket": "^1.0.34",
|
|
41
41
|
"yargs": "^17.7.2"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "b8ac84cbe1a8c435c7b5003dfc64ddc41a4e15a6"
|
|
44
44
|
}
|