30 lines
988 B
TypeScript
30 lines
988 B
TypeScript
|
|
/**
|
||
|
|
* Storage backend migration CLI — see §4.7a + §14.9a of
|
||
|
|
* docs/berth-recommender-and-pdf-plan.md.
|
||
|
|
*
|
||
|
|
* pnpm tsx scripts/migrate-storage.ts --from s3 --to filesystem [--dry-run]
|
||
|
|
* pnpm tsx scripts/migrate-storage.ts --from filesystem --to s3
|
||
|
|
*
|
||
|
|
* The actual migration logic lives in `src/lib/storage/migrate.ts` so the
|
||
|
|
* admin UI's "Switch backend" button can run the exact same code path. This
|
||
|
|
* file is a thin CLI wrapper.
|
||
|
|
*/
|
||
|
|
|
||
|
|
import { logger } from '@/lib/logger';
|
||
|
|
import { parseArgs, runMigration } from '@/lib/storage/migrate';
|
||
|
|
|
||
|
|
async function main(): Promise<void> {
|
||
|
|
const args = parseArgs(process.argv.slice(2));
|
||
|
|
logger.info({ args }, 'Starting storage migration');
|
||
|
|
const result = await runMigration(args);
|
||
|
|
logger.info({ result }, 'Storage migration complete');
|
||
|
|
console.log(JSON.stringify(result, null, 2));
|
||
|
|
process.exit(0);
|
||
|
|
}
|
||
|
|
|
||
|
|
main().catch((err) => {
|
||
|
|
logger.error({ err }, 'Storage migration failed');
|
||
|
|
console.error(err);
|
||
|
|
process.exit(2);
|
||
|
|
});
|