// @ts-check import minimist from 'minimist' import { batchedUpdateWithResultHandling } from '@overleaf/mongo-utils/batchedUpdate.js' import { db } from '../app/src/infrastructure/mongodb.js' const argv = minimist(process.argv.slice(2)) const commit = argv.commit !== undefined let imageName = argv._[0] function usage() { console.log( 'Usage: node backfill_project_image_name.mjs --commit ' ) console.log( 'Argument is not required when TEX_LIVE_DOCKER_IMAGE is set.' ) console.log( 'Environment variable ALL_TEX_LIVE_DOCKER_IMAGES must contain .' ) } if (!imageName && process.env.TEX_LIVE_DOCKER_IMAGE) { imageName = process.env.TEX_LIVE_DOCKER_IMAGE } if (!imageName) { usage() process.exit(1) } if (!process.env.ALL_TEX_LIVE_DOCKER_IMAGES) { console.error( 'Error: environment variable ALL_TEX_LIVE_DOCKER_IMAGES is not defined.' ) usage() process.exit(1) } if (!process.env.ALL_TEX_LIVE_DOCKER_IMAGES.split(',').includes(imageName)) { console.error( `Error: ALL_TEX_LIVE_DOCKER_IMAGES doesn't contain ${imageName}` ) usage() process.exit(1) } if (!commit) { console.error('DOING DRY RUN. TO SAVE CHANGES PASS --commit') process.exit(1) } batchedUpdateWithResultHandling( db.projects, { imageName: null }, { $set: { imageName } } )