Loading src/cli.ts +30 −12 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ import {Logger} from '@openstapps/logger'; import * as commander from 'commander'; import {readFileSync} from 'fs'; import {join} from 'path'; import { URL } from 'url'; import {copy} from './copy'; import {HttpClient} from './httpClient'; Loading @@ -31,36 +32,53 @@ process.on('unhandledRejection', (error) => { }); commander .command('copy <from> <to>') .command('copy <type> <from> <to> <batchSize>') .version(pkgJson.version) .description('Copy data from one instance to another') .option( '-s, --bulkSource [bulkSource]', '-s, --bulkSource <bulkSource>', 'The source identifier for the bulk to use with the target instance [copy]', 'copy', ) .option('-t, --type <type>', 'The type to request from the source instance') // TODO: remove .option('-a, --appVersion [version]', 'The App version to use [unset by default]') .option('-b, --batchSize <amount>', 'Number of items per batch') .option('-a, --appVersion <version>', 'The App version to use [unset by default]') .allowUnknownOption(false) .action((from, to, copyCommand) => { actionDone = true; .action((type, from, to, batchSize, copyCommand) => { // validate type if (typeof type !== 'string') { logger.error('expected parameter "type" to be of type: string'); copyCommand.outputHelp(); process.exit(-1); } if (typeof copyCommand.type === 'undefined') { logger.error('<type> argument is required'); // validate urls try { from = (new URL(from)).toString(); to = (new URL(to)).toString(); } catch (err) { logger.error('expected parameters "from" and "to" to be valid urls', err); copyCommand.outputHelp(); process.exit(-1); } logger.info('Copying ' + copyCommand.type + ' objects from ' + from + ' to ' + to); // validate batchSize if (isNaN(parseInt(batchSize, 10))) { logger.error('expected parameter "batchSize" to be of type: number'); copyCommand.outputHelp(); process.exit(-1); } actionDone = true; logger.info('Copying ' + type + ' objects from ' + from + ' to ' + to); copy(client, { batchSize: parseInt(copyCommand.batchSize, 10), batchSize: parseInt(batchSize, 10), from: from, source: copyCommand.bulkSource, to: to, type: copyCommand.type, type: type, version: copyCommand.appVersion, }).then(() => { logger.ok('Done'); Loading Loading
src/cli.ts +30 −12 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ import {Logger} from '@openstapps/logger'; import * as commander from 'commander'; import {readFileSync} from 'fs'; import {join} from 'path'; import { URL } from 'url'; import {copy} from './copy'; import {HttpClient} from './httpClient'; Loading @@ -31,36 +32,53 @@ process.on('unhandledRejection', (error) => { }); commander .command('copy <from> <to>') .command('copy <type> <from> <to> <batchSize>') .version(pkgJson.version) .description('Copy data from one instance to another') .option( '-s, --bulkSource [bulkSource]', '-s, --bulkSource <bulkSource>', 'The source identifier for the bulk to use with the target instance [copy]', 'copy', ) .option('-t, --type <type>', 'The type to request from the source instance') // TODO: remove .option('-a, --appVersion [version]', 'The App version to use [unset by default]') .option('-b, --batchSize <amount>', 'Number of items per batch') .option('-a, --appVersion <version>', 'The App version to use [unset by default]') .allowUnknownOption(false) .action((from, to, copyCommand) => { actionDone = true; .action((type, from, to, batchSize, copyCommand) => { // validate type if (typeof type !== 'string') { logger.error('expected parameter "type" to be of type: string'); copyCommand.outputHelp(); process.exit(-1); } if (typeof copyCommand.type === 'undefined') { logger.error('<type> argument is required'); // validate urls try { from = (new URL(from)).toString(); to = (new URL(to)).toString(); } catch (err) { logger.error('expected parameters "from" and "to" to be valid urls', err); copyCommand.outputHelp(); process.exit(-1); } logger.info('Copying ' + copyCommand.type + ' objects from ' + from + ' to ' + to); // validate batchSize if (isNaN(parseInt(batchSize, 10))) { logger.error('expected parameter "batchSize" to be of type: number'); copyCommand.outputHelp(); process.exit(-1); } actionDone = true; logger.info('Copying ' + type + ' objects from ' + from + ' to ' + to); copy(client, { batchSize: parseInt(copyCommand.batchSize, 10), batchSize: parseInt(batchSize, 10), from: from, source: copyCommand.bulkSource, to: to, type: copyCommand.type, type: type, version: copyCommand.appVersion, }).then(() => { logger.ok('Done'); Loading