update_project_image_name.mjs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { batchedUpdate } from '@overleaf/mongo-utils/batchedUpdate.js'
  2. import { db } from '../app/src/infrastructure/mongodb.js'
  3. const oldImage = process.argv[2]
  4. const newImage = process.argv[3]
  5. function usage() {
  6. console.log(
  7. `Usage: update_project_image_name.js <old_texlive_image> <new_texlive_image>`
  8. )
  9. console.log(
  10. 'Environment variable ALL_TEX_LIVE_DOCKER_IMAGES must contain <new_texlive_image>.'
  11. )
  12. }
  13. if (!oldImage || !newImage) {
  14. usage()
  15. process.exit(1)
  16. }
  17. if (!process.env.ALL_TEX_LIVE_DOCKER_IMAGES) {
  18. console.error(
  19. 'Error: environment variable ALL_TEX_LIVE_DOCKER_IMAGES is not defined.'
  20. )
  21. usage()
  22. process.exit(1)
  23. }
  24. if (!process.env.ALL_TEX_LIVE_DOCKER_IMAGES.split(',').includes(newImage)) {
  25. console.error(`Error: ALL_TEX_LIVE_DOCKER_IMAGES doesn't contain ${newImage}`)
  26. usage()
  27. process.exit(1)
  28. }
  29. try {
  30. await batchedUpdate(
  31. db.projects,
  32. { imageName: oldImage },
  33. { $set: { imageName: newImage } }
  34. )
  35. console.log('Done')
  36. process.exit(0)
  37. } catch (error) {
  38. console.error(error)
  39. process.exit(1)
  40. }