overleaf/services/web/scripts/backfill_project_image_name.mjs
Jakob Ackermann 252533b2fd Merge pull request #21668 from overleaf/jpa-mongo-utils
[mongo-utils] create new home for batchedUpdate helper

GitOrigin-RevId: 9f61c5e367a9f4cef63b5cc4c0bbbd3ef57c8ca8
2024-11-08 09:07:09 +00:00

56 lines
1.3 KiB
JavaScript

// @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 <texlive_docker_image>'
)
console.log(
'Argument <texlive_docker_image> is not required when TEX_LIVE_DOCKER_IMAGE is set.'
)
console.log(
'Environment variable ALL_TEX_LIVE_DOCKER_IMAGES must contain <texlive_docker_image>.'
)
}
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 } }
)