@codenotch/codenotch.cli 1.0.52 → 1.0.54

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 (102) hide show
  1. package/README.md +14 -5
  2. package/dist/commands/generate/app.js +22 -14
  3. package/dist/commands/generate/app.js.map +1 -1
  4. package/dist/commands/generate/appmanifest.js +14 -2
  5. package/dist/commands/generate/appmanifest.js.map +1 -1
  6. package/dist/commands/generate/dbcontext.js +9 -2
  7. package/dist/commands/generate/dbcontext.js.map +1 -1
  8. package/dist/commands/generate/i18n.js +15 -0
  9. package/dist/commands/generate/i18n.js.map +1 -1
  10. package/dist/commands/generate/manifest.js +7 -2
  11. package/dist/commands/generate/manifest.js.map +1 -1
  12. package/dist/commands/generate/openapi.js +9 -2
  13. package/dist/commands/generate/openapi.js.map +1 -1
  14. package/dist/commands/generate/pkg.js +7 -2
  15. package/dist/commands/generate/pkg.js.map +1 -1
  16. package/dist/commands/generate/process.js +26 -18
  17. package/dist/commands/generate/process.js.map +1 -1
  18. package/dist/commands/generate/shared.d.ts +5 -0
  19. package/dist/commands/generate/shared.js +12 -0
  20. package/dist/commands/generate/shared.js.map +1 -1
  21. package/dist/commands/project/bump.d.ts +2 -0
  22. package/dist/commands/project/bump.js +130 -0
  23. package/dist/commands/project/bump.js.map +1 -0
  24. package/dist/commands/project/compile.js +11 -2
  25. package/dist/commands/project/compile.js.map +1 -1
  26. package/dist/commands/project/deploy.js +10 -2
  27. package/dist/commands/project/deploy.js.map +1 -1
  28. package/dist/commands/project/index.js +3 -0
  29. package/dist/commands/project/index.js.map +1 -1
  30. package/dist/commands/project/open.js +4 -4
  31. package/dist/commands/project/open.js.map +1 -1
  32. package/dist/commands/project/package.js +60 -4
  33. package/dist/commands/project/package.js.map +1 -1
  34. package/dist/commands/project/refresh.js +49 -3
  35. package/dist/commands/project/refresh.js.map +1 -1
  36. package/dist/commands/project/remove.js +4 -1
  37. package/dist/commands/project/remove.js.map +1 -1
  38. package/dist/commands/project/start.js +8 -4
  39. package/dist/commands/project/start.js.map +1 -1
  40. package/dist/commands/project/test.js +41 -3
  41. package/dist/commands/project/test.js.map +1 -1
  42. package/dist/commands/react/index.js +1 -4
  43. package/dist/commands/react/index.js.map +1 -1
  44. package/dist/commands/runtime/clear.js +5 -0
  45. package/dist/commands/runtime/clear.js.map +1 -1
  46. package/dist/commands/runtime/info.js +1 -1
  47. package/dist/commands/runtime/info.js.map +1 -1
  48. package/dist/commands/runtime/portal.js +4 -4
  49. package/dist/commands/runtime/portal.js.map +1 -1
  50. package/dist/commands/runtime/start.js +10 -1
  51. package/dist/commands/runtime/start.js.map +1 -1
  52. package/dist/commands/runtime/stop.js +5 -0
  53. package/dist/commands/runtime/stop.js.map +1 -1
  54. package/dist/commands/runtime/update.js +4 -3
  55. package/dist/commands/runtime/update.js.map +1 -1
  56. package/dist/commands/system/completion.d.ts +7 -0
  57. package/dist/commands/system/completion.js +145 -0
  58. package/dist/commands/system/completion.js.map +1 -0
  59. package/dist/commands/system/index.js +2 -0
  60. package/dist/commands/system/index.js.map +1 -1
  61. package/dist/commands/system/info.js +42 -8
  62. package/dist/commands/system/info.js.map +1 -1
  63. package/dist/commands/validation/validate.js +3 -3
  64. package/dist/commands/validation/validate.js.map +1 -1
  65. package/dist/index.js +32 -4
  66. package/dist/index.js.map +1 -1
  67. package/dist/utils/BuildUtils.d.ts +6 -5
  68. package/dist/utils/BuildUtils.js +61 -45
  69. package/dist/utils/BuildUtils.js.map +1 -1
  70. package/dist/utils/ConsoleUtils.d.ts +27 -0
  71. package/dist/utils/ConsoleUtils.js +53 -4
  72. package/dist/utils/ConsoleUtils.js.map +1 -1
  73. package/dist/utils/FileUtils.js +1 -1
  74. package/dist/utils/FileUtils.js.map +1 -1
  75. package/dist/utils/GitHubAuthUtils.js +5 -5
  76. package/dist/utils/GitHubAuthUtils.js.map +1 -1
  77. package/dist/utils/PackageUtils.js +15 -15
  78. package/dist/utils/PackageUtils.js.map +1 -1
  79. package/dist/utils/ProjectCompilationUtils.d.ts +0 -1
  80. package/dist/utils/ProjectCompilationUtils.js +22 -23
  81. package/dist/utils/ProjectCompilationUtils.js.map +1 -1
  82. package/dist/utils/ProjectTemplates.js +2 -2
  83. package/dist/utils/ProjectTemplates.js.map +1 -1
  84. package/dist/utils/ProjectUtils.d.ts +6 -0
  85. package/dist/utils/ProjectUtils.js +34 -1
  86. package/dist/utils/ProjectUtils.js.map +1 -1
  87. package/dist/utils/RuntimeUtils.d.ts +84 -9
  88. package/dist/utils/RuntimeUtils.js +263 -58
  89. package/dist/utils/RuntimeUtils.js.map +1 -1
  90. package/dist/utils/ShellUtils.js +6 -2
  91. package/dist/utils/ShellUtils.js.map +1 -1
  92. package/dist/utils/TemplateUtils.js +26 -14
  93. package/dist/utils/TemplateUtils.js.map +1 -1
  94. package/package.json +4 -3
  95. package/resources/docs/apps.md +0 -1
  96. package/resources/docs/project.md +21 -8
  97. package/dist/commands/react/serve.d.ts +0 -2
  98. package/dist/commands/react/serve.js +0 -52
  99. package/dist/commands/react/serve.js.map +0 -1
  100. package/dist/utils/ServeUtils.d.ts +0 -9
  101. package/dist/utils/ServeUtils.js +0 -172
  102. package/dist/utils/ServeUtils.js.map +0 -1
package/README.md CHANGED
@@ -17,12 +17,14 @@ Requires Node.js 20+. This gives you the `cn` command (long form: `codenotch-cli
17
17
  ## Getting started
18
18
 
19
19
  ```sh
20
- cn runtime update # install (or update) the local Codenotch runtime
21
- cn runtime start # start it
22
20
  cn project new # create a project (asks for the template and the name)
23
- cn project start # build, deploy and open it
21
+ cn project start # build, deploy and open it (installs and starts the local runtime when needed)
24
22
  ```
25
23
 
24
+ The commands needing the runtime propose to install it and start it, so nothing has to be done
25
+ ahead of time. `cn runtime update` and `cn runtime start` do those steps by hand, `cn info`
26
+ shows the state of the setup.
27
+
26
28
  `cn project new` offers four templates:
27
29
 
28
30
  | Template | What you get |
@@ -57,6 +59,7 @@ Run `cn docs` for the reference of each of these, matching the installed CLI ver
57
59
  | `cn generate ...` | derived files (db schema, openapi, i18n classes) and scaffolds (apps, model processes) |
58
60
  | `cn react dev` | Vite dev server with hot reload for an app |
59
61
  | `cn project package` / `deploy` | ship a project as a zip to a runtime |
62
+ | `cn project bump` | raise the version of the project (patch, minor, major or x.y.z) |
60
63
 
61
64
  Run `cn --help` (or `cn <command> --help`) for the complete list.
62
65
 
@@ -65,8 +68,14 @@ Run `cn --help` (or `cn <command> --help`) for the complete list.
65
68
  Every generated project carries an `AGENTS.md` (and a `CLAUDE.md` importing it) telling coding
66
69
  agents how to work on it: the rules of the generated files, and where the reference lives —
67
70
  `cn docs <topic>` (project, tables, processes, queries, apps, i18n), so the documentation always
68
- matches the installed CLI. `cn validate`, `cn project inspect`, `cn runtime info` and `cn docs`
69
- take `--json` for machine-readable output.
71
+ matches the installed CLI.
72
+
73
+ The CLI is made to be scripted: stdout carries the results only, the progress and the messages
74
+ go to stderr, and a failure is an exit code 1 with one message. `--json` gives a machine-readable
75
+ result on `cn info`, `cn docs`, `cn validate`, `cn runtime info` / `latest`, `cn project inspect` /
76
+ `compile` / `package` / `deploy` / `refresh` / `test` / `bump` and every `cn generate` command.
77
+ The global `--quiet` drops the progress, `CODENOTCH_DEBUG=1` prints the stack trace of a failure,
78
+ and `cn completion bash|zsh|powershell` prints the completion script of the shell.
70
79
 
71
80
  ## Contributing
72
81
 
@@ -16,6 +16,7 @@ function registerGenerateEmptyApp(generate) {
16
16
  .option('-n, --name <name>', 'name of the app, used as file name and React component name (asked when omitted)')
17
17
  .option('-p, --path <path>', 'directory in which the app is generated', process.cwd())
18
18
  .option('--no-manifest', 'do not generate the *.manifest.json next to the app')
19
+ .option('--json', 'output the result in JSON format')
19
20
  .addHelpText('after', `
20
21
  Examples:
21
22
  $ cn generate app asks for the name, writes in the current folder
@@ -25,32 +26,39 @@ Examples:
25
26
  .action(async (options) => {
26
27
  const appName = (options.name ?? await ConsoleUtils_1.default.ask('Name of the app?')).trim();
27
28
  if (appName === '') {
28
- console.error(chalk_1.default.yellow(`Aborted: no app name given (use -n <name>).`));
29
- process.exitCode = 1;
29
+ (0, shared_1.abortGeneration)(options.json, `no app name given (use -n <name>).`);
30
30
  return;
31
31
  }
32
32
  if (!TemplateUtils_1.default.isValidAppName(appName)) {
33
- console.error(chalk_1.default.yellow(`Aborted: '${appName}' is not a valid app name (letters, digits, '_' and '$', not starting with a digit).`));
34
- process.exitCode = 1;
33
+ (0, shared_1.abortGeneration)(options.json, `'${appName}' is not a valid app name (letters, digits, '_' and '$', not starting with a digit).`);
35
34
  return;
36
35
  }
37
36
  const targetFolder = (0, path_1.resolve)(options.path);
38
37
  const filePath = (0, path_1.join)(targetFolder, `${appName}.tsx`);
38
+ const written = [];
39
39
  if (!await (0, shared_1.writeGeneratedFile)(filePath, TemplateUtils_1.default.createAppTsx(appName))) {
40
- process.exitCode = 1;
40
+ (0, shared_1.abortGeneration)(options.json, `'${filePath}' was not written.`, written);
41
41
  return;
42
42
  }
43
- ConsoleUtils_1.default.check(`${appName}.tsx generated at ${chalk_1.default.green(filePath)}`);
44
- if (!options.manifest) {
45
- return;
43
+ written.push(filePath);
44
+ if (!options.json) {
45
+ ConsoleUtils_1.default.check(`${appName}.tsx generated at ${chalk_1.default.green(filePath)}`);
46
46
  }
47
- const manifestPath = (0, path_1.join)(targetFolder, `${appName}.manifest.json`);
48
- const manifestContent = JSON.stringify(TemplateUtils_1.default.createAppManifest(appName), null, 4);
49
- if (!await (0, shared_1.writeGeneratedFile)(manifestPath, manifestContent)) {
50
- process.exitCode = 1;
51
- return;
47
+ if (options.manifest) {
48
+ const manifestPath = (0, path_1.join)(targetFolder, `${appName}.manifest.json`);
49
+ const manifestContent = JSON.stringify(TemplateUtils_1.default.createAppManifest(appName), null, 4);
50
+ if (!await (0, shared_1.writeGeneratedFile)(manifestPath, manifestContent)) {
51
+ (0, shared_1.abortGeneration)(options.json, `'${manifestPath}' was not written.`, written);
52
+ return;
53
+ }
54
+ written.push(manifestPath);
55
+ if (!options.json) {
56
+ ConsoleUtils_1.default.check(`${appName}.manifest.json generated at ${chalk_1.default.green(manifestPath)}`);
57
+ }
58
+ }
59
+ if (options.json) {
60
+ ConsoleUtils_1.default.json({ written });
52
61
  }
53
- ConsoleUtils_1.default.check(`${appName}.manifest.json generated at ${chalk_1.default.green(manifestPath)}`);
54
62
  });
55
63
  }
56
64
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":";;;;;AAOA,4DAoDC;AA1DD,kDAA0B;AAC1B,+BAAqC;AACrC,4EAAoD;AACpD,8EAAsD;AACtD,qCAA8C;AAE9C,SAAgB,wBAAwB,CAAC,QAAiB;IACtD,QAAQ;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,uEAAuE,CAAC;SACpF,MAAM,CAAC,mBAAmB,EAAE,kFAAkF,CAAC;SAC/G,MAAM,CAAC,mBAAmB,EAAE,yCAAyC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACrF,MAAM,CAAC,eAAe,EAAE,qDAAqD,CAAC;SAC9E,WAAW,CAAC,OAAO,EAAE;;;;;CAK7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAA2D,EAAE,EAAE;QAE1E,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,sBAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpF,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,uBAAa,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,aAAa,OAAO,sFAAsF,CAAC,CAAC,CAAC;YACxI,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,YAAY,EAAE,GAAG,OAAO,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,IAAA,2BAAkB,EAAC,QAAQ,EAAE,uBAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,GAAG,OAAO,qBAAqB,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,YAAY,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE1F,IAAI,CAAC,MAAM,IAAA,2BAAkB,EAAC,YAAY,EAAE,eAAe,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,GAAG,OAAO,+BAA+B,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ function registerGenerateAppManifest(generate) {
17
17
  .command('appmanifest')
18
18
  .description('Generate the *.manifest.json of an existing Codenotch app. Without -f, the components missing one are proposed.')
19
19
  .option('-f, --file-path <path>', 'path to the *.tsx/*.jsx file (asked when omitted)')
20
+ .option('--json', 'output the result in JSON format')
20
21
  .addHelpText('after', `
21
22
  Examples:
22
23
  $ cn generate appmanifest proposes the apps of the project missing a manifest
@@ -27,17 +28,28 @@ Examples:
27
28
  ? await (0, shared_1.resolveInputFile)(options.filePath, ['.tsx', '.jsx'])
28
29
  : await pickComponentWithoutManifest();
29
30
  if (filePath === null) {
31
+ if (options.json) {
32
+ ConsoleUtils_1.default.json({ written: [], error: 'no app to generate a manifest for' });
33
+ }
30
34
  process.exitCode = 1;
31
35
  return;
32
36
  }
33
37
  if (filePath === undefined) {
34
- return; // nothing to do, already reported
38
+ // Nothing to do, already reported
39
+ if (options.json) {
40
+ ConsoleUtils_1.default.json({ written: [] });
41
+ }
42
+ return;
35
43
  }
36
44
  const appName = FileUtils_1.default.getNameFromPath(filePath, true);
37
45
  const targetPath = (0, path_1.join)((0, path_1.dirname)(filePath), `${appName}.manifest.json`);
38
46
  const content = JSON.stringify(TemplateUtils_1.default.createAppManifest(appName), null, 4);
39
47
  if (!await (0, shared_1.writeGeneratedFile)(targetPath, content)) {
40
- process.exitCode = 1;
48
+ (0, shared_1.abortGeneration)(options.json, `'${targetPath}' was not written.`);
49
+ return;
50
+ }
51
+ if (options.json) {
52
+ ConsoleUtils_1.default.json({ written: [targetPath] });
41
53
  return;
42
54
  }
43
55
  ConsoleUtils_1.default.check(`App manifest generated at ${chalk_1.default.green(targetPath)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"appmanifest.js","sourceRoot":"","sources":["../../../src/commands/generate/appmanifest.ts"],"names":[],"mappings":";;;;;AAUA,kEAmCC;AA5CD,kDAA0B;AAC1B,2BAA6C;AAC7C,+BAA+C;AAC/C,sEAA8C;AAC9C,4EAAoD;AACpD,wEAAgD;AAChD,8EAAsD;AACtD,qCAAgE;AAEhE,SAAgB,2BAA2B,CAAC,QAAiB;IACzD,QAAQ;SACH,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,iHAAiH,CAAC;SAC9H,MAAM,CAAC,wBAAwB,EAAE,mDAAmD,CAAC;SACrF,WAAW,CAAC,OAAO,EAAE;;;;CAI7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAA8B,EAAE,EAAE;QAE7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC3C,CAAC,CAAC,MAAM,IAAA,yBAAgB,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5D,CAAC,CAAC,MAAM,4BAA4B,EAAE,CAAC;QAE3C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,kCAAkC;QAC9C,CAAC;QAED,MAAM,OAAO,GAAG,mBAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAElF,IAAI,CAAC,MAAM,IAAA,2BAAkB,EAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,6BAA6B,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,4BAA4B;IAEvC,MAAM,aAAa,GAAG,oBAAU,CAAC,aAAa,EAAE,CAAC;IACjD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,6CAA6C,OAAO,CAAC,GAAG,EAAE,6CAA6C,CAAC,CAAC,CAAC;QACrI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,gBAAW,EAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACvF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACzE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,UAAU,CAAC,EAAE,GAAG,mBAAS,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/G,IAAI,MAAM,mBAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,sBAAY,CAAC,KAAK,CAAC,iBAAiB,QAAQ,6BAA6B,CAAC,CAAC;QAC3E,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,SAAS,IAAA,eAAQ,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC9E,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,sBAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,EAAE,IAAA,eAAQ,EAAC,aAAa,EAAE,UAAU,CAAC;QACzC,WAAW,EAAE,EAAE;KAClB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"appmanifest.js","sourceRoot":"","sources":["../../../src/commands/generate/appmanifest.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ function registerGenerateDbContext(generate) {
15
15
  .command('dbcontext')
16
16
  .description('Scan the tables and documents of a project and generate its db-schema.xml + db-schema.d.ts')
17
17
  .requiredOption('-f, --project-path <path>', 'path to the project')
18
+ .option('--json', 'output the result in JSON format')
18
19
  .addHelpText('after', `
19
20
  Examples:
20
21
  $ cn generate dbcontext -f . tables of the current folder, schema written next to them
@@ -22,11 +23,17 @@ Examples:
22
23
  .action(async (options) => {
23
24
  const projectPath = (0, path_1.resolve)(options.projectPath);
24
25
  if (await FileUtils_1.default.exists(projectPath) === false) {
25
- console.error(chalk_1.default.yellow(`Aborted: '${projectPath}' not exists.`));
26
- process.exitCode = 1;
26
+ (0, shared_1.abortGeneration)(options.json, `'${projectPath}' not exists.`);
27
27
  return;
28
28
  }
29
29
  const result = await ProjectGeneratorUtils_1.default.generateDbContext(projectPath);
30
+ if (options.json) {
31
+ ConsoleUtils_1.default.json(result);
32
+ if (result.error !== undefined) {
33
+ process.exitCode = 1;
34
+ }
35
+ return;
36
+ }
30
37
  if (!(0, shared_1.reportGeneration)(result)) {
31
38
  return;
32
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dbcontext.js","sourceRoot":"","sources":["../../../src/commands/generate/dbcontext.ts"],"names":[],"mappings":";;;;;AAQA,8DA0BC;AAjCD,kDAA0B;AAC1B,+BAA+B;AAC/B,sEAA8C;AAC9C,4EAAoD;AACpD,8FAAsE;AACtE,qCAA4C;AAE5C,SAAgB,yBAAyB,CAAC,QAAiB;IACvD,QAAQ;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,4FAA4F,CAAC;SACzG,cAAc,CAAC,2BAA2B,EAAE,qBAAqB,CAAC;SAClE,WAAW,CAAC,OAAO,EAAE;;;CAG7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QAE/C,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAI,MAAM,mBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,aAAa,WAAW,eAAe,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAA,yBAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,iBAAiB,MAAM,CAAC,aAAa,2CAA2C,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnM,CAAC,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"dbcontext.js","sourceRoot":"","sources":["../../../src/commands/generate/dbcontext.ts"],"names":[],"mappings":";;;;;AAQA,8DAiCC;AAxCD,kDAA0B;AAC1B,+BAA+B;AAC/B,sEAA8C;AAC9C,4EAAoD;AACpD,8FAAsE;AACtE,qCAA6D;AAE7D,SAAgB,yBAAyB,CAAC,QAAiB;IACvD,QAAQ;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,4FAA4F,CAAC;SACzG,cAAc,CAAC,2BAA2B,EAAE,qBAAqB,CAAC;SAClE,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,WAAW,CAAC,OAAO,EAAE;;;CAG7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAAgD,EAAE,EAAE;QAE/D,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAI,MAAM,mBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;YAChD,IAAA,wBAAe,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,eAAe,CAAC,CAAC;YAC9D,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,sBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,OAAO;QACX,CAAC;QACD,IAAI,CAAC,IAAA,yBAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,iBAAiB,MAAM,CAAC,aAAa,2CAA2C,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnM,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -16,6 +16,7 @@ function registerGenerateI18nTs(generate) {
16
16
  .command('i18n')
17
17
  .description('Transform a *.i18n.csv into an importable i18n ts (generated next to the csv). Without -f, the files of the project are proposed.')
18
18
  .option('-f, --file-path <path>', 'path to the *.i18n.csv file (asked when omitted)')
19
+ .option('--json', 'output the result in JSON format (one entry per csv file)')
19
20
  .addHelpText('after', `
20
21
  Examples:
21
22
  $ cn generate i18n proposes the files of the project, 'All of them' by default
@@ -24,16 +25,30 @@ Examples:
24
25
  .action(async (options) => {
25
26
  const targets = await resolveTargets(options.filePath);
26
27
  if (targets === null) {
28
+ if (options.json) {
29
+ ConsoleUtils_1.default.json([]);
30
+ }
27
31
  process.exitCode = 1;
28
32
  return;
29
33
  }
34
+ const results = [];
30
35
  for (const csvPath of targets) {
31
36
  const result = await ProjectGeneratorUtils_1.default.generateI18n(csvPath);
37
+ results.push({ source: csvPath, ...result });
38
+ if (options.json) {
39
+ if (result.error !== undefined) {
40
+ process.exitCode = 1;
41
+ }
42
+ continue;
43
+ }
32
44
  if (!(0, shared_1.reportGeneration)(result)) {
33
45
  continue;
34
46
  }
35
47
  ConsoleUtils_1.default.check(`${result.keyCount} key(s) generated at ${chalk_1.default.green(result.written[0])}`);
36
48
  }
49
+ if (options.json) {
50
+ ConsoleUtils_1.default.json(results);
51
+ }
37
52
  });
38
53
  }
39
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/commands/generate/i18n.ts"],"names":[],"mappings":";;;;;AASA,wDA0BC;AAlCD,kDAA0B;AAC1B,+BAAgC;AAChC,4EAAoD;AACpD,wEAAgD;AAChD,4EAAoD;AACpD,8FAAsE;AACtE,qCAA8D;AAE9D,SAAgB,sBAAsB,CAAC,QAAiB;IACpD,QAAQ;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mIAAmI,CAAC;SAChJ,MAAM,CAAC,wBAAwB,EAAE,kDAAkD,CAAC;SACpF,WAAW,CAAC,OAAO,EAAE;;;;CAI7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAA8B,EAAE,EAAE;QAE7C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,CAAC,IAAA,yBAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YACD,sBAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,wBAAwB,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,QAA4B;IAEtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAgB,EAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACjE,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,aAAa,GAAG,oBAAU,CAAC,aAAa,EAAE,CAAC;IACjD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,6CAA6C,OAAO,CAAC,GAAG,EAAE,6CAA6C,CAAC,CAAC,CAAC;QACrI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,sBAAY,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,sBAAY,CAAC,YAAY,CAAC,0BAA0B,aAAa,yBAAyB,CAAC,CAAC;QAC5F,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,OAAO,GAAG;QACZ,gFAAgF;QAChF,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,UAAU,EAAE;QAC/D,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,IAAI,EAAE,IAAA,eAAQ,EAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;YAC5C,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC3E,CAAC,CAAC;KACN,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,sBAAY,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/E,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/commands/generate/i18n.ts"],"names":[],"mappings":"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"}
@@ -14,17 +14,22 @@ function registerGenerateProjectManifest(generate) {
14
14
  generate
15
15
  .command('manifest')
16
16
  .description('Generate the manifest.json of a Codenotch project in the current directory')
17
+ .option('--json', 'output the result in JSON format')
17
18
  .addHelpText('after', `
18
19
  Examples:
19
20
  $ cn generate manifest project and service names derive from the current folder name
20
21
  `)
21
- .action(async () => {
22
+ .action(async (options) => {
22
23
  const projectPath = process.cwd();
23
24
  const filePath = (0, path_1.join)(projectPath, 'manifest.json');
24
25
  // Named after the folder, like 'cn project new' does: an empty name would fail validation
25
26
  const manifest = ManifestUtils_1.default.createManifest(FileUtils_1.default.getNameFromPath(projectPath));
26
27
  if (!await (0, shared_1.writeGeneratedFile)(filePath, ManifestUtils_1.default.serialize(manifest))) {
27
- process.exitCode = 1;
28
+ (0, shared_1.abortGeneration)(options.json, `'${filePath}' was not written.`);
29
+ return;
30
+ }
31
+ if (options.json) {
32
+ ConsoleUtils_1.default.json({ written: [filePath] });
28
33
  return;
29
34
  }
30
35
  ConsoleUtils_1.default.check(`manifest.json generated at ${chalk_1.default.green(filePath)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/commands/generate/manifest.ts"],"names":[],"mappings":";;;;;AAQA,0EAuBC;AA9BD,kDAA0B;AAC1B,+BAA4B;AAC5B,sEAA8C;AAC9C,4EAAoD;AACpD,8EAAsD;AACtD,qCAA8C;AAE9C,SAAgB,+BAA+B,CAAC,QAAiB;IAC7D,QAAQ;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4EAA4E,CAAC;SACzF,WAAW,CAAC,OAAO,EAAE;;;CAG7B,CAAC;SACO,MAAM,CAAC,KAAK,IAAI,EAAE;QAEf,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAEpD,0FAA0F;QAC1F,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,mBAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;QAEtF,IAAI,CAAC,MAAM,IAAA,2BAAkB,EAAC,QAAQ,EAAE,uBAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,8BAA8B,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/commands/generate/manifest.ts"],"names":[],"mappings":";;;;;AAQA,0EA4BC;AAnCD,kDAA0B;AAC1B,+BAA4B;AAC5B,sEAA8C;AAC9C,4EAAoD;AACpD,8EAAsD;AACtD,qCAA+D;AAE/D,SAAgB,+BAA+B,CAAC,QAAiB;IAC7D,QAAQ;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4EAA4E,CAAC;SACzF,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,WAAW,CAAC,OAAO,EAAE;;;CAG7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAE1C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAEpD,0FAA0F;QAC1F,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,mBAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;QAEtF,IAAI,CAAC,MAAM,IAAA,2BAAkB,EAAC,QAAQ,EAAE,uBAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACzE,IAAA,wBAAe,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,QAAQ,oBAAoB,CAAC,CAAC;YAChE,OAAO;QACX,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,sBAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO;QACX,CAAC;QACD,sBAAY,CAAC,KAAK,CAAC,8BAA8B,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -15,6 +15,7 @@ function registerGenerateOpenApi(generate) {
15
15
  .command('openapi')
16
16
  .description('Scan the processes of a project and generate its openapi.json from the endpoints they declare')
17
17
  .requiredOption('-f, --project-path <path>', 'path to the project')
18
+ .option('--json', 'output the result in JSON format')
18
19
  .addHelpText('after', `
19
20
  Examples:
20
21
  $ cn generate openapi -f . endpoints of the current folder, written to ./openapi.json
@@ -22,11 +23,17 @@ Examples:
22
23
  .action(async (options) => {
23
24
  const projectPath = (0, path_1.resolve)(options.projectPath);
24
25
  if (await FileUtils_1.default.exists(projectPath) === false) {
25
- console.error(chalk_1.default.yellow(`Aborted: '${projectPath}' not exists.`));
26
- process.exitCode = 1;
26
+ (0, shared_1.abortGeneration)(options.json, `'${projectPath}' not exists.`);
27
27
  return;
28
28
  }
29
29
  const result = await ProjectGeneratorUtils_1.default.generateOpenApi(projectPath);
30
+ if (options.json) {
31
+ ConsoleUtils_1.default.json(result);
32
+ if (result.error !== undefined) {
33
+ process.exitCode = 1;
34
+ }
35
+ return;
36
+ }
30
37
  if (!(0, shared_1.reportGeneration)(result)) {
31
38
  return;
32
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/commands/generate/openapi.ts"],"names":[],"mappings":";;;;;AAQA,0DA0BC;AAjCD,kDAA0B;AAC1B,+BAA+B;AAC/B,sEAA8C;AAC9C,4EAAoD;AACpD,8FAAsE;AACtE,qCAA4C;AAE5C,SAAgB,uBAAuB,CAAC,QAAiB;IACrD,QAAQ;SACH,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+FAA+F,CAAC;SAC5G,cAAc,CAAC,2BAA2B,EAAE,qBAAqB,CAAC;SAClE,WAAW,CAAC,OAAO,EAAE;;;CAG7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QAE/C,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAI,MAAM,mBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,aAAa,WAAW,eAAe,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC,IAAA,yBAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,aAAa,2BAA2B,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/commands/generate/openapi.ts"],"names":[],"mappings":";;;;;AAQA,0DAiCC;AAxCD,kDAA0B;AAC1B,+BAA+B;AAC/B,sEAA8C;AAC9C,4EAAoD;AACpD,8FAAsE;AACtE,qCAA6D;AAE7D,SAAgB,uBAAuB,CAAC,QAAiB;IACrD,QAAQ;SACH,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+FAA+F,CAAC;SAC5G,cAAc,CAAC,2BAA2B,EAAE,qBAAqB,CAAC;SAClE,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,WAAW,CAAC,OAAO,EAAE;;;CAG7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAAgD,EAAE,EAAE;QAE/D,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAI,MAAM,mBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;YAChD,IAAA,wBAAe,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,WAAW,eAAe,CAAC,CAAC;YAC9D,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,sBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,OAAO;QACX,CAAC;QACD,IAAI,CAAC,IAAA,yBAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,aAAa,2BAA2B,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -15,11 +15,12 @@ function registerGeneratePackageJson(generate) {
15
15
  generate
16
16
  .command('pkg')
17
17
  .description('Generate the package.json of a Codenotch project in the current directory')
18
+ .option('--json', 'output the result in JSON format')
18
19
  .addHelpText('after', `
19
20
  Examples:
20
21
  $ cn generate pkg package named after the serviceName of ./manifest.json
21
22
  `)
22
- .action(async () => {
23
+ .action(async (options) => {
23
24
  const projectPath = process.cwd();
24
25
  const filePath = (0, path_1.join)(projectPath, 'package.json');
25
26
  // Name the package after the project service name when the manifest is available, after the folder otherwise
@@ -29,7 +30,11 @@ Examples:
29
30
  const name = manifest?.serviceName ?? ManifestUtils_1.default.toServiceName(FileUtils_1.default.getNameFromPath(projectPath));
30
31
  const pkg = TemplateUtils_1.default.createPackageJson(name);
31
32
  if (!await (0, shared_1.writeGeneratedFile)(filePath, JSON.stringify(pkg, null, 4))) {
32
- process.exitCode = 1;
33
+ (0, shared_1.abortGeneration)(options.json, `'${filePath}' was not written.`);
34
+ return;
35
+ }
36
+ if (options.json) {
37
+ ConsoleUtils_1.default.json({ written: [filePath] });
33
38
  return;
34
39
  }
35
40
  ConsoleUtils_1.default.check(`package.json generated at ${chalk_1.default.green(filePath)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/commands/generate/pkg.ts"],"names":[],"mappings":";;;;;AAUA,kEA4BC;AArCD,kDAA0B;AAC1B,+BAA4B;AAE5B,sEAA8C;AAC9C,4EAAoD;AACpD,8EAAsD;AACtD,8EAAsD;AACtD,qCAA8C;AAE9C,SAAgB,2BAA2B,CAAC,QAAiB;IACzD,QAAQ;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,2EAA2E,CAAC;SACxF,WAAW,CAAC,OAAO,EAAE;;;CAG7B,CAAC;SACO,MAAM,CAAC,KAAK,IAAI,EAAE;QAEf,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEnD,6GAA6G;QAC7G,MAAM,QAAQ,GAAG,MAAM,mBAAS,CAAC,MAAM,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACvE,CAAC,CAAC,MAAM,mBAAS,CAAC,iBAAiB,CAA4B,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAClG,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,IAAI,GAAG,QAAQ,EAAE,WAAW,IAAI,uBAAa,CAAC,aAAa,CAAC,mBAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;QAE1G,MAAM,GAAG,GAAG,uBAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,IAAA,2BAAkB,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,sBAAY,CAAC,KAAK,CAAC,6BAA6B,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/commands/generate/pkg.ts"],"names":[],"mappings":";;;;;AAUA,kEAiCC;AA1CD,kDAA0B;AAC1B,+BAA4B;AAE5B,sEAA8C;AAC9C,4EAAoD;AACpD,8EAAsD;AACtD,8EAAsD;AACtD,qCAA+D;AAE/D,SAAgB,2BAA2B,CAAC,QAAiB;IACzD,QAAQ;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,2EAA2E,CAAC;SACxF,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,WAAW,CAAC,OAAO,EAAE;;;CAG7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAE1C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEnD,6GAA6G;QAC7G,MAAM,QAAQ,GAAG,MAAM,mBAAS,CAAC,MAAM,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACvE,CAAC,CAAC,MAAM,mBAAS,CAAC,iBAAiB,CAA4B,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAClG,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,IAAI,GAAG,QAAQ,EAAE,WAAW,IAAI,uBAAa,CAAC,aAAa,CAAC,mBAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;QAE1G,MAAM,GAAG,GAAG,uBAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,IAAA,2BAAkB,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,IAAA,wBAAe,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,QAAQ,oBAAoB,CAAC,CAAC;YAChE,OAAO;QACX,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,sBAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO;QACX,CAAC;QACD,sBAAY,CAAC,KAAK,CAAC,6BAA6B,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -53,6 +53,7 @@ function registerGenerateProcess(generate) {
53
53
  .option('-m, --model <name>', `model to generate: ${ProcessModelUtils_1.PROCESS_MODELS.map(model => model.name).join(', ')} (asked when omitted)`)
54
54
  .option('-t, --table <name>', 'name of the table the process works on (asked when omitted)')
55
55
  .option('-p, --path <path>', "directory in which the process is generated (default: the 'processes' folder of the project)")
56
+ .option('--json', 'output the result in JSON format')
56
57
  .addHelpText('after', `
57
58
  Examples:
58
59
  $ cn generate process pick the model and the table on menus
@@ -62,18 +63,17 @@ Examples:
62
63
  .action(async (options) => {
63
64
  const workspacePath = BuildUtils_1.default.findWorkspace();
64
65
  if (workspacePath === undefined) {
65
- console.error(chalk_1.default.yellow(`Aborted: no Codenotch project found from '${process.cwd()}' (no manifest.json in the parent folders).`));
66
- process.exitCode = 1;
66
+ (0, shared_1.abortGeneration)(options.json, `no Codenotch project found from '${process.cwd()}' (no manifest.json in the parent folders).`);
67
67
  return;
68
68
  }
69
69
  const model = await pickModel(options.model);
70
70
  if (model === undefined) {
71
- process.exitCode = 1;
71
+ (0, shared_1.abortGeneration)(options.json, `no model to generate.`);
72
72
  return;
73
73
  }
74
74
  const table = await pickTable(workspacePath, options.table);
75
75
  if (table === undefined) {
76
- process.exitCode = 1;
76
+ (0, shared_1.abortGeneration)(options.json, `no table to work on.`);
77
77
  return;
78
78
  }
79
79
  const targetFolder = options.path !== undefined ? (0, path_1.resolve)(options.path) : (0, path_1.join)(workspacePath, 'processes');
@@ -83,27 +83,35 @@ Examples:
83
83
  ConsoleUtils_1.default.checkWarning(warning);
84
84
  }
85
85
  if (built.content === undefined) {
86
- console.error(chalk_1.default.yellow(`Aborted: ${built.error}`));
87
- process.exitCode = 1;
86
+ (0, shared_1.abortGeneration)(options.json, built.error ?? 'the process could not be generated.');
88
87
  return;
89
88
  }
89
+ const written = [];
90
90
  if (!await (0, shared_1.writeGeneratedFile)(targetPath, built.content)) {
91
- process.exitCode = 1;
91
+ (0, shared_1.abortGeneration)(options.json, `'${targetPath}' was not written.`, written);
92
92
  return;
93
93
  }
94
- ConsoleUtils_1.default.check(`'${model}' process for '${table.name}' generated at ${chalk_1.default.green(targetPath)}`);
95
- if (model !== 'api') {
96
- return;
94
+ written.push(targetPath);
95
+ if (!options.json) {
96
+ ConsoleUtils_1.default.check(`'${model}' process for '${table.name}' generated at ${chalk_1.default.green(targetPath)}`);
97
97
  }
98
- // The list endpoint reads its rows through a project query, generated next to the others
99
- const manifest = await FileUtils_1.default.readJsonFileAsync((0, path_1.join)(workspacePath, 'manifest.json'));
100
- const serviceName = manifest?.serviceName ?? ManifestUtils_1.default.toServiceName(FileUtils_1.default.getNameFromPath(workspacePath));
101
- const queryPath = (0, path_1.join)(workspacePath, 'queries', ProcessModelUtils_1.default.getQueryFileName(table));
102
- if (!await (0, shared_1.writeGeneratedFile)(queryPath, ProcessModelUtils_1.default.createAllRowsQuery(table, serviceName))) {
103
- process.exitCode = 1;
104
- return;
98
+ if (model === 'api') {
99
+ // The list endpoint reads its rows through a project query, generated next to the others
100
+ const manifest = await FileUtils_1.default.readJsonFileAsync((0, path_1.join)(workspacePath, 'manifest.json'));
101
+ const serviceName = manifest?.serviceName ?? ManifestUtils_1.default.toServiceName(FileUtils_1.default.getNameFromPath(workspacePath));
102
+ const queryPath = (0, path_1.join)(workspacePath, 'queries', ProcessModelUtils_1.default.getQueryFileName(table));
103
+ if (!await (0, shared_1.writeGeneratedFile)(queryPath, ProcessModelUtils_1.default.createAllRowsQuery(table, serviceName))) {
104
+ (0, shared_1.abortGeneration)(options.json, `'${queryPath}' was not written.`, written);
105
+ return;
106
+ }
107
+ written.push(queryPath);
108
+ if (!options.json) {
109
+ ConsoleUtils_1.default.check(`Query of the list endpoint generated at ${chalk_1.default.green(queryPath)}`);
110
+ }
111
+ }
112
+ if (options.json) {
113
+ ConsoleUtils_1.default.json({ written });
105
114
  }
106
- ConsoleUtils_1.default.check(`Query of the list endpoint generated at ${chalk_1.default.green(queryPath)}`);
107
115
  });
108
116
  }
109
117
  /** The model to generate: the one of -m when valid, otherwise the one picked on the terminal */
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/commands/generate/process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/commands/generate/process.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@ import { IGenerationResult } from '../../utils/ProjectGeneratorUtils';
5
5
  * @param extensions accepted lowercase extensions, e.g. ['.tsx', '.jsx']
6
6
  */
7
7
  export declare function resolveInputFile(inputPath: string, extensions: string[]): Promise<string | null>;
8
+ /**
9
+ * Ends a generation that cannot go on: the reason on stderr, the files written so far and the
10
+ * reason as JSON on stdout under --json, and the exit code of a failure.
11
+ */
12
+ export declare function abortGeneration(json: boolean | undefined, message: string, written?: string[]): void;
8
13
  /**
9
14
  * Prints the warnings of a generation, then the reason it was skipped or failed when it was.
10
15
  * Returns true when something was written and the command can report it.
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.resolveInputFile = resolveInputFile;
7
+ exports.abortGeneration = abortGeneration;
7
8
  exports.reportGeneration = reportGeneration;
8
9
  exports.writeGeneratedFile = writeGeneratedFile;
9
10
  const chalk_1 = __importDefault(require("chalk"));
@@ -35,6 +36,17 @@ async function resolveInputFile(inputPath, extensions) {
35
36
  }
36
37
  return filePath;
37
38
  }
39
+ /**
40
+ * Ends a generation that cannot go on: the reason on stderr, the files written so far and the
41
+ * reason as JSON on stdout under --json, and the exit code of a failure.
42
+ */
43
+ function abortGeneration(json, message, written = []) {
44
+ console.error(chalk_1.default.yellow(`Aborted: ${message}`));
45
+ if (json) {
46
+ ConsoleUtils_1.default.json({ written, error: message });
47
+ }
48
+ process.exitCode = 1;
49
+ }
38
50
  /**
39
51
  * Prints the warnings of a generation, then the reason it was skipped or failed when it was.
40
52
  * Returns true when something was written and the command can report it.
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/generate/shared.ts"],"names":[],"mappings":";;;;;AAYA,4CAuBC;AAMD,4CAkBC;AAMD,gDAUC;AA3ED,kDAA0B;AAC1B,+BAA+B;AAC/B,2BAA+B;AAC/B,sEAA8C;AAC9C,4EAAoD;AAGpD;;;;GAIG;AACI,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,UAAoB;IAE1E,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,SAAS,CAAC,CAAC;IAEpC,kBAAkB;IAClB,IAAI,MAAM,mBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,aAAa,QAAQ,eAAe,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAA,cAAS,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,aAAa,QAAQ,mBAAmB,CAAC,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;IAClB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACrG,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,aAAa,QAAQ,cAAc,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,MAAyB;IAEtD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,sBAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,sBAAY,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAEtE,IAAI,MAAM,mBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,sBAAY,CAAC,OAAO,CAAC,IAAI,QAAQ,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACnG,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,mBAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/generate/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerBump(project: Command): void;