fix: add type and batchSize to required parameters

Closes #1
This commit is contained in:
Anselm Stordeur
2018-12-04 17:49:33 +01:00
parent 50b5cf04f1
commit 8541b00dbb

View File

@@ -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';
@@ -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) => {
if (typeof copyCommand.type === 'undefined') {
logger.error('<type> argument is required');
// validate type
if (typeof type !== 'string') {
logger.error('expected parameter "type" to be of type: string');
copyCommand.outputHelp();
process.exit(-1);
}
logger.info('Copying ' + copyCommand.type + ' objects from ' + from + ' to ' + to);
// 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);
}
// 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');