1
0
mirror of https://github.com/bpatrik/pigallery2.git synced 2024-12-21 01:22:08 +02:00
pigallery2/benchmark/BMConfig.ts
2023-01-06 19:01:24 +01:00

63 lines
1.7 KiB
TypeScript

/* eslint-disable @typescript-eslint/no-inferrable-types */
import * as path from 'path';
import { ConfigClass, ConfigClassBuilder } from 'typeconfig/node';
import { ConfigProperty, SubConfigClass } from 'typeconfig/common';
@SubConfigClass({softReadonly: true})
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();