genScript.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. const services = require('./services')
  2. console.log('#!/bin/bash')
  3. console.log('set -ex')
  4. switch (process.argv.pop()) {
  5. case 'checkout':
  6. for (const service of services) {
  7. console.log(`git clone ${service.repo} ${service.name}`)
  8. console.log(`git -C ${service.name} checkout ${service.version}`)
  9. }
  10. break
  11. case 'revisions':
  12. for (const service of services) {
  13. console.log(`git -C ${service.name} rev-parse HEAD`)
  14. }
  15. break
  16. case 'cleanup-git':
  17. for (const service of services) {
  18. console.log(`rm -rf ${service.name}/.git`)
  19. }
  20. break
  21. case 'install':
  22. for (const service of services) {
  23. console.log('pushd', service.name)
  24. switch (service.name) {
  25. case 'web':
  26. console.log('npm ci')
  27. break
  28. default:
  29. // TODO(das7pad): revert back to npm ci --only=production (https://github.com/overleaf/issues/issues/4544)
  30. console.log('npm ci')
  31. }
  32. console.log('popd')
  33. }
  34. break
  35. case 'compile':
  36. for (const service of services) {
  37. console.log('pushd', service.name)
  38. switch (service.name) {
  39. case 'web':
  40. console.log('npm run webpack:production')
  41. // drop webpack/babel cache
  42. console.log('rm -rf node_modules/.cache')
  43. break
  44. default:
  45. console.log(`echo ${service.name} does not require a compilation`)
  46. }
  47. console.log('popd')
  48. }
  49. break
  50. default:
  51. console.error('unknown command')
  52. console.log('exit 101')
  53. process.exit(101)
  54. }
  55. console.log('set +x')
  56. console.log(
  57. 'rm -rf /root/.cache /root/.npm $(find /tmp/ -mindepth 1 -maxdepth 1)'
  58. )