@oktis-works/cms 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets.d.ts +23 -6
- package/dist/assets.d.ts.map +1 -1
- package/dist/assets.js +262 -87
- package/dist/assets.js.map +1 -1
- package/dist/bluegreen.d.ts.map +1 -1
- package/dist/bluegreen.js +75 -52
- package/dist/bluegreen.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +269 -131
- package/dist/commands.js.map +1 -1
- package/dist/config-wizard.js +34 -36
- package/dist/config-wizard.js.map +1 -1
- package/dist/deploy-target.d.ts +20 -0
- package/dist/deploy-target.d.ts.map +1 -0
- package/dist/deploy-target.js +90 -0
- package/dist/deploy-target.js.map +1 -0
- package/dist/deploy.d.ts +20 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +154 -0
- package/dist/deploy.js.map +1 -0
- package/dist/docker.d.ts +16 -0
- package/dist/docker.d.ts.map +1 -1
- package/dist/docker.js +25 -0
- package/dist/docker.js.map +1 -1
- package/dist/docs-updater.d.ts +10 -0
- package/dist/docs-updater.d.ts.map +1 -0
- package/dist/docs-updater.js +45 -0
- package/dist/docs-updater.js.map +1 -0
- package/dist/doctor.js +12 -12
- package/dist/doctor.js.map +1 -1
- package/dist/env-file.js +1 -1
- package/dist/env-file.js.map +1 -1
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +64 -64
- package/dist/env-schema.js.map +1 -1
- package/dist/extension-scaffold.js +5 -5
- package/dist/extension-scaffold.js.map +1 -1
- package/dist/guards.js +8 -8
- package/dist/guards.js.map +1 -1
- package/dist/history.d.ts +48 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +104 -0
- package/dist/history.js.map +1 -0
- package/dist/installer.js +9 -9
- package/dist/installer.js.map +1 -1
- package/dist/npm-registry.js +1 -1
- package/dist/npm-registry.js.map +1 -1
- package/dist/pm2.d.ts +18 -0
- package/dist/pm2.d.ts.map +1 -0
- package/dist/pm2.js +179 -0
- package/dist/pm2.js.map +1 -0
- package/dist/project-config.js +1 -1
- package/dist/project-config.js.map +1 -1
- package/dist/prompt.d.ts +27 -4
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +254 -29
- package/dist/prompt.js.map +1 -1
- package/dist/redeploy.d.ts +6 -1
- package/dist/redeploy.d.ts.map +1 -1
- package/dist/redeploy.js +137 -74
- package/dist/redeploy.js.map +1 -1
- package/dist/rollback.d.ts +15 -0
- package/dist/rollback.d.ts.map +1 -0
- package/dist/rollback.js +170 -0
- package/dist/rollback.js.map +1 -0
- package/dist/scaffold-docs.d.ts +5 -0
- package/dist/scaffold-docs.d.ts.map +1 -1
- package/dist/scaffold-docs.js +61 -19
- package/dist/scaffold-docs.js.map +1 -1
- package/dist/scaffold.d.ts +3 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +25 -16
- package/dist/scaffold.js.map +1 -1
- package/dist/simple.d.ts +31 -0
- package/dist/simple.d.ts.map +1 -0
- package/dist/simple.js +200 -0
- package/dist/simple.js.map +1 -0
- package/dist/start.js +1 -1
- package/dist/theme-build.js +3 -3
- package/dist/theme-build.js.map +1 -1
- package/dist/update.d.ts +23 -15
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +211 -66
- package/dist/update.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../src/rollback.ts"],"names":[],"mappings":"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"}
|
package/dist/scaffold-docs.d.ts
CHANGED
|
@@ -14,6 +14,11 @@ export declare const DEFAULT_DOCS_LANG: DocsLang;
|
|
|
14
14
|
export declare function parseDocsLang(value: string | undefined | null): DocsLang | null;
|
|
15
15
|
/** Rótulo legível da língua (mensagens da CLI). */
|
|
16
16
|
export declare function docsLangLabel(lang: DocsLang): string;
|
|
17
|
+
/**
|
|
18
|
+
* Detecta a língua do projeto lendo o README.md existente.
|
|
19
|
+
* Usado pelo `okcms update`/`deploy` para atualizar docs na língua certa.
|
|
20
|
+
*/
|
|
21
|
+
export declare function detectProjectDocsLang(cwd: string): 'en' | 'pt';
|
|
17
22
|
/**
|
|
18
23
|
* README.md do projeto scaffoldado, na língua escolhida no \`okcms init\`.
|
|
19
24
|
* Default \`en\` (Enter do prompt e único valor em modo não-interativo).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-docs.d.ts","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scaffold-docs.d.ts","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAiBA,iDAAiD;AACjD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC,0DAA0D;AAC1D,eAAO,MAAM,UAAU,EAAE,QAAQ,EAAiB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAe,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAW/E;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAQ9D;AA+hCD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,QAA4B,GACjC,MAAM,CAER;AAED,kCAAkC;AAClC,wBAAgB,SAAS,CAAC,IAAI,GAAE,QAA4B,GAAG,MAAM,CAEpE;AAED,iCAAiC;AACjC,wBAAgB,QAAQ,CAAC,IAAI,GAAE,QAA4B,GAAG,MAAM,CAEnE"}
|
package/dist/scaffold-docs.js
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
// `--lang en|pt` sem TTY) e não muda o path. No repositório, os guias derivados
|
|
12
12
|
// (docs/plugin-development*.md) existem nos dois nomes, com banner de idioma.
|
|
13
13
|
import { CMS_VERSION } from '@oktis-works/validation';
|
|
14
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
15
|
+
import { join } from 'node:path';
|
|
14
16
|
/** Línguas suportadas (ordem = ordem do menu do init). */
|
|
15
17
|
export const DOCS_LANGS = ['en', 'pt'];
|
|
16
18
|
/**
|
|
@@ -38,7 +40,22 @@ export function parseDocsLang(value) {
|
|
|
38
40
|
}
|
|
39
41
|
/** Rótulo legível da língua (mensagens da CLI). */
|
|
40
42
|
export function docsLangLabel(lang) {
|
|
41
|
-
return lang === 'pt' ? '
|
|
43
|
+
return lang === 'pt' ? 'Portuguese' : 'English';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Detecta a língua do projeto lendo o README.md existente.
|
|
47
|
+
* Usado pelo `okcms update`/`deploy` para atualizar docs na língua certa.
|
|
48
|
+
*/
|
|
49
|
+
export function detectProjectDocsLang(cwd) {
|
|
50
|
+
const readmePath = join(cwd, 'README.md');
|
|
51
|
+
if (!existsSync(readmePath))
|
|
52
|
+
return DEFAULT_DOCS_LANG;
|
|
53
|
+
const content = readFileSync(readmePath, 'utf-8');
|
|
54
|
+
if (content.includes('O que é o OkCMS') || content.includes('## Produção'))
|
|
55
|
+
return 'pt';
|
|
56
|
+
if (content.includes('What is OkCMS') || content.includes('## Production'))
|
|
57
|
+
return 'en';
|
|
58
|
+
return DEFAULT_DOCS_LANG;
|
|
42
59
|
}
|
|
43
60
|
/** README.md do projeto scaffoldado — versão em português. */
|
|
44
61
|
function projectReadmePt(projectName) {
|
|
@@ -131,12 +148,18 @@ portas do Postgres (5432) e do Redis (6379). Os apps em si rodam via
|
|
|
131
148
|
\`okcms start\` — o compose é só a infraestrutura.
|
|
132
149
|
|
|
133
150
|
Para subir a aplicação **inteira em Docker** (api, admin, web e worker em
|
|
134
|
-
containers, atrás de um nginx), use o deploy
|
|
151
|
+
containers, atrás de um nginx), use o \`okcms deploy\`:
|
|
135
152
|
|
|
136
153
|
\`\`\`bash
|
|
137
|
-
npx okcms
|
|
154
|
+
npx okcms deploy # abre o menu do destino (setas ↑/↓ + Enter)
|
|
155
|
+
npx okcms deploy --target simple # ou fixa o destino sem menu
|
|
138
156
|
\`\`\`
|
|
139
157
|
|
|
158
|
+
São três destinos: **blue/green** (duas lanes, sem downtime), **simple** (um
|
|
159
|
+
stack só em \`docker-compose.app.yml\`, reinício rápido) e **pm2** (processos no
|
|
160
|
+
host, sem Docker). A escolha fica guardada em \`.deploy/state.json\` e vale para
|
|
161
|
+
\`deploy\`, \`update\` e \`redeploy\`.
|
|
162
|
+
|
|
140
163
|
Esse é o caminho de produção — ver o guia completo em
|
|
141
164
|
[docs/docker-deploy.md](https://github.com/oktis-works/cms/blob/main/docs/docker-deploy.md).
|
|
142
165
|
|
|
@@ -178,18 +201,20 @@ pm2 unmonitor okcms-api && pm2 delete okcms-api # remover
|
|
|
178
201
|
- Como cada app é um executável independente, o \`okcms start\` não é
|
|
179
202
|
necessário em produção — o pm2 supervisoria cada um diretamente.
|
|
180
203
|
|
|
181
|
-
### Caminho 2: Docker blue/green (recomendado)
|
|
204
|
+
### Caminho 2: Docker — blue/green ou simple (recomendado)
|
|
182
205
|
|
|
183
206
|
O projeto já nasce com tudo que o deploy precisa (o \`okcms init\` escreve
|
|
184
|
-
\`docker/\`, os
|
|
207
|
+
\`docker/\`, os três composes e o \`deploy/\` do proxy). Um deploy é um único
|
|
185
208
|
comando a partir do host:
|
|
186
209
|
|
|
187
210
|
\`\`\`bash
|
|
188
|
-
npx okcms
|
|
211
|
+
npx okcms deploy # primeiro deploy (menu do destino)
|
|
212
|
+
npx okcms update --mode deploy # depois disso: wizard com o destino salvo
|
|
213
|
+
npx okcms deploy --target simple # stack único, sem lanes
|
|
189
214
|
\`\`\`
|
|
190
215
|
|
|
191
|
-
|
|
192
|
-
um nginx público. Cada deploy:
|
|
216
|
+
No destino **blue/green** a aplicação roda em **duas lanes** (\`okcms-blue\` e
|
|
217
|
+
\`okcms-green\`) atrás de um nginx público. Cada deploy:
|
|
193
218
|
|
|
194
219
|
1. builda a imagem nova numa lane que **não recebe tráfego**;
|
|
195
220
|
2. roda \`okcms db:migrate\` **no host** (falhou = nada mudou);
|
|
@@ -199,6 +224,10 @@ um nginx público. Cada deploy:
|
|
|
199
224
|
5. **drena** o worker antigo (SIGTERM + \`stop_grace_period\`), sobe o novo;
|
|
200
225
|
6. derruba a lane antiga — **sem \`-v\`**: o volume de mídia é compartilhado.
|
|
201
226
|
|
|
227
|
+
No destino **simple** o caminho é mais curto: build → migrations → \`up -d\` →
|
|
228
|
+
healthcheck → \`nginx -s reload\` — sem segunda lane e com reinício rápido; o
|
|
229
|
+
zero downtime fica por conta do blue/green.
|
|
230
|
+
|
|
202
231
|
**Rollback** = rodar o mesmo comando de novo, ou apontar o upstream de volta
|
|
203
232
|
para a outra lane. Detalhes, portas e segurança em
|
|
204
233
|
[docs/docker-deploy.md](https://github.com/oktis-works/cms/blob/main/docs/docker-deploy.md).
|
|
@@ -400,12 +429,18 @@ the Postgres (5432) and Redis (6379) ports. The apps themselves run via
|
|
|
400
429
|
\`okcms start\` — the compose is only the infrastructure.
|
|
401
430
|
|
|
402
431
|
To run the **whole application in Docker** (api, admin, web and worker in
|
|
403
|
-
containers behind an nginx), use
|
|
432
|
+
containers behind an nginx), use \`okcms deploy\`:
|
|
404
433
|
|
|
405
434
|
\`\`\`bash
|
|
406
|
-
npx okcms
|
|
435
|
+
npx okcms deploy # opens the target menu (↑/↓ + Enter)
|
|
436
|
+
npx okcms deploy --target simple # or fixes the target without the menu
|
|
407
437
|
\`\`\`
|
|
408
438
|
|
|
439
|
+
There are three targets: **blue/green** (two lanes, no downtime), **simple**
|
|
440
|
+
(one stack in \`docker-compose.app.yml\`, fast restart) and **pm2** (host
|
|
441
|
+
processes, no Docker). The choice is stored in \`.deploy/state.json\` and shared
|
|
442
|
+
by \`deploy\`, \`update\` and \`redeploy\`.
|
|
443
|
+
|
|
409
444
|
That is the production path — see the complete guide at
|
|
410
445
|
[docs/docker-deploy.md](https://github.com/oktis-works/cms/blob/main/docs/docker-deploy.md).
|
|
411
446
|
|
|
@@ -447,18 +482,20 @@ pm2 unmonitor okcms-api && pm2 delete okcms-api # remove
|
|
|
447
482
|
- Since each app is an independent executable, \`okcms start\` is not
|
|
448
483
|
needed in production — pm2 supervises each one directly.
|
|
449
484
|
|
|
450
|
-
### Path 2: Docker blue/green (recommended)
|
|
485
|
+
### Path 2: Docker — blue/green or simple (recommended)
|
|
451
486
|
|
|
452
487
|
The project ships with everything a deploy needs ( \`okcms init\` writes
|
|
453
|
-
\`docker/\`,
|
|
454
|
-
command from the host:
|
|
488
|
+
\`docker/\`, all three compose files and the proxy's \`deploy/\`). A deploy is a
|
|
489
|
+
single command from the host:
|
|
455
490
|
|
|
456
491
|
\`\`\`bash
|
|
457
|
-
npx okcms
|
|
492
|
+
npx okcms deploy # first deploy (target menu)
|
|
493
|
+
npx okcms update --mode deploy # after that: wizard with the saved target
|
|
494
|
+
npx okcms deploy --target simple # single stack, no lanes
|
|
458
495
|
\`\`\`
|
|
459
496
|
|
|
460
|
-
|
|
461
|
-
public nginx. Each deploy:
|
|
497
|
+
With the **blue/green** target the application runs in **two lanes**
|
|
498
|
+
(\`okcms-blue\` and \`okcms-green\`) behind a public nginx. Each deploy:
|
|
462
499
|
|
|
463
500
|
1. builds the new image in a lane that **receives no traffic**;
|
|
464
501
|
2. runs \`okcms db:migrate\` **on the host** (if it fails, nothing changed);
|
|
@@ -468,6 +505,10 @@ public nginx. Each deploy:
|
|
|
468
505
|
5. **drains** the old worker (SIGTERM + \`stop_grace_period\`) and starts the new one;
|
|
469
506
|
6. tears down the old lane — **without \`-v\`**: the media volume is shared.
|
|
470
507
|
|
|
508
|
+
With the **simple** target the path is shorter: build → migrations → \`up -d\` →
|
|
509
|
+
healthcheck → \`nginx -s reload\` — no second lane and a fast restart; zero
|
|
510
|
+
downtime is what blue/green is for.
|
|
511
|
+
|
|
471
512
|
**Rollback** = run the same command again, or point the upstream back to the
|
|
472
513
|
other lane. Details, ports and security in
|
|
473
514
|
[docs/docker-deploy.md](https://github.com/oktis-works/cms/blob/main/docs/docker-deploy.md).
|
|
@@ -516,10 +557,11 @@ the 6 steps above to do by hand. Prefer the CLI command.
|
|
|
516
557
|
| \`okcms theme:create -n <name> --style css\\|scss\\|tailwind\` | Theme scaffold — guide in [THEME.md](./THEME.md) |
|
|
517
558
|
| \`okcms theme:install\` · \`theme:list\` · \`theme:search\` · \`theme:manage\` | Theme management (\`--set-active\` sets the active one) |
|
|
518
559
|
| \`okcms theme:build -n <name>\` | Compiles SCSS/Tailwind → isolated \`dist/theme.css\` |
|
|
519
|
-
| \`okcms
|
|
560
|
+
| \`okcms deploy\` | First deploy — target menu: blue/green, simple or pm2 (\`--target\`, \`--yes\`) |
|
|
561
|
+
| \`okcms update\` | Wizard: **download packages only** or **deploy** (\`--mode download\\|deploy\`) |
|
|
520
562
|
| \`okcms update -i\` | Only downloads/applies the \`@oktis-works/*\` packages (classic non-TTY behaviour) |
|
|
521
|
-
| \`okcms update --mode deploy\` | Full
|
|
522
|
-
| \`okcms redeploy\` | After installing a plugin/theme: plugin SQL → \`migrations/\`, theme \`dist/theme.css\` and
|
|
563
|
+
| \`okcms update --mode deploy\` | Full deploy: build → migrations → healthcheck → swap (target: \`--target blue-green\\|simple\\|pm2\`) |
|
|
564
|
+
| \`okcms redeploy\` | After installing a plugin/theme: plugin SQL → \`migrations/\`, theme \`dist/theme.css\` and deploy (\`--dry-run\` only shows the plan, \`--target\` picks the target) |
|
|
523
565
|
| \`okcms seed\` | Seeds initial data (roles + settings) — idempotent |
|
|
524
566
|
| \`okcms user:create\` | Creates a user and assigns a role inside the tenant |
|
|
525
567
|
| \`okcms system:status\` | System status (environment + database health) |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wEAAwE;AACxE,gFAAgF;AAChF,EAAE;AACF,sEAAsE;AACtE,6EAA6E;AAC7E,yDAAyD;AACzD,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"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"}
|
package/dist/scaffold.d.ts
CHANGED
|
@@ -17,7 +17,9 @@ export declare function toPackageName(name: string): string;
|
|
|
17
17
|
* A partir de 1.x vira `^MAJOR.0.0` (compatibilidade semântica madura).
|
|
18
18
|
*/
|
|
19
19
|
export declare function appRangeFor(cliVersion: string): string;
|
|
20
|
-
export declare function scaffoldProject(targetDir: string, name: string, lang?: DocsLang
|
|
20
|
+
export declare function scaffoldProject(targetDir: string, name: string, lang?: DocsLang,
|
|
21
|
+
/** Runs after the files are written and BEFORE the "Next steps" summary. */
|
|
22
|
+
beforeSummary?: () => Promise<void>): Promise<string>;
|
|
21
23
|
export interface InstallResult {
|
|
22
24
|
ok: boolean;
|
|
23
25
|
tool: string;
|
package/dist/scaffold.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQ/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAWtD;AAoBD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAA4B,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQ/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAWtD;AAoBD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAA4B;AAClC,4EAA4E;AAC5E,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAClC,OAAO,CAAC,MAAM,CAAC,CAiMjB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,SAAS,CAAA;CAAO,GACzC,aAAa,CAmBf"}
|
package/dist/scaffold.js
CHANGED
|
@@ -59,9 +59,11 @@ async function mergeGitignore(root, entries) {
|
|
|
59
59
|
const header = current.length === 0 ? '# OkCMS\n' : '# okcms init\n';
|
|
60
60
|
await writeFile(`${path}`, `${body}${header}${missing.join('\n')}\n`, 'utf-8');
|
|
61
61
|
}
|
|
62
|
-
export async function scaffoldProject(targetDir, name, lang = DEFAULT_DOCS_LANG
|
|
62
|
+
export async function scaffoldProject(targetDir, name, lang = DEFAULT_DOCS_LANG,
|
|
63
|
+
/** Runs after the files are written and BEFORE the "Next steps" summary. */
|
|
64
|
+
beforeSummary) {
|
|
63
65
|
const root = resolve(process.cwd(), targetDir);
|
|
64
|
-
console.log(`
|
|
66
|
+
console.log(`Creating project "${name}" at ${root}...`);
|
|
65
67
|
await mkdir(join(root, 'themes'), { recursive: true });
|
|
66
68
|
await mkdir(join(root, 'plugins'), { recursive: true });
|
|
67
69
|
await mkdir(join(root, 'migrations'), { recursive: true });
|
|
@@ -106,17 +108,17 @@ export async function scaffoldProject(targetDir, name, lang = DEFAULT_DOCS_LANG)
|
|
|
106
108
|
await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf-8');
|
|
107
109
|
}
|
|
108
110
|
const envExample = `# OkCMS
|
|
109
|
-
#
|
|
110
|
-
# (a)
|
|
111
|
+
# Database connection — pick ONE format:
|
|
112
|
+
# (a) separate variables (default, used below):
|
|
111
113
|
DB_HOST=${process.env['DB_HOST'] ?? 'localhost'}
|
|
112
114
|
DB_PORT=${process.env['DB_PORT'] ?? '5432'}
|
|
113
115
|
DB_NAME=${process.env['DB_NAME'] ?? 'okcms'}
|
|
114
116
|
DB_USER=${process.env['DB_USER'] ?? 'postgres'}
|
|
115
117
|
DB_PASSWORD=
|
|
116
|
-
# (b) URL
|
|
117
|
-
# DATABASE_URL=postgresql://postgres:
|
|
118
|
+
# (b) single URL — takes precedence over the DB_* above:
|
|
119
|
+
# DATABASE_URL=postgresql://postgres:password@localhost:5432/okcms
|
|
118
120
|
|
|
119
|
-
# Redis (cache +
|
|
121
|
+
# Redis (cache + worker queues)
|
|
120
122
|
REDIS_HOST=localhost
|
|
121
123
|
REDIS_PORT=6379
|
|
122
124
|
REDIS_PASSWORD=
|
|
@@ -204,26 +206,33 @@ volumes:
|
|
|
204
206
|
}
|
|
205
207
|
}
|
|
206
208
|
if (docsWritten > 0) {
|
|
207
|
-
console.log(`
|
|
209
|
+
console.log(`Docs (${docsLangLabel(lang)}): ${docsWritten} file(s)`);
|
|
208
210
|
}
|
|
209
211
|
const relTarget = targetDir === '.' ? null : targetDir;
|
|
210
212
|
const cfgName = DEFAULT_CONFIG_FILENAME;
|
|
211
|
-
|
|
213
|
+
// Dependency install comes before the summary: printing "Next steps" and
|
|
214
|
+
// then blocking for a minute on `bun install` makes the user type into a
|
|
215
|
+
// shell that is not ready yet.
|
|
216
|
+
if (beforeSummary)
|
|
217
|
+
await beforeSummary();
|
|
218
|
+
console.log('');
|
|
219
|
+
console.log(` ✓ Project "${name}" created at ${root}`);
|
|
212
220
|
if (deployCreated.length > 0) {
|
|
213
|
-
console.log(`
|
|
221
|
+
console.log(` ✓ Docker deploy files: ${deployCreated.join(', ')}`);
|
|
214
222
|
}
|
|
215
|
-
console.log('
|
|
223
|
+
console.log('');
|
|
224
|
+
console.log('Next steps:');
|
|
216
225
|
let step = 1;
|
|
217
226
|
if (relTarget !== null) {
|
|
218
227
|
console.log(` ${step++}. cd ${relTarget}`);
|
|
219
228
|
}
|
|
220
229
|
console.log(` ${step++}. docker compose up -d`);
|
|
221
|
-
console.log(` ${step++}.
|
|
222
|
-
console.log(` ${step++}. npx okcms db:migrate (
|
|
223
|
-
console.log(` ${step++}. npx okcms start (
|
|
230
|
+
console.log(` ${step++}. edit .env (set DB_PASSWORD and JWT_SECRET)`);
|
|
231
|
+
console.log(` ${step++}. npx okcms db:migrate (or: bun run migrate)`);
|
|
232
|
+
console.log(` ${step++}. npx okcms start (api, admin, web, worker — or: bun run start)`);
|
|
224
233
|
console.log('');
|
|
225
|
-
console.log(`
|
|
226
|
-
console.log(
|
|
234
|
+
console.log(` config: ${cfgName} · help: npx okcms --help`);
|
|
235
|
+
console.log(' docs: README.md (local/Docker) · PLUGIN.md, THEME.md (extensions)');
|
|
227
236
|
return root;
|
|
228
237
|
}
|
|
229
238
|
/**
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/simple.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Runner } from './docker.js';
|
|
2
|
+
import { type DeployTimeouts } from './bluegreen.js';
|
|
3
|
+
import type { Prompt } from './prompt.js';
|
|
4
|
+
export interface SimpleDeployOptions {
|
|
5
|
+
cwd?: string;
|
|
6
|
+
runner?: Runner;
|
|
7
|
+
prompt?: Prompt;
|
|
8
|
+
log?: (message: string) => void;
|
|
9
|
+
warn?: (message: string) => void;
|
|
10
|
+
/** `docker compose build --no-cache` (redeploy/update only). */
|
|
11
|
+
noCache?: boolean;
|
|
12
|
+
/** `pkg@latest` specs to install on the host before the build. */
|
|
13
|
+
packages?: string[];
|
|
14
|
+
/** Fresh clone: run `bun install` instead of `bun add`. */
|
|
15
|
+
installAll?: boolean;
|
|
16
|
+
/** Authoritative check through the proxy after the swap (test seam). */
|
|
17
|
+
healthProbe?: (url: string) => Promise<boolean>;
|
|
18
|
+
timeouts?: DeployTimeouts;
|
|
19
|
+
}
|
|
20
|
+
export interface SimpleDeployResult {
|
|
21
|
+
ok: boolean;
|
|
22
|
+
message?: string;
|
|
23
|
+
/** Deploy files created during this run (existing ones are never touched). */
|
|
24
|
+
created: string[];
|
|
25
|
+
}
|
|
26
|
+
/** Rewrites `00-upstreams.conf` for the lane-less stack. */
|
|
27
|
+
export declare function writeSimpleUpstreams(cwd: string, record: Record<string, string>): string;
|
|
28
|
+
/** true when the upstreams file already targets the simple stack. */
|
|
29
|
+
export declare function upstreamsAreSimple(cwd: string): boolean;
|
|
30
|
+
export declare function deploySimple(opts?: SimpleDeployOptions): Promise<SimpleDeployResult>;
|
|
31
|
+
//# sourceMappingURL=simple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../src/simple.ts"],"names":[],"mappings":"AAoBA,OAAO,EAWL,KAAK,MAAM,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAeD,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAMxF;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIvD;AAaD,wBAAsB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0J9F"}
|
package/dist/simple.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// @oktis-works/cms - Simple container deploy (`--target simple`)
|
|
2
|
+
//
|
|
3
|
+
// One Docker project (`okcms-app`), no lanes, no swap dance:
|
|
4
|
+
//
|
|
5
|
+
// 1. preflight → docker + compose v2 before touching anything
|
|
6
|
+
// 2. network + infra → postgres, redis and the proxy come up
|
|
7
|
+
// 3. packages on host → db:migrate below needs the new code
|
|
8
|
+
// 4. build → okcms/app image (layer cache unless --no-cache)
|
|
9
|
+
// 5. db:migrate → on the host, between build and traffic
|
|
10
|
+
// 6. up → recreate only the containers whose config changed
|
|
11
|
+
// 7. healthcheck → gate BEFORE moving traffic: failed = nothing changes
|
|
12
|
+
// 8. proxy upstreams → point nginx at the lane-less containers + reload
|
|
13
|
+
// 9. retire old lane → if blue/green was running, drain it after the swap
|
|
14
|
+
//
|
|
15
|
+
// Brief restart instead of zero downtime — that is the trade for speed.
|
|
16
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
17
|
+
import { dirname, join } from 'node:path';
|
|
18
|
+
import { DEPLOY_PATHS, renderSimpleUpstreams, portsFromEnv } from './assets.js';
|
|
19
|
+
import { appCompose, detectActiveLane, ensureNetwork, infraCompose, isHealthy, laneCompose, reloadProxy, waitStopped, waitForContainer, defaultRunner, } from './docker.js';
|
|
20
|
+
import { ensureDeployFiles, loadDeployEnv, migrateInvocation, preflight, DEFAULT_TIMEOUTS, } from './bluegreen.js';
|
|
21
|
+
async function defaultHealthProbe(url) {
|
|
22
|
+
const controller = new AbortController();
|
|
23
|
+
const timer = setTimeout(() => controller.abort(), 5_000);
|
|
24
|
+
try {
|
|
25
|
+
const response = await fetch(url, { signal: controller.signal });
|
|
26
|
+
return response.ok;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
clearTimeout(timer);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Rewrites `00-upstreams.conf` for the lane-less stack. */
|
|
36
|
+
export function writeSimpleUpstreams(cwd, record) {
|
|
37
|
+
const content = renderSimpleUpstreams(portsFromEnv(record));
|
|
38
|
+
const path = join(cwd, DEPLOY_PATHS.nginxUpstreams);
|
|
39
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
40
|
+
writeFileSync(path, content, 'utf-8');
|
|
41
|
+
return content;
|
|
42
|
+
}
|
|
43
|
+
/** true when the upstreams file already targets the simple stack. */
|
|
44
|
+
export function upstreamsAreSimple(cwd) {
|
|
45
|
+
const path = join(cwd, DEPLOY_PATHS.nginxUpstreams);
|
|
46
|
+
if (!existsSync(path))
|
|
47
|
+
return false;
|
|
48
|
+
return /http:\/\/okcms-(?:api|web|admin):/.test(readFileSync(path, 'utf-8'));
|
|
49
|
+
}
|
|
50
|
+
/** `bun add <specs>` with an npm fallback when bun is missing on the host. */
|
|
51
|
+
function installPackages(cwd, packages, runner) {
|
|
52
|
+
const bun = runner('bun', ['add', ...packages], { cwd, inherit: true, timeoutMs: 600_000 });
|
|
53
|
+
if (bun.ok || !/ENOENT|not found|spawn/i.test(bun.stderr))
|
|
54
|
+
return bun;
|
|
55
|
+
return runner('npm', ['install', ...packages], { cwd, inherit: true, timeoutMs: 600_000 });
|
|
56
|
+
}
|
|
57
|
+
export async function deploySimple(opts = {}) {
|
|
58
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
59
|
+
const runner = opts.runner ?? defaultRunner;
|
|
60
|
+
const log = opts.log ?? ((message) => void console.log(message));
|
|
61
|
+
const warn = opts.warn ?? ((message) => void console.warn(message));
|
|
62
|
+
const probe = opts.healthProbe ?? defaultHealthProbe;
|
|
63
|
+
const timeout = { ...DEFAULT_TIMEOUTS, ...opts.timeouts };
|
|
64
|
+
const packages = opts.packages ?? [];
|
|
65
|
+
const record = loadDeployEnv(cwd);
|
|
66
|
+
const created = ensureDeployFiles(cwd, record, runner);
|
|
67
|
+
const previousLane = detectActiveLane(cwd, runner);
|
|
68
|
+
const plan = [
|
|
69
|
+
'Preflight: docker + compose v2',
|
|
70
|
+
'Network okcms-net and infra (postgres, redis, proxy)',
|
|
71
|
+
'Packages on the host',
|
|
72
|
+
'Build image',
|
|
73
|
+
'Migrations on the host',
|
|
74
|
+
'Start the stack (api, web, admin, worker)',
|
|
75
|
+
'Healthcheck (gate: failed = nothing changes)',
|
|
76
|
+
'Point the proxy at the stack (nginx -s reload)',
|
|
77
|
+
...(previousLane ? [`Retire lane ${previousLane}`] : []),
|
|
78
|
+
'Record deploy state',
|
|
79
|
+
];
|
|
80
|
+
const next = (index) => log(`\n[${index}/${plan.length}] ${plan[index - 1]}`);
|
|
81
|
+
const fail = (message) => {
|
|
82
|
+
warn(message);
|
|
83
|
+
return { ok: false, message, created };
|
|
84
|
+
};
|
|
85
|
+
// ---- 1. preflight -------------------------------------------------------
|
|
86
|
+
next(1);
|
|
87
|
+
const ready = preflight(runner);
|
|
88
|
+
if (!ready.ok)
|
|
89
|
+
return fail(ready.message ?? 'Preflight failed.');
|
|
90
|
+
// ---- 2. network + infra -------------------------------------------------
|
|
91
|
+
next(2);
|
|
92
|
+
const network = ensureNetwork(cwd, runner);
|
|
93
|
+
if (!network.ok)
|
|
94
|
+
return fail(`Could not create network okcms-net: ${network.stderr.trim()}`);
|
|
95
|
+
const infra = infraCompose(cwd, ['up', '-d'], runner, true);
|
|
96
|
+
if (!infra.ok)
|
|
97
|
+
return fail(`Infra did not start:\n${infra.stderr.trim()}`);
|
|
98
|
+
for (const dataContainer of ['okcms-postgres', 'okcms-redis']) {
|
|
99
|
+
const healthy = await waitForContainer(runner, dataContainer, isHealthy, {
|
|
100
|
+
timeoutMs: timeout.dataMs,
|
|
101
|
+
intervalMs: timeout.intervalMs,
|
|
102
|
+
});
|
|
103
|
+
if (!healthy) {
|
|
104
|
+
return fail(`${dataContainer} never became healthy — see \`docker logs ${dataContainer}\`.`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
log(' ✓ infra ready (postgres, redis, proxy)');
|
|
108
|
+
// ---- 3. packages on the host -------------------------------------------
|
|
109
|
+
next(3);
|
|
110
|
+
if (opts.installAll) {
|
|
111
|
+
const installed = runner('bun', ['install'], { cwd, inherit: true, timeoutMs: 600_000 });
|
|
112
|
+
if (!installed.ok)
|
|
113
|
+
return fail(`bun install failed:\n${installed.stderr.trim()}`);
|
|
114
|
+
log(' ✓ dependencies installed on the host');
|
|
115
|
+
}
|
|
116
|
+
else if (packages.length > 0) {
|
|
117
|
+
const installed = installPackages(cwd, packages, runner);
|
|
118
|
+
if (!installed.ok) {
|
|
119
|
+
return fail(`Could not install packages (${installed.command}):\n${installed.stderr.trim()}`);
|
|
120
|
+
}
|
|
121
|
+
log(` ✓ ${packages.length} package(s) updated on the host`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
log(' ✓ nothing to install (packages up to date)');
|
|
125
|
+
}
|
|
126
|
+
// ---- 4. build -----------------------------------------------------------
|
|
127
|
+
next(4);
|
|
128
|
+
const build = appCompose(cwd, ['build', ...(opts.noCache ? ['--no-cache'] : [])], runner, true);
|
|
129
|
+
if (!build.ok)
|
|
130
|
+
return fail(`Image build failed:\n${build.stderr.trim()}`);
|
|
131
|
+
log(` ✓ image okcms/app built${opts.noCache ? ' (no cache)' : ''}`);
|
|
132
|
+
// ---- 5. migrations ------------------------------------------------------
|
|
133
|
+
next(5);
|
|
134
|
+
const migrate = migrateInvocation();
|
|
135
|
+
const migrated = runner(migrate.command, migrate.args, { cwd, inherit: true, timeoutMs: 600_000 });
|
|
136
|
+
if (!migrated.ok)
|
|
137
|
+
return fail(`Migrations failed — nothing was switched:\n${migrated.stderr.trim()}`);
|
|
138
|
+
// ---- 6. start the stack -------------------------------------------------
|
|
139
|
+
next(6);
|
|
140
|
+
const up = appCompose(cwd, ['up', '-d'], runner, true);
|
|
141
|
+
if (!up.ok)
|
|
142
|
+
return fail(`Stack did not start:\n${up.stderr.trim()}`);
|
|
143
|
+
// ---- 7. healthcheck — BEFORE moving any traffic -------------------------
|
|
144
|
+
next(7);
|
|
145
|
+
for (const container of ['okcms-api', 'okcms-web', 'okcms-admin']) {
|
|
146
|
+
const healthy = await waitForContainer(runner, container, isHealthy, {
|
|
147
|
+
timeoutMs: timeout.edgeMs,
|
|
148
|
+
intervalMs: timeout.intervalMs,
|
|
149
|
+
});
|
|
150
|
+
if (!healthy) {
|
|
151
|
+
return fail(`${container} never became healthy — nothing was switched; the previous setup keeps serving. ` +
|
|
152
|
+
`Check \`docker logs ${container}\`.`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
log(' ✓ 3 container(s) healthy');
|
|
156
|
+
// ---- 8. proxy upstreams -------------------------------------------------
|
|
157
|
+
next(8);
|
|
158
|
+
writeSimpleUpstreams(cwd, record);
|
|
159
|
+
const reloaded = reloadProxy(cwd, runner);
|
|
160
|
+
if (!reloaded.ok) {
|
|
161
|
+
warn(' nginx -s reload failed — restarting the proxy to pick up the new upstreams.');
|
|
162
|
+
const restarted = runner('docker', ['restart', 'okcms-proxy'], { cwd, timeoutMs: 60_000 });
|
|
163
|
+
if (!restarted.ok) {
|
|
164
|
+
return fail(`Proxy did not reload (${reloaded.stderr.trim() || reloaded.command}) — upstreams left pointing at the previous setup.`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
log(' ✓ proxy now routes to the simple stack');
|
|
168
|
+
// ---- 9. retire an old lane ---------------------------------------------
|
|
169
|
+
if (previousLane) {
|
|
170
|
+
next(9);
|
|
171
|
+
// SIGTERM + stop_grace_period (30s): the queue finishes the job in hand.
|
|
172
|
+
const workerService = `worker-${previousLane}`;
|
|
173
|
+
laneCompose(cwd, previousLane, ['stop', workerService], runner, true);
|
|
174
|
+
await waitStopped(runner, `okcms-${workerService}`, {
|
|
175
|
+
timeoutMs: timeout.stopMs,
|
|
176
|
+
intervalMs: Math.min(1_000, timeout.intervalMs),
|
|
177
|
+
});
|
|
178
|
+
const down = laneCompose(cwd, previousLane, ['down'], runner, true);
|
|
179
|
+
if (!down.ok) {
|
|
180
|
+
warn(` Lane ${previousLane} did not go down cleanly: ${down.stderr.trim()}`);
|
|
181
|
+
warn(` Run it manually: docker compose -p okcms-${previousLane} down`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
log(` ✓ lane ${previousLane} drained and removed`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// ---- 10. state ----------------------------------------------------------
|
|
188
|
+
next(plan.length);
|
|
189
|
+
const healthy = await probe('http://127.0.0.1/health');
|
|
190
|
+
if (!healthy) {
|
|
191
|
+
warn(' Note: http://127.0.0.1/health did not answer through the proxy.\n' +
|
|
192
|
+
' Containers are healthy (internal check) — check SERVER_NAME / Host header.');
|
|
193
|
+
}
|
|
194
|
+
log('\n Deploy done: simple stack is live.');
|
|
195
|
+
if (created.length > 0)
|
|
196
|
+
log(` Deploy files created: ${created.join(', ')}`);
|
|
197
|
+
log(' Site: http://<host>/ · Admin: http://<host>:8080/');
|
|
198
|
+
return { ok: true, created };
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=simple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple.js","sourceRoot":"","sources":["../src/simple.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,6DAA6D;AAC7D,EAAE;AACF,uEAAuE;AACvE,gEAAgE;AAChE,8DAA8D;AAC9D,0EAA0E;AAC1E,iEAAiE;AACjE,4EAA4E;AAC5E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,aAAa,GAGd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,gBAAgB,GAEjB,MAAM,gBAAgB,CAAC;AA2BxB,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAA8B;IAC9E,MAAM,OAAO,GAAG,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IACpD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,mCAAmC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,8EAA8E;AAC9E,SAAS,eAAe,CACtB,GAAW,EACX,QAAkB,EAClB,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC;IACtE,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B,EAAE;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,OAAe,EAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAe,EAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC;IACrD,MAAM,OAAO,GAA6B,EAAE,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAErC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAa;QACrB,gCAAgC;QAChC,sDAAsD;QACtD,sBAAsB;QACtB,aAAa;QACb,wBAAwB;QACxB,2CAA2C;QAC3C,8CAA8C;QAC9C,gDAAgD;QAChD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,qBAAqB;KACtB,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,KAAa,EAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAG,CAAC,OAAe,EAAsB,EAAE;QACnD,IAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC,CAAC;IAEF,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;IAEjE,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,uCAAuC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE7F,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,yBAAyB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE3E,KAAK,MAAM,aAAa,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE;YACvE,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,GAAG,aAAa,6CAA6C,aAAa,KAAK,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IACD,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAEhD,2EAA2E;IAC3E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,wBAAwB,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClF,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,+BAA+B,SAAS,CAAC,OAAO,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,GAAG,CAAC,OAAO,QAAQ,CAAC,MAAM,iCAAiC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,8CAA8C,CAAC,CAAC;IACtD,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAChG,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,wBAAwB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1E,GAAG,CAAC,4BAA4B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAErE,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACnG,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,8CAA8C,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtG,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAErE,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,KAAK,MAAM,SAAS,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC;QAClE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE;YACnE,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CACT,GAAG,SAAS,kFAAkF;gBAC5F,uBAAuB,SAAS,KAAK,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAElC,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,+EAA+E,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CACT,yBAAyB,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,oDAAoD,CACxH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAEhD,2EAA2E;IAC3E,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,CAAC;QACR,yEAAyE;QACzE,MAAM,aAAa,GAAG,UAAU,YAAY,EAAE,CAAC;QAC/C,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,WAAW,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,EAAE;YAClD,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;SAChD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,YAAY,6BAA6B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,8CAA8C,YAAY,OAAO,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,YAAY,YAAY,sBAAsB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CACF,qEAAqE;YACnE,8EAA8E,CACjF,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,GAAG,CAAC,uDAAuD,CAAC,CAAC;IAE7D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
package/dist/start.js
CHANGED
|
@@ -11,7 +11,7 @@ function spawnApp(label, command, args, env) {
|
|
|
11
11
|
});
|
|
12
12
|
recordPid(label, child.pid ?? -1);
|
|
13
13
|
child.on('error', (error) => {
|
|
14
|
-
console.error(`[start] ${label}
|
|
14
|
+
console.error(`[start] ${label} failed:`, error.message);
|
|
15
15
|
});
|
|
16
16
|
children.push(child);
|
|
17
17
|
}
|