| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import HistoryRangesSupportMigration from '../../app/src/Features/History/HistoryRangesSupportMigration.mjs'
- import minimist from 'minimist'
- import { scriptRunner } from '../lib/ScriptRunner.mjs'
- async function main() {
- const {
- projectIds,
- ownerIds,
- minId,
- maxId,
- maxCount,
- direction,
- force,
- stopOnError,
- quickOnly,
- concurrency,
- } = parseArgs()
- await HistoryRangesSupportMigration.promises.migrateProjects({
- projectIds,
- ownerIds,
- minId,
- maxId,
- maxCount,
- direction,
- force,
- stopOnError,
- quickOnly,
- concurrency,
- })
- }
- function usage() {
- console.error(`Usage: migrate_ranges_support.mjs [OPTIONS]
- Options:
- --help Print this help
- --owner-id Migrate all projects owned by this owner
- --project-id Migrate this project
- --min-id Migrate projects from this id
- --max-id Migrate projects to this id
- --max-count Migrate at most this number of projects
- --all Migrate all projects
- --backwards Disable history ranges support for selected project ids
- --force Migrate projects even if they were already migrated
- --stop-on-error Stop after first migration error
- --quick-only Do not try a resync migration if quick migration fails
- --concurrency How many jobs to run in parallel
- `)
- }
- function parseArgs() {
- const args = minimist(process.argv.slice(2), {
- boolean: ['backwards', 'help', 'all', 'force', 'quick-only'],
- string: ['owner-id', 'project-id', 'min-id', 'max-id'],
- })
- if (args.help) {
- usage()
- process.exit(0)
- }
- const direction = args.backwards ? 'backwards' : 'forwards'
- const ownerIds = arrayOpt(args['owner-id'])
- const projectIds = arrayOpt(args['project-id'])
- const minId = args['min-id']
- const maxId = args['max-id']
- const maxCount = args['max-count']
- const force = args.force
- const stopOnError = args['stop-on-error']
- const quickOnly = args['quick-only']
- const concurrency = args.concurrency ?? 1
- const all = args.all
- if (
- !all &&
- ownerIds == null &&
- projectIds == null &&
- minId == null &&
- maxId == null &&
- maxCount == null
- ) {
- console.error(
- 'Please specify at least one filter, or --all to process all projects\n'
- )
- usage()
- process.exit(1)
- }
- return {
- ownerIds,
- projectIds,
- minId,
- maxId,
- maxCount,
- direction,
- force,
- stopOnError,
- quickOnly,
- concurrency,
- }
- }
- function arrayOpt(value) {
- if (typeof value === 'string') {
- return [value]
- } else if (Array.isArray(value)) {
- return value
- } else {
- return undefined
- }
- }
- try {
- await scriptRunner(main)
- process.exit(0)
- } catch (error) {
- console.error(error)
- process.exit(1)
- }
|