Commit 8541b00d authored by Anselm Stordeur's avatar Anselm Stordeur
Browse files

fix: add type and batchSize to required parameters

Closes #1
parent 50b5cf04
Loading
Loading
Loading
Loading
+30 −12
Original line number Diff line number Diff line
@@ -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) => {

    // 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');