create_oauth_application.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. const fs = require('fs')
  2. const { OauthApplication } = require('../app/src/models/OauthApplication')
  3. const parseArgs = require('minimist')
  4. const OError = require('@overleaf/o-error')
  5. const { waitForDb } = require('../app/src/infrastructure/mongodb')
  6. async function _loadInputDocument(inputFilePath) {
  7. console.log(`Loading input from ${inputFilePath}`)
  8. try {
  9. const inputText = await fs.promises.readFile(inputFilePath, 'utf-8')
  10. const inputDocument = JSON.parse(inputText)
  11. return inputDocument
  12. } catch (err) {
  13. throw OError.tag(err, 'error loading input document')
  14. }
  15. }
  16. async function _writeOauthApplicationDocument(doc) {
  17. console.log('Waiting for db...')
  18. await waitForDb()
  19. const oauthApp = new OauthApplication(doc)
  20. console.log(
  21. `Writing document to mongo { name: '${oauthApp.name}', id: '${oauthApp.id}' }`
  22. )
  23. await oauthApp.save()
  24. }
  25. async function main() {
  26. const argv = parseArgs(process.argv.slice(2), {
  27. string: ['file'],
  28. unknown: function (arg) {
  29. console.error('unrecognised argument', arg)
  30. process.exit(1)
  31. },
  32. })
  33. const doc = await _loadInputDocument(argv.file)
  34. await _writeOauthApplicationDocument(doc)
  35. }
  36. if (require.main === module) {
  37. main()
  38. .then(() => {
  39. console.log('Done')
  40. process.exit(0)
  41. })
  42. .catch(err => {
  43. console.error(err)
  44. process.exit(1)
  45. })
  46. }