/* tslint:disable:no-inferrable-types */
import * as path from 'path';
import {ConfigClass, ConfigClassBuilder} from 'typeconfig/node';
import {ConfigProperty, SubConfigClass} from 'typeconfig/common';
import {JobTrigger, JobTriggerType} from '../src/common/entities/job/JobScheduleDTO';
import {ServerVideoConfig} from '../src/common/config/private/PrivateConfig';



@SubConfigClass()
export class BenchmarksConfig  {
  @ConfigProperty()
  bmScanDirectory: boolean = true;
  @ConfigProperty()
  bmSaveDirectory: boolean = true;
  @ConfigProperty()
  bmListDirectory: boolean = true;
  @ConfigProperty()
  bmListPersons: boolean = true;
  @ConfigProperty()
  bmAllSearch: boolean = true;
  @ConfigProperty()
  bmAutocomplete: boolean = true;
}

@ConfigClass({
  configPath: path.join(__dirname, './../bm_config.json'),
  saveIfNotExist: true,
  attachDescription: true,
  enumsAsString: true,
  softReadonly: true,
  cli: {
    prefix: 'bm-config',
    enable: {
      configPath: true,
      attachState: true,
      attachDescription: true,
      rewriteCLIConfig: true,
      rewriteENVConfig: true,
      enumsAsString: true,
      saveIfNotExist: true,
      exitOnConfig: true
    },
    defaults: {
      enabled: true
    }
  }
})
export class PrivateConfigClass {
  @ConfigProperty({description: 'Images are loaded from this folder (read permission required)'})
  path: string = '/app/data/images';
  @ConfigProperty({description: 'Describe your system setup'})
  system: string = '';
  @ConfigProperty({description: 'Number of times to run the benchmark'})
  RUNS: number = 50;
  @ConfigProperty({description: 'Enables / disables benchmarks'})
  Benchmarks: BenchmarksConfig = new BenchmarksConfig();


}

export const BMConfig = ConfigClassBuilder.attachInterface(new PrivateConfigClass());
BMConfig.loadSync();