@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.
Files changed (2) hide show
  1. package/lib/starter.js +152 -106
  2. 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
- .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)
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
- .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)
247
+ yargs.option('json', {
248
+ describe: 'print json',
249
+ type: 'boolean'
240
250
  })
241
- .command('describe', 'describe server', (yargs) => {
242
- yargs.option('service', {
243
- describe: 'service that will be described',
244
- type: 'string',
245
- default: '*'
246
- })
247
- }, async (argv) => {
248
- await describe(argv)
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
- .option('verbose', {
251
- alias: 'v',
252
- type: 'boolean',
253
- description: 'Run with verbose logging'
254
- }).argv
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 == argv.service)
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 == '0.0.0.0' ? 'localhost' : argv.apiHost) + ':' + argv.apiPort
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.14",
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.14",
29
- "@live-change/dao-sockjs": "^0.8.14",
30
- "@live-change/dao-websocket": "^0.8.14",
31
- "@live-change/db-server": "^0.8.14",
32
- "@live-change/framework": "^0.8.14",
33
- "@live-change/server": "^0.8.14",
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": "d81b573fb8891746ae1c67f4f68558123c9f85f7"
43
+ "gitHead": "b8ac84cbe1a8c435c7b5003dfc64ddc41a4e15a6"
44
44
  }