@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.
Files changed (85) hide show
  1. package/dist/assets.d.ts +23 -6
  2. package/dist/assets.d.ts.map +1 -1
  3. package/dist/assets.js +262 -87
  4. package/dist/assets.js.map +1 -1
  5. package/dist/bluegreen.d.ts.map +1 -1
  6. package/dist/bluegreen.js +75 -52
  7. package/dist/bluegreen.js.map +1 -1
  8. package/dist/commands.d.ts.map +1 -1
  9. package/dist/commands.js +269 -131
  10. package/dist/commands.js.map +1 -1
  11. package/dist/config-wizard.js +34 -36
  12. package/dist/config-wizard.js.map +1 -1
  13. package/dist/deploy-target.d.ts +20 -0
  14. package/dist/deploy-target.d.ts.map +1 -0
  15. package/dist/deploy-target.js +90 -0
  16. package/dist/deploy-target.js.map +1 -0
  17. package/dist/deploy.d.ts +20 -0
  18. package/dist/deploy.d.ts.map +1 -0
  19. package/dist/deploy.js +154 -0
  20. package/dist/deploy.js.map +1 -0
  21. package/dist/docker.d.ts +16 -0
  22. package/dist/docker.d.ts.map +1 -1
  23. package/dist/docker.js +25 -0
  24. package/dist/docker.js.map +1 -1
  25. package/dist/docs-updater.d.ts +10 -0
  26. package/dist/docs-updater.d.ts.map +1 -0
  27. package/dist/docs-updater.js +45 -0
  28. package/dist/docs-updater.js.map +1 -0
  29. package/dist/doctor.js +12 -12
  30. package/dist/doctor.js.map +1 -1
  31. package/dist/env-file.js +1 -1
  32. package/dist/env-file.js.map +1 -1
  33. package/dist/env-schema.d.ts.map +1 -1
  34. package/dist/env-schema.js +64 -64
  35. package/dist/env-schema.js.map +1 -1
  36. package/dist/extension-scaffold.js +5 -5
  37. package/dist/extension-scaffold.js.map +1 -1
  38. package/dist/guards.js +8 -8
  39. package/dist/guards.js.map +1 -1
  40. package/dist/history.d.ts +48 -0
  41. package/dist/history.d.ts.map +1 -0
  42. package/dist/history.js +104 -0
  43. package/dist/history.js.map +1 -0
  44. package/dist/installer.js +9 -9
  45. package/dist/installer.js.map +1 -1
  46. package/dist/npm-registry.js +1 -1
  47. package/dist/npm-registry.js.map +1 -1
  48. package/dist/pm2.d.ts +18 -0
  49. package/dist/pm2.d.ts.map +1 -0
  50. package/dist/pm2.js +179 -0
  51. package/dist/pm2.js.map +1 -0
  52. package/dist/project-config.js +1 -1
  53. package/dist/project-config.js.map +1 -1
  54. package/dist/prompt.d.ts +27 -4
  55. package/dist/prompt.d.ts.map +1 -1
  56. package/dist/prompt.js +254 -29
  57. package/dist/prompt.js.map +1 -1
  58. package/dist/redeploy.d.ts +6 -1
  59. package/dist/redeploy.d.ts.map +1 -1
  60. package/dist/redeploy.js +137 -74
  61. package/dist/redeploy.js.map +1 -1
  62. package/dist/rollback.d.ts +15 -0
  63. package/dist/rollback.d.ts.map +1 -0
  64. package/dist/rollback.js +170 -0
  65. package/dist/rollback.js.map +1 -0
  66. package/dist/scaffold-docs.d.ts +5 -0
  67. package/dist/scaffold-docs.d.ts.map +1 -1
  68. package/dist/scaffold-docs.js +61 -19
  69. package/dist/scaffold-docs.js.map +1 -1
  70. package/dist/scaffold.d.ts +3 -1
  71. package/dist/scaffold.d.ts.map +1 -1
  72. package/dist/scaffold.js +25 -16
  73. package/dist/scaffold.js.map +1 -1
  74. package/dist/simple.d.ts +31 -0
  75. package/dist/simple.d.ts.map +1 -0
  76. package/dist/simple.js +200 -0
  77. package/dist/simple.js.map +1 -0
  78. package/dist/start.js +1 -1
  79. package/dist/theme-build.js +3 -3
  80. package/dist/theme-build.js.map +1 -1
  81. package/dist/update.d.ts +23 -15
  82. package/dist/update.d.ts.map +1 -1
  83. package/dist/update.js +211 -66
  84. package/dist/update.js.map +1 -1
  85. package/package.json +7 -7
package/dist/redeploy.js CHANGED
@@ -1,29 +1,34 @@
1
1
  // @oktis-works/cms - `okcms redeploy` (F4)
2
2
  //
3
- // Instalar plugin/tema no host ainda não muda o que está no ar:
3
+ // Installing a plugin/theme on the host still does not change what is running:
4
4
  //
5
- // plugins e temas entram na imagem pelo `COPY . .` do Dockerfile (o
6
- // `.dockerignore` os preserva de propósito) — sem rebuild, o container segue
7
- // servindo a cópia antiga;
5
+ // plugins and themes enter the image through the Dockerfile `COPY . .` (the
6
+ // `.dockerignore` keeps them on purpose) — without a rebuild the container
7
+ // keeps serving the old copy;
8
8
  //
9
- // `themes/<n>/dist/theme.css` só existe se o build de estilo rodou no host:
10
- // o web linka esse arquivo pronto, ele não é compilado dentro do container;
9
+ // `themes/<n>/dist/theme.css` only exists if the style build ran on the
10
+ // host: the web app links that ready file, it is not compiled inside the
11
+ // container;
11
12
  //
12
- // um plugin que mexe no banco traz SQL em `plugins/<n>/migrations/`, que
13
- // precisa chegar em `migrations/` para o `db:migrate` aplicá-lo — o runner
14
- // só lê UM diretório e classifica como PLUGIN todo owner que não é `core`
15
- // (`V###__owner__nome.sql`, rastreado por `owner:version`).
13
+ // a plugin that touches the database ships SQL in `plugins/<n>/migrations/`,
14
+ // which must reach `migrations/` for `db:migrate` to apply it — the runner
15
+ // reads ONE directory and classifies as PLUGIN every owner that is not
16
+ // `core` (`V###__owner__name.sql`, tracked as `owner:version`).
16
17
  //
17
- // Redeploy = preparar no host (stage do SQL + build dos temas) e então
18
- // delegar a troca ao mesmo blue/green do `okcms update --mode deploy`, só que
19
- // sem `bun add`: o que mudou é conteúdo de extensão, não versão de pacote.
18
+ // Redeploy = prepare on the host (SQL staging + theme build) and then hand the
19
+ // switch to the chosen target — blue/green lanes, the simple stack or PM2 —
20
+ // always without `bun add`: what changed is extension content, not a package
21
+ // version.
20
22
  //
21
- // Ordem e garantias são as do deploy normal: falha no preparo = nada foi
22
- // buildado nem trocado; falha no deploy = rollback e a lane que estava
23
- // servindo continua servindo.
23
+ // Order and guarantees are the normal deploy's: a preparation failure = no
24
+ // build and no switch; a deploy failure = rollback, and the lane that was
25
+ // serving keeps serving.
24
26
  import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync } from 'node:fs';
25
27
  import { dirname, join } from 'node:path';
26
28
  import { deployBlueGreen } from './bluegreen.js';
29
+ import { deploySimple } from './simple.js';
30
+ import { deployPm2 } from './pm2.js';
31
+ import { resolveTarget, saveTarget } from './deploy-target.js';
27
32
  import { assertHostOnly } from './guards.js';
28
33
  import { loadProjectConfig } from './project-config.js';
29
34
  import { Prompt } from './prompt.js';
@@ -116,7 +121,7 @@ export function planRedeploy(opts = {}) {
116
121
  output: 'dist/theme.css',
117
122
  entry: null,
118
123
  status: 'invalid-manifest',
119
- problems: ['manifesto não é um JSON válido'],
124
+ problems: ['manifest is not valid JSON'],
120
125
  });
121
126
  continue;
122
127
  }
@@ -125,7 +130,7 @@ export function planRedeploy(opts = {}) {
125
130
  const problems = [];
126
131
  if (typeof resolved.manifest['name'] !== 'string' ||
127
132
  typeof resolved.manifest['version'] !== 'string') {
128
- problems.push('manifesto sem "name" e/ou "version"');
133
+ problems.push('manifest without "name" and/or "version"');
129
134
  }
130
135
  problems.push(...resolved.report.errors);
131
136
  const { report } = resolved;
@@ -170,60 +175,70 @@ export function stagePluginMigrations(plan) {
170
175
  }
171
176
  return result;
172
177
  }
173
- /** Linhas do resumo do redeploy — puras, para `--dry-run` e para os testes. */
178
+ /** Redeploy summary lines — pure, for `--dry-run` and for the tests. */
174
179
  export function renderPlan(plan, opts = {}) {
175
180
  const lines = [];
176
- lines.push(`plugins: ${plan.plugins.length > 0 ? plan.plugins.join(', ') : 'nenhum'}`);
177
- lines.push(`temas: ${plan.themes.length > 0 ? plan.themes.join(', ') : 'nenhum'}`);
181
+ lines.push(`plugins: ${plan.plugins.length > 0 ? plan.plugins.join(', ') : 'none'}`);
182
+ lines.push(`themes: ${plan.themes.length > 0 ? plan.themes.join(', ') : 'none'}`);
178
183
  if (opts.skipMigrations) {
179
- lines.push('migrations de plugin: puladas (--skip-migrations)');
184
+ lines.push('plugin migrations: skipped (--skip-migrations)');
180
185
  }
181
186
  else if (plan.migrations.length === 0) {
182
- lines.push('migrations de plugin: nenhuma');
187
+ lines.push('plugin migrations: none');
183
188
  }
184
189
  else {
185
- lines.push('migrations de plugin (plugins/*/migrations → migrations/):');
190
+ lines.push('plugin migrations (plugins/*/migrations → migrations/):');
186
191
  for (const entry of plan.migrations) {
187
192
  const who = `${entry.plugin}: ${entry.file}`;
188
193
  if (entry.status === 'new')
189
- lines.push(` + ${who} → migrations/ (novo)`);
194
+ lines.push(` + ${who} → migrations/ (new)`);
190
195
  else if (entry.status === 'staged')
191
- lines.push(` = ${who} (já em migrations/)`);
196
+ lines.push(` = ${who} (already in migrations/)`);
192
197
  else if (entry.status === 'conflict')
193
- lines.push(` ! ${who} difere do que já está em migrations/ — mantido o do projeto`);
198
+ lines.push(` ! ${who} differs from migrations/ — project copy kept`);
194
199
  else
195
- lines.push(` ! ${who} fora do padrão V###__owner__nome.sql — não copiado`);
200
+ lines.push(` ! ${who} does not match V###__owner__name.sql — not copied`);
196
201
  }
197
202
  }
198
203
  if (opts.skipThemeBuild) {
199
- lines.push('build de tema: pulado (--skip-theme-build)');
204
+ lines.push('theme build: skipped (--skip-theme-build)');
200
205
  }
201
206
  else if (plan.themeBuilds.length === 0) {
202
- lines.push('build de tema: nenhum tema instalado');
207
+ lines.push('theme build: no theme installed');
203
208
  }
204
209
  else {
205
- lines.push('build de tema:');
210
+ lines.push('theme build:');
206
211
  for (const entry of plan.themeBuilds) {
207
212
  if (entry.status === 'build') {
208
213
  lines.push(` ✓ ${entry.theme} — ${entry.engine} → ${entry.output}`);
209
214
  }
210
215
  else if (entry.status === 'no-entry') {
211
- lines.push(` - ${entry.theme} — sem entrada de estilo (${entry.engine})`);
216
+ lines.push(` - ${entry.theme} — no style entry (${entry.engine})`);
212
217
  }
213
218
  else if (entry.status === 'missing-manifest') {
214
- lines.push(` ! ${entry.theme} — sem theme.json`);
219
+ lines.push(` ! ${entry.theme} — no theme.json`);
215
220
  }
216
221
  else {
217
- lines.push(` ! ${entry.theme} — manifest recusado: ${entry.problems.join('; ')}`);
222
+ lines.push(` ! ${entry.theme} — manifest rejected: ${entry.problems.join('; ')}`);
218
223
  }
219
224
  }
220
225
  }
221
226
  for (const file of plan.invalidExisting) {
222
- lines.push(` ! migrations/${file} fora do padrão V###__owner__nome.sql — quebra todo db:migrate`);
227
+ lines.push(` ! migrations/${file} does not match V###__owner__name.sql — breaks every db:migrate`);
223
228
  }
224
- lines.push('ordem: stage no host → build da imagem → migrations → health → swap → worker → down');
229
+ lines.push(orderLine(opts.target ?? 'blue-green'));
225
230
  return lines;
226
231
  }
232
+ /** The deploy order for the chosen target (the plan's last line). */
233
+ function orderLine(target) {
234
+ if (target === 'pm2') {
235
+ return 'order: stage on host → migrations → pm2 startOrReload';
236
+ }
237
+ if (target === 'simple') {
238
+ return 'order: stage on host → build image → migrations → up -d → proxy → health';
239
+ }
240
+ return 'order: stage on host → build image → migrations → health → swap → worker → down';
241
+ }
227
242
  export async function runRedeploy(opts = {}) {
228
243
  const prompt = opts.prompt ?? new Prompt();
229
244
  const ownsPrompt = opts.prompt === undefined;
@@ -239,7 +254,7 @@ export async function runRedeploy(opts = {}) {
239
254
  return 1;
240
255
  }
241
256
  const onInterrupt = () => {
242
- prompt.write(`\n interrompido — nenhuma troca de lane em andamento foi registrada.\n`);
257
+ prompt.write(`\n interrupted — no lane switch in progress was recorded.\n`);
243
258
  process.exit(130);
244
259
  };
245
260
  process.once('SIGINT', onInterrupt);
@@ -248,48 +263,64 @@ export async function runRedeploy(opts = {}) {
248
263
  const config = loadProjectConfig(cwd);
249
264
  const themesDir = join(cwd, config.themesDir);
250
265
  if (opts.plugin && !plan.plugins.includes(opts.plugin)) {
251
- prompt.error(`plugin não encontrado: ${opts.plugin}`);
252
- prompt.info(`instalados: ${plan.plugins.join(', ') || 'nenhum'}`);
266
+ prompt.error(`plugin not found: ${opts.plugin}`);
267
+ prompt.info(`installed: ${plan.plugins.join(', ') || 'none'}`);
253
268
  return 1;
254
269
  }
255
270
  if (opts.theme && !plan.themes.includes(opts.theme)) {
256
- prompt.error(`tema não encontrado: ${opts.theme}`);
257
- prompt.info(`instalados: ${plan.themes.join(', ') || 'nenhum'}`);
271
+ prompt.error(`theme not found: ${opts.theme}`);
272
+ prompt.info(`installed: ${plan.themes.join(', ') || 'none'}`);
273
+ return 1;
274
+ }
275
+ // ---- deploy target (arrow menu, last choice remembered) ---------------
276
+ let target;
277
+ try {
278
+ target = await resolveTarget({ cwd, target: opts.target, yes: opts.yes }, prompt);
279
+ }
280
+ catch (error) {
281
+ prompt.error(error instanceof Error ? error.message : String(error));
258
282
  return 1;
259
283
  }
260
284
  prompt.heading('OkCMS redeploy');
261
- for (const line of renderPlan(plan, opts))
285
+ for (const line of renderPlan(plan, { ...opts, target }))
262
286
  write(`${line}\n`);
263
- // `.sql` inválido em migrations/ derruba o `db:migrate` do passo 5 do
264
- // deploy. Falhar aqui é melhor que falhar no meio do blue/green.
287
+ // A stray `.sql` in migrations/ breaks step 5 of the deploy (`db:migrate`).
288
+ // Failing here beats failing in the middle of a blue/green switch.
265
289
  if (plan.invalidExisting.length > 0) {
266
- prompt.error(`${plan.invalidExisting.length} arquivo(s) em migrations/ fora do padrão ` +
267
- `V###__owner__nome.sql — o db:migrate falharia. Renomeie ou remova.`);
290
+ prompt.error(`${plan.invalidExisting.length} file(s) in migrations/ do not match ` +
291
+ `V###__owner__name.sql — db:migrate would fail. Rename or remove them.`);
268
292
  return 1;
269
293
  }
270
294
  if (opts.dryRun) {
271
- prompt.info('dry-run: nada foi executado.');
295
+ prompt.info('dry-run: nothing was executed.');
272
296
  return 0;
273
297
  }
274
- const choices = await resolveDeployChoices(opts, prompt);
298
+ const choices = await resolveDeployChoices(opts, prompt, target);
275
299
  const interactive = prompt.interactive && opts.yes !== true;
276
300
  if (interactive) {
277
- prompt.heading('Resumo do redeploy');
278
- prompt.info(`stage: ${plan.migrations.filter((m) => m.status === 'new').length} migration(s) de plugin`);
279
- prompt.info(`build de estilo: ${plan.themeBuilds.filter((t) => t.status === 'build').length} tema(s)`);
280
- prompt.info(`imagem: ${choices.noCache ? 'sem cache' : 'com cache de camadas'}`);
281
- prompt.info(`órfãos da lane antiga: ${choices.removeOrphans ? 'remover' : 'manter'}`);
282
- const confirmed = await prompt.confirm('Iniciar redeploy?', { defaultValue: true });
301
+ prompt.heading(`Redeploy summary — ${target}`);
302
+ prompt.info(`stage: ${plan.migrations.filter((m) => m.status === 'new').length} plugin migration(s)`);
303
+ prompt.info(`style build: ${plan.themeBuilds.filter((t) => t.status === 'build').length} theme(s)`);
304
+ if (target === 'pm2') {
305
+ prompt.info('host: PM2 startOrReload (no docker build)');
306
+ }
307
+ else {
308
+ prompt.info(`image: ${choices.noCache ? 'no cache' : 'layer cache'}`);
309
+ if (target === 'blue-green') {
310
+ prompt.info(`old lane orphans: ${choices.removeOrphans ? 'remove' : 'keep'}`);
311
+ }
312
+ }
313
+ const confirmed = await prompt.confirm('Start the redeploy?', { defaultValue: true });
283
314
  if (!confirmed) {
284
- prompt.warn('cancelado — nada foi executado.');
315
+ prompt.warn('cancelled — nothing was executed.');
285
316
  return 0;
286
317
  }
287
318
  }
288
- // ---- stage de migrations ----------------------------------------------
319
+ // ---- plugin migrations staging ----------------------------------------
289
320
  if (opts.skipMigrations) {
290
321
  const pending = plan.migrations.filter((m) => m.status === 'new').length;
291
322
  if (pending > 0) {
292
- prompt.warn(`${pending} migration(s) de plugin não copiadas (--skip-migrations).`);
323
+ prompt.warn(`${pending} plugin migration(s) not copied (--skip-migrations).`);
293
324
  }
294
325
  }
295
326
  else {
@@ -297,18 +328,18 @@ export async function runRedeploy(opts = {}) {
297
328
  for (const item of staged.copied)
298
329
  write(` + migrations: ${item}\n`);
299
330
  if (staged.copied.length > 0) {
300
- prompt.success(`${staged.copied.length} migration(s) de plugin em migrations/`);
331
+ prompt.success(`${staged.copied.length} plugin migration(s) staged in migrations/`);
301
332
  }
302
333
  for (const item of staged.conflicts)
303
- prompt.warn(`conflito (mantido o do projeto): ${item}`);
334
+ prompt.warn(`conflict (project copy kept): ${item}`);
304
335
  for (const item of staged.invalid)
305
- prompt.warn(`fora do padrão, não copiada: ${item}`);
336
+ prompt.warn(`off-pattern, not copied: ${item}`);
306
337
  }
307
- // ---- build de estilo ---------------------------------------------------
338
+ // ---- theme style build -------------------------------------------------
308
339
  const toBuild = plan.themeBuilds.filter((entry) => entry.status === 'build');
309
340
  if (opts.skipThemeBuild) {
310
341
  if (toBuild.length > 0) {
311
- prompt.warn(`${toBuild.length} tema(s) sem build de estilo (--skip-theme-build).`);
342
+ prompt.warn(`${toBuild.length} theme(s) without a style build (--skip-theme-build).`);
312
343
  }
313
344
  }
314
345
  else {
@@ -317,40 +348,72 @@ export async function runRedeploy(opts = {}) {
317
348
  const outcome = await buildThemeStylesOnDisk(themesDir, entry.theme);
318
349
  for (const warning of outcome.warnings)
319
350
  prompt.warn(`${entry.theme}: ${warning}`);
320
- write(` ✓ tema ${outcome.theme}: ${outcome.engine} → ${outcome.output} ` +
351
+ write(` ✓ theme ${outcome.theme}: ${outcome.engine} → ${outcome.output} ` +
321
352
  `(${outcome.bytes} bytes, isolated=${outcome.isolated})\n`);
322
353
  }
323
354
  catch (error) {
324
- prompt.error(`build do tema ${entry.theme} falhou: ${error instanceof Error ? error.message : String(error)}`);
325
- prompt.warn('nada foi buildado nem trocado — a lane atual segue no ar.');
355
+ prompt.error(`theme build failed for ${entry.theme}: ${error instanceof Error ? error.message : String(error)}`);
356
+ prompt.warn('nothing was built or switched — the current stack keeps serving.');
326
357
  return 1;
327
358
  }
328
359
  }
329
360
  for (const entry of plan.themeBuilds) {
330
361
  if (entry.status === 'missing-manifest') {
331
- prompt.warn(`${entry.theme}: sem theme.json — ignorado.`);
362
+ prompt.warn(`${entry.theme}: no theme.json — skipped.`);
332
363
  }
333
364
  else if (entry.status === 'invalid-manifest') {
334
- prompt.warn(`${entry.theme}: manifest recusado — ${entry.problems.join('; ')}`);
365
+ prompt.warn(`${entry.theme}: manifest rejected — ${entry.problems.join('; ')}`);
335
366
  }
336
367
  }
337
368
  }
338
- // ---- deploy blue/green -------------------------------------------------
369
+ // ---- deploy ------------------------------------------------------------
370
+ const installAll = !existsSync(join(cwd, 'node_modules', '@oktis-works'));
371
+ if (target === 'pm2') {
372
+ // No image is built here, so the staged SQL is applied by the same
373
+ // `db:migrate` PM2 always runs before reloading.
374
+ const code = await deployPm2({
375
+ cwd,
376
+ prompt,
377
+ runner: opts.runner,
378
+ install: false,
379
+ yes: opts.yes === true,
380
+ });
381
+ if (code === 0)
382
+ saveTarget(cwd, 'pm2');
383
+ return code;
384
+ }
385
+ if (target === 'simple') {
386
+ const result = await deploySimple({
387
+ cwd,
388
+ runner: opts.runner,
389
+ noCache: opts.noCache === true,
390
+ packages: [],
391
+ installAll,
392
+ log: write,
393
+ warn: write,
394
+ });
395
+ if (!result.ok)
396
+ return 1;
397
+ saveTarget(cwd, 'simple');
398
+ prompt.success('redeploy done on the simple stack');
399
+ return 0;
400
+ }
339
401
  const result = await deployBlueGreen({
340
402
  cwd,
341
403
  runner: opts.runner,
342
404
  choices,
343
- // Sem `bun add`: o que mudou é conteúdo de extensão, não versão de
344
- // pacote. Só instala tudo quando o host nem tem node_modules — sem ele
345
- // o `db:migrate` do passo 5 não tem como rodar.
405
+ // No `bun add`: what changed is extension content, not a package version.
406
+ // Everything is installed only when the host has no node_modules —
407
+ // without it step 5 (`db:migrate`) has nothing to run.
346
408
  packages: [],
347
- installAll: !existsSync(join(cwd, 'node_modules', '@oktis-works')),
409
+ installAll,
348
410
  log: write,
349
411
  warn: write,
350
412
  });
351
413
  if (result.ok) {
352
- prompt.success(`redeploy concluído na lane ${result.lane}` +
353
- (result.previousLane ? ` (lane anterior: ${result.previousLane})` : ''));
414
+ saveTarget(cwd, 'blue-green');
415
+ prompt.success(`redeploy done on lane ${result.lane}` +
416
+ (result.previousLane ? ` (previous lane: ${result.previousLane})` : ''));
354
417
  }
355
418
  return result.ok ? 0 : 1;
356
419
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redeploy.js","sourceRoot":"","sources":["../src/redeploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redeploy.js","sourceRoot":"","sources":["../src/redeploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Prompt } from './prompt.js';
2
+ import { defaultRunner } from './docker.js';
3
+ export interface RollbackOptions {
4
+ cwd?: string;
5
+ /** ID da entrada do histórico (se omitido, abre menu interativo). */
6
+ id?: number;
7
+ /** `--yes`: confirma sem prompt. */
8
+ yes?: boolean;
9
+ /** `--force`: permite rodar dentro de container (não recomendado). */
10
+ force?: boolean;
11
+ prompt?: Prompt;
12
+ runner?: typeof defaultRunner;
13
+ }
14
+ export declare function runRollback(opts?: RollbackOptions): Promise<number>;
15
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../src/rollback.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,aAAa,CAAC;CAC/B;AA8HD,wBAAsB,WAAW,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyE7E"}
@@ -0,0 +1,170 @@
1
+ // @oktis-works/cms - `okcms rollback` (histórico + rollback)
2
+ //
3
+ // Lista o histórico de updates/deploys e permite voltar para um estado anterior.
4
+ // O rollback de "download" restaura package.json (requer reinstall).
5
+ // O rollback de "deploy" troca a lane ativa no proxy (blue <-> green).
6
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import { Prompt } from './prompt.js';
9
+ import { listHistory, getHistoryEntry } from './history.js';
10
+ import { reloadProxy, writeUpstreams } from './docker.js';
11
+ import { defaultRunner } from './docker.js';
12
+ import { loadEnvFile } from './env-file.js';
13
+ function printHistory(cwd) {
14
+ const entries = listHistory(cwd);
15
+ if (entries.length === 0) {
16
+ console.log('History is empty.');
17
+ return;
18
+ }
19
+ console.log('\nUpdate/deploy history (newest first):\n');
20
+ for (const entry of entries) {
21
+ console.log(entry.id + '. ' + entry.at.split('T')[0] + ' ' + entry.at.split('T')[1]?.slice(0, 8));
22
+ console.log(' ' + entry.mode + ': ' + entry.message);
23
+ if (entry.packages && entry.packages.length > 0) {
24
+ for (const p of entry.packages) {
25
+ console.log(` @oktis-works/${p.name}: ${p.from} → ${p.to}`);
26
+ }
27
+ }
28
+ if (entry.lane) {
29
+ console.log(` lane: ${entry.lane}${entry.previousLane ? ` (was ${entry.previousLane})` : ''}`);
30
+ }
31
+ console.log('');
32
+ }
33
+ }
34
+ /** Executa rollback de download: restaura package.json e orienta reinstall. */
35
+ async function rollbackDownload(cwd, entry, prompt) {
36
+ const pkgPath = join(cwd, 'package.json');
37
+ if (!existsSync(pkgPath)) {
38
+ prompt.error('package.json not found.');
39
+ return 1;
40
+ }
41
+ const currentPkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
42
+ let changed = false;
43
+ if (entry.packages) {
44
+ for (const p of entry.packages) {
45
+ const depName = `@oktis-works/${p.name}`;
46
+ for (const depType of ['dependencies', 'devDependencies', 'optionalDependencies']) {
47
+ if (currentPkg[depType]?.[depName]) {
48
+ currentPkg[depType][depName] = p.from;
49
+ changed = true;
50
+ }
51
+ }
52
+ }
53
+ }
54
+ if (!changed) {
55
+ prompt.warn('No @oktis-works/* dependency to revert in package.json.');
56
+ return 0;
57
+ }
58
+ writeFileSync(pkgPath, JSON.stringify(currentPkg, null, 2) + '\n', 'utf-8');
59
+ prompt.success('package.json reverted to previous versions.');
60
+ prompt.info('Run `bun install` (or `npm install`) to apply the rollback.');
61
+ return 0;
62
+ }
63
+ /** Executa rollback de deploy: troca a lane ativa no proxy. */
64
+ async function rollbackDeploy(cwd, entry, prompt, runner) {
65
+ if (!entry.previousLane) {
66
+ prompt.error('No previous lane to roll back to (first deploy?).');
67
+ return 1;
68
+ }
69
+ const targetLane = entry.previousLane;
70
+ const currentLane = entry.lane;
71
+ prompt.heading(`Deploy rollback: ${currentLane} → ${targetLane}`);
72
+ prompt.info('Switching the proxy to the previous lane...');
73
+ const record = loadEnvFile(join(cwd, '.env')).toRecord();
74
+ writeUpstreams(cwd, targetLane, record);
75
+ const reloaded = reloadProxy(cwd, runner);
76
+ if (!reloaded.ok) {
77
+ prompt.error('Failed to reload nginx: ' + reloaded.stderr);
78
+ return 1;
79
+ }
80
+ // Atualiza estado da lane
81
+ const statePath = join(cwd, '.deploy', 'state.json');
82
+ let state = { lane: targetLane, previousLane: currentLane, version: '', at: new Date().toISOString(), history: [] };
83
+ try {
84
+ const raw = readFileSync(statePath, 'utf-8');
85
+ state = JSON.parse(raw);
86
+ }
87
+ catch { }
88
+ state.lane = targetLane;
89
+ state.previousLane = currentLane;
90
+ state.at = new Date().toISOString();
91
+ const { writeLaneState } = await import('./docker.js');
92
+ writeLaneState(cwd, state);
93
+ prompt.success(`Rollback complete. Active lane: ${targetLane}`);
94
+ return 0;
95
+ }
96
+ /** Executa rollback de PM2: restaura ecosystem.config.js anterior (se houver snapshot). */
97
+ async function rollbackPm2(cwd, entry, prompt) {
98
+ if (!entry.packageJsonSnapshot) {
99
+ prompt.error('No package.json snapshot for PM2 rollback.');
100
+ return 1;
101
+ }
102
+ const pkgPath = join(cwd, 'package.json');
103
+ writeFileSync(pkgPath, entry.packageJsonSnapshot, 'utf-8');
104
+ prompt.success('package.json restored. Run `bun install` and `pm2 reload all`.');
105
+ return 0;
106
+ }
107
+ export async function runRollback(opts = {}) {
108
+ const cwd = opts.cwd ?? process.cwd();
109
+ const prompt = opts.prompt ?? new Prompt();
110
+ const ownsPrompt = opts.prompt === undefined;
111
+ const runner = opts.runner ?? defaultRunner;
112
+ const guard = (await import('./guards.js')).assertHostOnly('okcms rollback', { force: opts.force });
113
+ if (!guard.ok) {
114
+ console.error(guard.message);
115
+ if (ownsPrompt)
116
+ prompt.close();
117
+ return 1;
118
+ }
119
+ try {
120
+ const entries = listHistory(cwd);
121
+ if (entries.length === 0) {
122
+ prompt.warn('History is empty — nothing to roll back.');
123
+ return 0;
124
+ }
125
+ let targetId = opts.id;
126
+ if (targetId === undefined) {
127
+ printHistory(cwd);
128
+ targetId = await prompt.select('Choose the state to roll back to (newest = 1)', entries.map((e) => ({
129
+ value: e.id,
130
+ label: `#${e.id} ${e.at.slice(0, 19).replace('T', ' ')} — ${e.mode}: ${e.message}`,
131
+ })), { defaultValue: entries[0]?.id });
132
+ }
133
+ const entry = getHistoryEntry(cwd, targetId);
134
+ if (!entry) {
135
+ prompt.error(`Entry #${targetId} not found in history.`);
136
+ return 1;
137
+ }
138
+ if (!opts.yes) {
139
+ const confirmed = await prompt.confirm(`Confirm rollback to #${entry.id} (${entry.mode}: ${entry.message})?`, { defaultValue: false });
140
+ if (!confirmed) {
141
+ prompt.info('Cancelled.');
142
+ return 0;
143
+ }
144
+ }
145
+ let code;
146
+ switch (entry.mode) {
147
+ case 'download':
148
+ code = await rollbackDownload(cwd, entry, prompt);
149
+ break;
150
+ case 'deploy':
151
+ code = await rollbackDeploy(cwd, entry, prompt, runner);
152
+ break;
153
+ case 'pm2':
154
+ code = await rollbackPm2(cwd, entry, prompt);
155
+ break;
156
+ default:
157
+ prompt.error(`Unknown mode: ${entry.mode}`);
158
+ return 1;
159
+ }
160
+ if (code === 0) {
161
+ prompt.success('Rollback completed successfully.');
162
+ }
163
+ return code;
164
+ }
165
+ finally {
166
+ if (ownsPrompt)
167
+ prompt.close();
168
+ }
169
+ }
170
+ //# sourceMappingURL=rollback.js.map