Add one-command dev-to-prod release with clear SUCCESS/FAILED banners.

Introduce devtoprod:release orchestrator, config file, CLI result footers on deploy scripts, auto-thumb regeneration on curator fixes, and updated deploy documentation.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Danila Khodjaef
2026-07-08 14:54:56 +03:00
co-authored by Cursor
parent 313666a4ab
commit 21e3e41e48
20 changed files with 839 additions and 86 deletions
+27 -1
View File
@@ -7,6 +7,7 @@ const fs = require('fs');
const path = require('path');
const pool = require('../server/db');
const { generateThumbnailFromFull } = require('./image-fetcher');
const { printCliResult } = require('./lib/cli-result');
const IMAGE_DIR = path.resolve(process.env.IMAGE_DIR || './data/images');
const PORTRAIT_THUMB_WIDTH = 256;
@@ -70,7 +71,32 @@ async function generatePortraitThumb(row) {
}
await pool.end();
if (errors.length) {
printCliResult({
script: 'regenerate-portrait-thumbs',
ok: false,
summary: `Portrait thumbnail regeneration finished with ${errors.length} error(s).`,
details: [
`Generated: ${generated}, skipped: ${skipped}`,
...errors.slice(0, 5).map((e) => ` #${e.id} ${e.name}: ${e.error}`),
],
});
}
printCliResult({
script: 'regenerate-portrait-thumbs',
ok: true,
summary: 'Portrait thumbnail regeneration complete.',
details: [`Generated: ${generated}, skipped: ${skipped}`],
});
})().catch((err) => {
console.error(err);
pool.end().finally(() => process.exit(1));
pool.end().finally(() => {
printCliResult({
script: 'regenerate-portrait-thumbs',
ok: false,
summary: err.message || String(err),
});
});
});