overleaf/services/web/scripts/replace_spellcheck_languages.js

77 lines
1.3 KiB
JavaScript
Raw Normal View History

// Run like this:
// node ... --projectIds ./path/to/file/with/one/projectId/in/each/line
const fs = require('fs')
const { db, ObjectId } = require('../app/src/infrastructure/mongojs')
const minimist = require('minimist')
const argv = minimist(process.argv.slice(2))
const commit = argv.commit !== undefined
if (!argv.projectIds) {
console.error('--projectIds flag is missing')
process.exit(100)
}
if (!commit) {
console.log('DOING DRY RUN. TO SAVE CHANGES PASS --commit')
}
const languages = [
'am',
'hy',
'bn',
'gu',
'he',
'hi',
'hu',
'is',
'kn',
'ml',
'mr',
'or',
'ss',
'ta',
'te',
'uk',
'uz',
'zu',
'fi'
]
const projectIds = fs
.readFileSync(argv.projectIds, { encoding: 'utf-8' })
.split('\n')
.filter(Boolean)
function main(callback) {
const query = {
_id: { $in: projectIds.map(ObjectId) },
spellCheckLanguage: { $in: languages }
}
db.projects.update(
query,
{ $set: { spellCheckLanguage: '' } },
{ multi: true },
(err, result) => {
if (err) {
return callback(err)
}
console.log(`>> Updated projects: ${JSON.stringify(result)}`)
return callback()
}
)
}
if (require.main === module) {
main(err => {
if (err) {
console.error(err)
return process.exit(1)
}
console.log('>> done')
process.exit(0)
})
}