@codenotch/codenotch.cli 1.0.40 → 1.0.42
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/README.md +78 -28
- package/dist/commands/generate/app.js +6 -0
- package/dist/commands/generate/app.js.map +1 -1
- package/dist/commands/generate/appmanifest.js +5 -0
- package/dist/commands/generate/appmanifest.js.map +1 -1
- package/dist/commands/generate/dbcontext.js +6 -2
- package/dist/commands/generate/dbcontext.js.map +1 -1
- package/dist/commands/generate/i18n.js +5 -0
- package/dist/commands/generate/i18n.js.map +1 -1
- package/dist/commands/generate/index.js +8 -1
- package/dist/commands/generate/index.js.map +1 -1
- package/dist/commands/generate/manifest.js +4 -0
- package/dist/commands/generate/manifest.js.map +1 -1
- package/dist/commands/generate/openapi.js +5 -1
- package/dist/commands/generate/openapi.js.map +1 -1
- package/dist/commands/generate/pkg.js +4 -0
- package/dist/commands/generate/pkg.js.map +1 -1
- package/dist/commands/generate/process.js +6 -0
- package/dist/commands/generate/process.js.map +1 -1
- package/dist/commands/project/deploy.js +9 -2
- package/dist/commands/project/deploy.js.map +1 -1
- package/dist/commands/project/index.js +8 -1
- package/dist/commands/project/index.js.map +1 -1
- package/dist/commands/project/inspect.js +65 -1
- package/dist/commands/project/inspect.js.map +1 -1
- package/dist/commands/project/new.js +7 -1
- package/dist/commands/project/new.js.map +1 -1
- package/dist/commands/project/remove.js +6 -1
- package/dist/commands/project/remove.js.map +1 -1
- package/dist/commands/react/build.js +22 -1
- package/dist/commands/react/build.js.map +1 -1
- package/dist/commands/react/clean.js +7 -2
- package/dist/commands/react/clean.js.map +1 -1
- package/dist/commands/react/dev.js +6 -0
- package/dist/commands/react/dev.js.map +1 -1
- package/dist/commands/react/index.js +11 -1
- package/dist/commands/react/index.js.map +1 -1
- package/dist/commands/react/package.d.ts +2 -0
- package/dist/commands/react/package.js +47 -0
- package/dist/commands/react/package.js.map +1 -0
- package/dist/commands/react/serve.js +5 -0
- package/dist/commands/react/serve.js.map +1 -1
- package/dist/commands/runtime/clear.js +5 -0
- package/dist/commands/runtime/clear.js.map +1 -1
- package/dist/commands/runtime/index.js +8 -1
- package/dist/commands/runtime/index.js.map +1 -1
- package/dist/commands/system/docs.d.ts +2 -0
- package/dist/commands/system/docs.js +57 -0
- package/dist/commands/system/docs.js.map +1 -0
- package/dist/commands/system/index.js +2 -0
- package/dist/commands/system/index.js.map +1 -1
- package/dist/commands/system/read.js +2 -1
- package/dist/commands/system/read.js.map +1 -1
- package/dist/commands/validation/files/ScriptValidator.js +9 -8
- package/dist/commands/validation/files/ScriptValidator.js.map +1 -1
- package/dist/commands/validation/validate.js +4 -13
- package/dist/commands/validation/validate.js.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/BuildUtils.d.ts +53 -5
- package/dist/utils/BuildUtils.js +233 -21
- package/dist/utils/BuildUtils.js.map +1 -1
- package/dist/utils/ConsoleUtils.d.ts +0 -2
- package/dist/utils/ConsoleUtils.js +0 -8
- package/dist/utils/ConsoleUtils.js.map +1 -1
- package/dist/utils/DbSchemaUtils.d.ts +16 -10
- package/dist/utils/DbSchemaUtils.js +82 -30
- package/dist/utils/DbSchemaUtils.js.map +1 -1
- package/dist/utils/DocsUtils.d.ts +34 -0
- package/dist/utils/DocsUtils.js +76 -0
- package/dist/utils/DocsUtils.js.map +1 -0
- package/dist/utils/OsUtils.d.ts +6 -0
- package/dist/utils/OsUtils.js +26 -0
- package/dist/utils/OsUtils.js.map +1 -1
- package/dist/utils/PackageUtils.d.ts +101 -0
- package/dist/utils/PackageUtils.js +538 -0
- package/dist/utils/PackageUtils.js.map +1 -0
- package/dist/utils/ProcessBundlerUtils.d.ts +103 -0
- package/dist/utils/ProcessBundlerUtils.js +336 -0
- package/dist/utils/ProcessBundlerUtils.js.map +1 -0
- package/dist/utils/ProjectCompilationUtils.d.ts +14 -2
- package/dist/utils/ProjectCompilationUtils.js +75 -3
- package/dist/utils/ProjectCompilationUtils.js.map +1 -1
- package/dist/utils/ProjectGeneratorUtils.d.ts +2 -1
- package/dist/utils/ProjectGeneratorUtils.js +21 -14
- package/dist/utils/ProjectGeneratorUtils.js.map +1 -1
- package/dist/utils/ProjectTemplates.d.ts +2 -2
- package/dist/utils/ProjectTemplates.js +12 -6
- package/dist/utils/ProjectTemplates.js.map +1 -1
- package/dist/utils/ProjectUtils.d.ts +18 -1
- package/dist/utils/ProjectUtils.js +33 -28
- package/dist/utils/ProjectUtils.js.map +1 -1
- package/dist/utils/ServeUtils.js +1 -2
- package/dist/utils/ServeUtils.js.map +1 -1
- package/dist/utils/TemplateUtils.d.ts +29 -0
- package/dist/utils/TemplateUtils.js +96 -3
- package/dist/utils/TemplateUtils.js.map +1 -1
- package/package.json +78 -71
- package/resources/docs/apps.md +109 -0
- package/resources/docs/i18n.md +51 -0
- package/resources/docs/processes.md +87 -0
- package/resources/docs/project.md +101 -0
- package/resources/docs/queries.md +54 -0
- package/resources/docs/tables.md +97 -0
package/README.md
CHANGED
|
@@ -1,28 +1,78 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
# Codenotch CLI
|
|
2
|
+
|
|
3
|
+
`cn`, the command line of the [Codenotch](https://codenotch.com/) platform: scaffold, run,
|
|
4
|
+
validate, package and deploy full-stack TypeScript projects — server-side processes, SQL tables,
|
|
5
|
+
NoSQL documents and React 19 apps — on a Codenotch runtime.
|
|
6
|
+
|
|
7
|
+
> The website is not up to date. The reference documentation ships with this CLI: run `cn docs`.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm install -g @codenotch/codenotch.cli
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Requires Node.js 20+. This gives you the `cn` command (long form: `codenotch-cli`).
|
|
16
|
+
|
|
17
|
+
## Getting started
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
cn runtime update # install (or update) the local Codenotch runtime
|
|
21
|
+
cn runtime start # start it
|
|
22
|
+
cn project new # create a project (asks for the template and the name)
|
|
23
|
+
cn project start # build, deploy and open it
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`cn project new` offers four templates:
|
|
27
|
+
|
|
28
|
+
| Template | What you get |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| `default` | Empty project with a routed React 19 app |
|
|
31
|
+
| `tailwind` | Same, styled with Tailwind CSS 4 (light and dark themes) |
|
|
32
|
+
| `todolist` | Complete todo list app: tables, CRUD processes, queries, translations |
|
|
33
|
+
| `api` | API only: a table and its endpoints, no app at all |
|
|
34
|
+
|
|
35
|
+
## What a project is
|
|
36
|
+
|
|
37
|
+
A Codenotch project is TypeScript end to end, and the CLI discovers what it declares by parsing
|
|
38
|
+
the sources — there is no registry to maintain:
|
|
39
|
+
|
|
40
|
+
- **processes** — `process({...})` declarations exposed as API endpoints, timers or signals;
|
|
41
|
+
- **tables and documents** — `defineEntity({...})` / `defineDocument({...})`, from which the
|
|
42
|
+
database schema and the typed data access are generated;
|
|
43
|
+
- **queries** — `.cnql` read queries the processes run;
|
|
44
|
+
- **apps** — React 19 components, built and dev-served with Vite;
|
|
45
|
+
- **translations** — `*.i18n.csv` files turned into typed classes.
|
|
46
|
+
|
|
47
|
+
Run `cn docs` for the reference of each of these, matching the installed CLI version.
|
|
48
|
+
|
|
49
|
+
## Everyday commands
|
|
50
|
+
|
|
51
|
+
| Command | What it does |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| `cn project start` | build, deploy and start the project on the local runtime |
|
|
54
|
+
| `cn project refresh` | after a change: sync the project with the running runtime |
|
|
55
|
+
| `cn project inspect` | parse the project and display everything the CLI discovered |
|
|
56
|
+
| `cn validate .` | hints, warnings and errors of every file |
|
|
57
|
+
| `cn generate ...` | derived files (db schema, openapi, i18n classes) and scaffolds (apps, model processes) |
|
|
58
|
+
| `cn react dev` | Vite dev server with hot reload for an app |
|
|
59
|
+
| `cn project package` / `deploy` | ship a project as a zip to a runtime |
|
|
60
|
+
|
|
61
|
+
Run `cn --help` (or `cn <command> --help`) for the complete list.
|
|
62
|
+
|
|
63
|
+
## Built for AI coding agents
|
|
64
|
+
|
|
65
|
+
Every generated project carries an `AGENTS.md` (and a `CLAUDE.md` importing it) telling coding
|
|
66
|
+
agents how to work on it: the rules of the generated files, and where the reference lives —
|
|
67
|
+
`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.
|
|
70
|
+
|
|
71
|
+
## Contributing
|
|
72
|
+
|
|
73
|
+
See [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) for the development setup and
|
|
74
|
+
[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the map of the code base.
|
|
75
|
+
|
|
76
|
+
## License
|
|
77
|
+
|
|
78
|
+
MIT
|
|
@@ -16,6 +16,12 @@ 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
|
+
.addHelpText('after', `
|
|
20
|
+
Examples:
|
|
21
|
+
$ cn generate app asks for the name, writes in the current folder
|
|
22
|
+
$ cn generate app -n Dashboard -p apps
|
|
23
|
+
$ cn generate app -n Widget --no-manifest the component alone
|
|
24
|
+
`)
|
|
19
25
|
.action(async (options) => {
|
|
20
26
|
const appName = (options.name ?? await ConsoleUtils_1.default.ask('Name of the app?')).trim();
|
|
21
27
|
if (appName === '') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":";;;;;AAOA,
|
|
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"}
|
|
@@ -17,6 +17,11 @@ 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
|
+
.addHelpText('after', `
|
|
21
|
+
Examples:
|
|
22
|
+
$ cn generate appmanifest proposes the apps of the project missing a manifest
|
|
23
|
+
$ cn generate appmanifest -f apps/Widget.tsx
|
|
24
|
+
`)
|
|
20
25
|
.action(async (options) => {
|
|
21
26
|
const filePath = options.filePath !== undefined
|
|
22
27
|
? await (0, shared_1.resolveInputFile)(options.filePath, ['.tsx', '.jsx'])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appmanifest.js","sourceRoot":"","sources":["../../../src/commands/generate/appmanifest.ts"],"names":[],"mappings":";;;;;AAUA,
|
|
1
|
+
{"version":3,"file":"appmanifest.js","sourceRoot":"","sources":["../../../src/commands/generate/appmanifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,12 @@ const shared_1 = require("./shared");
|
|
|
13
13
|
function registerGenerateDbContext(generate) {
|
|
14
14
|
generate
|
|
15
15
|
.command('dbcontext')
|
|
16
|
-
.description('
|
|
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
|
+
.addHelpText('after', `
|
|
19
|
+
Examples:
|
|
20
|
+
$ cn generate dbcontext -f . tables of the current folder, schema written next to them
|
|
21
|
+
`)
|
|
18
22
|
.action(async (options) => {
|
|
19
23
|
const projectPath = (0, path_1.resolve)(options.projectPath);
|
|
20
24
|
if (await FileUtils_1.default.exists(projectPath) === false) {
|
|
@@ -26,7 +30,7 @@ function registerGenerateDbContext(generate) {
|
|
|
26
30
|
if (!(0, shared_1.reportGeneration)(result)) {
|
|
27
31
|
return;
|
|
28
32
|
}
|
|
29
|
-
ConsoleUtils_1.default.check(`${result.tableCount} table(s) scanned, schema written to ${chalk_1.default.green(result.written[0])} and ${chalk_1.default.green(result.written[1])}`);
|
|
33
|
+
ConsoleUtils_1.default.check(`${result.tableCount} table(s) and ${result.documentCount} document(s) scanned, schema written to ${chalk_1.default.green(result.written[0])} and ${chalk_1.default.green(result.written[1])}`);
|
|
30
34
|
});
|
|
31
35
|
}
|
|
32
36
|
//# sourceMappingURL=dbcontext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbcontext.js","sourceRoot":"","sources":["../../../src/commands/generate/dbcontext.ts"],"names":[],"mappings":";;;;;AAQA,
|
|
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"}
|
|
@@ -16,6 +16,11 @@ 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
|
+
.addHelpText('after', `
|
|
20
|
+
Examples:
|
|
21
|
+
$ cn generate i18n proposes the files of the project, 'All of them' by default
|
|
22
|
+
$ cn generate i18n -f globals.i18n.csv writes globals.i18n.ts next to it
|
|
23
|
+
`)
|
|
19
24
|
.action(async (options) => {
|
|
20
25
|
const targets = await resolveTargets(options.filePath);
|
|
21
26
|
if (targets === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/commands/generate/i18n.ts"],"names":[],"mappings":";;;;;AASA,
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/commands/generate/i18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,14 @@ const process_1 = require("./process");
|
|
|
12
12
|
function registerGenerateCommands(program) {
|
|
13
13
|
const generate = program
|
|
14
14
|
.command('generate')
|
|
15
|
-
.description('Generate project files: derived ones, rebuilt from the sources (db schema, openapi, i18n classes), and ready-to-edit scaffolds (app, manifests, package.json, model processes)')
|
|
15
|
+
.description('Generate project files: derived ones, rebuilt from the sources (db schema, openapi, i18n classes), and ready-to-edit scaffolds (app, manifests, package.json, model processes)')
|
|
16
|
+
.addHelpText('after', `
|
|
17
|
+
Examples:
|
|
18
|
+
$ cn generate app -n Dashboard an empty React app and its manifest
|
|
19
|
+
$ cn generate i18n regenerate the *.i18n.ts classes of the project
|
|
20
|
+
$ cn generate dbcontext -f . db-schema.xml + db-schema.d.ts from the tables and documents
|
|
21
|
+
$ cn generate process -m api -t Book REST endpoints working on a table
|
|
22
|
+
`);
|
|
16
23
|
(0, manifest_1.registerGenerateProjectManifest)(generate);
|
|
17
24
|
(0, appmanifest_1.registerGenerateAppManifest)(generate);
|
|
18
25
|
(0, pkg_1.registerGeneratePackageJson)(generate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/generate/index.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/generate/index.ts"],"names":[],"mappings":";;AAUA,4DAoBC;AA7BD,yCAA6D;AAC7D,+CAA4D;AAC5D,+BAAoD;AACpD,+BAAiD;AACjD,iCAAgD;AAChD,2CAAwD;AACxD,uCAAoD;AACpD,uCAAoD;AAEpD,SAAgB,wBAAwB,CAAC,OAAgB;IACrD,MAAM,QAAQ,GAAG,OAAO;SACnB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,gLAAgL,CAAC;SAC7L,WAAW,CAAC,OAAO,EAAE;;;;;;CAM7B,CAAC,CAAC;IAEC,IAAA,0CAA+B,EAAC,QAAQ,CAAC,CAAC;IAC1C,IAAA,yCAA2B,EAAC,QAAQ,CAAC,CAAC;IACtC,IAAA,iCAA2B,EAAC,QAAQ,CAAC,CAAC;IACtC,IAAA,8BAAwB,EAAC,QAAQ,CAAC,CAAC;IACnC,IAAA,6BAAsB,EAAC,QAAQ,CAAC,CAAC;IACjC,IAAA,qCAAyB,EAAC,QAAQ,CAAC,CAAC;IACpC,IAAA,iCAAuB,EAAC,QAAQ,CAAC,CAAC;IAClC,IAAA,iCAAuB,EAAC,QAAQ,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -14,6 +14,10 @@ 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
|
+
.addHelpText('after', `
|
|
18
|
+
Examples:
|
|
19
|
+
$ cn generate manifest project and service names derive from the current folder name
|
|
20
|
+
`)
|
|
17
21
|
.action(async () => {
|
|
18
22
|
const projectPath = process.cwd();
|
|
19
23
|
const filePath = (0, path_1.join)(projectPath, 'manifest.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/commands/generate/manifest.ts"],"names":[],"mappings":";;;;;AAQA,
|
|
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"}
|
|
@@ -13,8 +13,12 @@ const shared_1 = require("./shared");
|
|
|
13
13
|
function registerGenerateOpenApi(generate) {
|
|
14
14
|
generate
|
|
15
15
|
.command('openapi')
|
|
16
|
-
.description('
|
|
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
|
+
.addHelpText('after', `
|
|
19
|
+
Examples:
|
|
20
|
+
$ cn generate openapi -f . endpoints of the current folder, written to ./openapi.json
|
|
21
|
+
`)
|
|
18
22
|
.action(async (options) => {
|
|
19
23
|
const projectPath = (0, path_1.resolve)(options.projectPath);
|
|
20
24
|
if (await FileUtils_1.default.exists(projectPath) === false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/commands/generate/openapi.ts"],"names":[],"mappings":";;;;;AAQA,
|
|
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"}
|
|
@@ -15,6 +15,10 @@ 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
|
+
.addHelpText('after', `
|
|
19
|
+
Examples:
|
|
20
|
+
$ cn generate pkg package named after the serviceName of ./manifest.json
|
|
21
|
+
`)
|
|
18
22
|
.action(async () => {
|
|
19
23
|
const projectPath = process.cwd();
|
|
20
24
|
const filePath = (0, path_1.join)(projectPath, 'package.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/commands/generate/pkg.ts"],"names":[],"mappings":";;;;;AAUA,
|
|
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"}
|
|
@@ -53,6 +53,12 @@ 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
|
+
.addHelpText('after', `
|
|
57
|
+
Examples:
|
|
58
|
+
$ cn generate process pick the model and the table on menus
|
|
59
|
+
$ cn generate process -m api -t Book list/read/create/delete endpoints + the query of the list
|
|
60
|
+
$ cn generate process -m upsert -t Book
|
|
61
|
+
`)
|
|
56
62
|
.action(async (options) => {
|
|
57
63
|
const workspacePath = BuildUtils_1.default.findWorkspace();
|
|
58
64
|
if (workspacePath === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/commands/generate/process.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/commands/generate/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,15 @@ exports.registerDeploy = registerDeploy;
|
|
|
7
7
|
const RuntimeUtils_1 = __importDefault(require("../../utils/RuntimeUtils"));
|
|
8
8
|
function registerDeploy(project) {
|
|
9
9
|
project
|
|
10
|
-
.command('deploy
|
|
11
|
-
.description('Deploy
|
|
10
|
+
.command('deploy')
|
|
11
|
+
.description('Deploy a packaged project to the runtime')
|
|
12
|
+
.argument('<service>', 'service name of the project on the runtime (the serviceName of its manifest.json)')
|
|
13
|
+
.argument('<zip>', "package to deploy, the zip written by 'cn project package'")
|
|
14
|
+
.addHelpText('after', `
|
|
15
|
+
Examples:
|
|
16
|
+
$ cn project package -o ./myproject.zip
|
|
17
|
+
$ cn project deploy myproject ./myproject.zip
|
|
18
|
+
`)
|
|
12
19
|
.action(async (service, zip) => {
|
|
13
20
|
await RuntimeUtils_1.default.deployProject(service, zip);
|
|
14
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/project/deploy.ts"],"names":[],"mappings":";;;;;AAGA,
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/project/deploy.ts"],"names":[],"mappings":";;;;;AAGA,wCAcC;AAhBD,4EAAoD;AAEpD,SAAgB,cAAc,CAAC,OAAgB;IAC3C,OAAO;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0CAA0C,CAAC;SACvD,QAAQ,CAAC,WAAW,EAAE,mFAAmF,CAAC;SAC1G,QAAQ,CAAC,OAAO,EAAE,4DAA4D,CAAC;SAC/E,WAAW,CAAC,OAAO,EAAE;;;;CAI7B,CAAC;SACO,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,GAAW,EAAE,EAAE;QAC3C,MAAM,sBAAY,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -14,7 +14,14 @@ const remove_1 = require("./remove");
|
|
|
14
14
|
function registerProjectCommands(program) {
|
|
15
15
|
const project = program
|
|
16
16
|
.command('project') //TODO name subject to change
|
|
17
|
-
.description('
|
|
17
|
+
.description('Work on a Codenotch project: create, inspect, start, sync, test, package, deploy or remove it. Run these inside the project folder, or point -p at it')
|
|
18
|
+
.addHelpText('after', `
|
|
19
|
+
Examples:
|
|
20
|
+
$ cn project new -t todolist
|
|
21
|
+
$ cn project start build, deploy and start the local project
|
|
22
|
+
$ cn project inspect what the sources declare (processes, tables, apps, i18n...)
|
|
23
|
+
$ cn project refresh sync the changes with the running runtime
|
|
24
|
+
`);
|
|
18
25
|
(0, inspect_1.registerInspect)(project);
|
|
19
26
|
(0, open_1.registerOpen)(project);
|
|
20
27
|
(0, start_1.registerStart)(project);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/project/index.ts"],"names":[],"mappings":";;AAYA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/project/index.ts"],"names":[],"mappings":";;AAYA,0DAsBC;AAjCD,uCAA4C;AAC5C,iCAAsC;AACtC,mCAAwC;AACxC,uCAA4C;AAC5C,iCAAsC;AACtC,uCAA4C;AAC5C,uCAA4C;AAC5C,qCAA0C;AAC1C,+BAAoC;AACpC,qCAA0C;AAE1C,SAAgB,uBAAuB,CAAC,OAAgB;IACpD,MAAM,OAAO,GAAG,OAAO;SAClB,OAAO,CAAC,SAAS,CAAC,CAAC,6BAA6B;SAChD,WAAW,CAAC,uJAAuJ,CAAC;SACpK,WAAW,CAAC,OAAO,EAAE;;;;;;CAM7B,CAAC,CAAC;IAEC,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;IACzB,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;IACzB,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;IACtB,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;IACzB,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;IACzB,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;IACxB,IAAA,iBAAW,EAAC,OAAO,CAAC,CAAC;IACrB,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -4,14 +4,78 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerInspect = registerInspect;
|
|
7
|
+
const path_1 = require("path");
|
|
7
8
|
const ProjectUtils_1 = __importDefault(require("../../utils/ProjectUtils"));
|
|
9
|
+
const DbSchemaUtils_1 = __importDefault(require("../../utils/DbSchemaUtils"));
|
|
8
10
|
const shared_1 = require("./shared");
|
|
9
11
|
function registerInspect(project) {
|
|
10
12
|
(0, shared_1.withProjectPathOption)(project
|
|
11
13
|
.command('inspect')
|
|
12
|
-
.description('Parse the project and display its structure and configuration')
|
|
14
|
+
.description('Parse the project and display its structure and configuration')
|
|
15
|
+
.option('--json', 'output the discovered structure as JSON instead of text')
|
|
16
|
+
.addHelpText('after', `
|
|
17
|
+
Examples:
|
|
18
|
+
$ cn project inspect what the sources declare (processes, tables, apps, i18n...)
|
|
19
|
+
$ cn project inspect --json the same, machine-readable
|
|
20
|
+
`))
|
|
13
21
|
.action(async (options) => {
|
|
22
|
+
if (options.json === true) {
|
|
23
|
+
const info = await ProjectUtils_1.default.collectProjectInfo(options.projectPath);
|
|
24
|
+
console.log(JSON.stringify(buildJsonReport(options.projectPath, info), null, 4));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
14
27
|
await ProjectUtils_1.default.inspectProject(options.projectPath);
|
|
15
28
|
});
|
|
16
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* The machine-readable form of the inspection. A curated shape on purpose: it is a contract for
|
|
32
|
+
* scripts and coding agents, so it exposes what the text output says (plus the structured
|
|
33
|
+
* details behind it) rather than freezing the internal discover* interfaces.
|
|
34
|
+
*/
|
|
35
|
+
function buildJsonReport(projectPath, info) {
|
|
36
|
+
const root = (0, path_1.resolve)(projectPath);
|
|
37
|
+
// Posix separators whatever the OS, so a consumer does not have to handle both
|
|
38
|
+
const rel = (filePath) => ((0, path_1.relative)(root, filePath) || filePath).replaceAll('\\', '/');
|
|
39
|
+
return {
|
|
40
|
+
path: root,
|
|
41
|
+
manifest: info.manifest ?? null,
|
|
42
|
+
package: info.pkgJson ? { name: info.pkgJson.name ?? null, version: info.pkgJson.version ?? null } : null,
|
|
43
|
+
processes: info.processes.map(process => ({
|
|
44
|
+
id: process.id ?? null,
|
|
45
|
+
trigger: process.trigger ?? null,
|
|
46
|
+
scope: process.scope ?? null,
|
|
47
|
+
description: process.description ?? null,
|
|
48
|
+
takesInput: process.takesInput,
|
|
49
|
+
file: rel(process.filePath),
|
|
50
|
+
line: process.line
|
|
51
|
+
})),
|
|
52
|
+
tables: info.tables.map(table => ({
|
|
53
|
+
name: table.name ?? null,
|
|
54
|
+
// The key of 'ctx.tables' in the processes
|
|
55
|
+
collection: table.name !== undefined ? DbSchemaUtils_1.default.toCollectionName(table.name) : null,
|
|
56
|
+
columns: table.columns.map(column => ({ name: column.name, type: column.type ?? null, primary: column.isPrimary })),
|
|
57
|
+
file: rel(table.filePath),
|
|
58
|
+
line: table.line
|
|
59
|
+
})),
|
|
60
|
+
documents: info.documents.map(document => ({
|
|
61
|
+
name: document.name ?? null,
|
|
62
|
+
key: document.name?.toLowerCase() ?? null,
|
|
63
|
+
fields: document.fields.map(field => ({ name: field.name, type: field.type ?? null })),
|
|
64
|
+
file: rel(document.filePath),
|
|
65
|
+
line: document.line
|
|
66
|
+
})),
|
|
67
|
+
apps: info.apps.map(app => ({
|
|
68
|
+
name: app.name,
|
|
69
|
+
type: app.type,
|
|
70
|
+
title: app.manifest.html?.title ?? app.manifest.app?.name ?? null,
|
|
71
|
+
script: rel(app.scriptPath),
|
|
72
|
+
manifest: rel(app.manifestPath)
|
|
73
|
+
})),
|
|
74
|
+
i18ns: info.i18ns.map(i18n => ({
|
|
75
|
+
file: rel(i18n.filePath),
|
|
76
|
+
languages: i18n.languages,
|
|
77
|
+
keys: i18n.keys.length
|
|
78
|
+
}))
|
|
79
|
+
};
|
|
80
|
+
}
|
|
17
81
|
//# sourceMappingURL=inspect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/project/inspect.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/project/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,13 @@ function registerNew(project) {
|
|
|
53
53
|
.description('Create a new project')
|
|
54
54
|
.option('-t, --template <name>', `template to start from: ${ProjectTemplates_1.default.TEMPLATES.map(t => t.name).join(', ')} (asked when omitted)`)
|
|
55
55
|
.option('--list-templates', 'list the available templates and exit')
|
|
56
|
-
.option('--no-install', 'do not run npm install in the new project')
|
|
56
|
+
.option('--no-install', 'do not run npm install in the new project')
|
|
57
|
+
.addHelpText('after', `
|
|
58
|
+
Examples:
|
|
59
|
+
$ cn project new asks for the template and the name
|
|
60
|
+
$ cn project new -t tailwind -p ./shop
|
|
61
|
+
$ cn project new --list-templates
|
|
62
|
+
`))
|
|
57
63
|
.action(async (options) => {
|
|
58
64
|
if (options.listTemplates) {
|
|
59
65
|
for (const template of ProjectTemplates_1.default.TEMPLATES) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/commands/project/new.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/commands/project/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,12 @@ function registerRemove(project) {
|
|
|
13
13
|
(0, shared_1.withProjectPathOption)(project
|
|
14
14
|
.command('remove')
|
|
15
15
|
.description('Uninstall the project and erase its data (use with caution)')
|
|
16
|
-
.option('-y, --yes', 'do not ask for confirmation', false)
|
|
16
|
+
.option('-y, --yes', 'do not ask for confirmation', false)
|
|
17
|
+
.addHelpText('after', `
|
|
18
|
+
Examples:
|
|
19
|
+
$ cn project remove asks for confirmation first
|
|
20
|
+
$ cn project remove --yes no confirmation (scripts, CI)
|
|
21
|
+
`))
|
|
17
22
|
.action(async (options) => {
|
|
18
23
|
const projectName = FileUtils_1.default.getNameFromPath(options.projectPath);
|
|
19
24
|
// Erasing data deserves an explicit go: outside a terminal, only --yes can give it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/project/remove.ts"],"names":[],"mappings":";;;;;AAOA,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/project/remove.ts"],"names":[],"mappings":";;;;;AAOA,wCAuBC;AA7BD,kDAA0B;AAC1B,4EAAoD;AACpD,4EAAoD;AACpD,sEAA8C;AAC9C,qCAAyE;AAEzE,SAAgB,cAAc,CAAC,OAAgB;IAC3C,IAAA,8BAAqB,EAAC,OAAO;SACxB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,MAAM,CAAC,WAAW,EAAE,6BAA6B,EAAE,KAAK,CAAC;SACzD,WAAW,CAAC,OAAO,EAAE;;;;CAI7B,CAAC,CAAC;SACM,MAAM,CAAC,KAAK,EAAE,OAAkD,EAAE,EAAE;QAEjE,MAAM,WAAW,GAAG,mBAAS,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEnE,mFAAmF;QACnF,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,sBAAY,CAAC,OAAO,CAAC,mBAAmB,WAAW,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5G,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;YACpG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,sBAAY,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -5,19 +5,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerBuild = registerBuild;
|
|
7
7
|
const BuildUtils_1 = __importDefault(require("../../utils/BuildUtils"));
|
|
8
|
+
const OsUtils_1 = require("../../utils/OsUtils");
|
|
8
9
|
const shared_1 = require("./shared");
|
|
9
10
|
function registerBuild(react) {
|
|
10
11
|
react
|
|
11
12
|
.command('build [app]')
|
|
12
13
|
.description('Build a React app of the project into a ready-to-serve bundle. By its name, or the path of its component; the only app when omitted.')
|
|
13
14
|
.option('-c, --cluster <url>', 'cluster the app will talk to, written into the .env of the bundle')
|
|
15
|
+
.option('--static', 'bake the environment into the bundle instead of the /api/env fetch: the dist runs from any static file host')
|
|
16
|
+
.option('--pwa', 'installable PWA (implies --static): web manifest from the pwa section of the app manifest, icons, offline service worker')
|
|
17
|
+
.option('--no-open', 'do not open the bundle folder in the file explorer once the build is done')
|
|
18
|
+
.addHelpText('after', `
|
|
19
|
+
Examples:
|
|
20
|
+
$ cn react build the only app of the project (a menu when there are several)
|
|
21
|
+
$ cn react build Dashboard bundle written to .codenotch/Dashboard-dist
|
|
22
|
+
$ cn react build apps/Dashboard.tsx by the path of its component
|
|
23
|
+
$ cn react build Dashboard --static env baked in, for nginx / S3 / GitHub Pages...
|
|
24
|
+
$ cn react build Dashboard --pwa installable, works offline, for any static host
|
|
25
|
+
$ cn react build Dashboard --no-open without opening the bundle folder
|
|
26
|
+
`)
|
|
14
27
|
.action(async (target, options) => {
|
|
15
28
|
const app = await (0, shared_1.resolveAppTarget)(target);
|
|
16
29
|
if (app === null) {
|
|
17
30
|
process.exitCode = 1;
|
|
18
31
|
return;
|
|
19
32
|
}
|
|
20
|
-
await BuildUtils_1.default.buildReactApp(app.scriptPath,
|
|
33
|
+
const bundlePath = await BuildUtils_1.default.buildReactApp(app.scriptPath, {
|
|
34
|
+
clusterUrl: options.cluster,
|
|
35
|
+
static: options.static,
|
|
36
|
+
pwa: options.pwa
|
|
37
|
+
});
|
|
38
|
+
// Show the bundle where it landed, the build only prints its path
|
|
39
|
+
if (bundlePath !== undefined && options.open !== false) {
|
|
40
|
+
OsUtils_1.OsUtils.openInFileExplorer(bundlePath);
|
|
41
|
+
}
|
|
21
42
|
});
|
|
22
43
|
}
|
|
23
44
|
//# sourceMappingURL=build.js.map
|