import {injectable, inject} from 'inversify';
import {MergePcapFilesOptions} from "../../interfaces/vita-options-results";
import {autoserialize} from 'cerialize';
import {CommandUtil} from "firmament-yargs";

import path = require('path');

@injectable()
export class MergePcapFilesOptionsImpl implements MergePcapFilesOptions {
  private commandUtil: CommandUtil;
  @autoserialize mergedPcapFile: string = '';
  @autoserialize targetFolder: string = '';
  @autoserialize pcapFiles: string[] = [];
  @autoserialize deleteOriginalPcapFiles: boolean = false;

  constructor(@inject('CommandUtil')_commandUtil: CommandUtil) {
    this.commandUtil = _commandUtil;
  }

  fromArgv(argv: any) {
    this.mergedPcapFile = argv.output;
  }

  validate() {
    if (!this.mergedPcapFile) {
      let randomInt = Math.floor((Math.random() * 9000) + 1000);
      this.mergedPcapFile = `mergedPcapFile-${randomInt}.pcap`;
    }
    this.mergedPcapFile = path.resolve(this.targetFolder, this.mergedPcapFile);
  }
}
