/* * Copyright (C) Sapphirecode - All Rights Reserved * This file is part of console-app which is released under MIT. * See file 'LICENSE' for full license details. * Created by Timo Hocker , May 2020 */ import { TypeValidation } from './TypeValidation/TypeValidation'; import { ErrorCallback } from './ErrorCallback'; interface SourceConfig { console?: boolean, configs?: string[], interactive?: boolean, } interface Option { name: string; default?: unknown; sources?: SourceConfig; alias?: string; env?: string; message?: string; error?: string; error_callback?: ErrorCallback; exit_on_interrupt?: boolean; } class OptionValue { public filled = false; public value?: unknown; public readonly type_validation: TypeValidation; public constructor (type_validation: TypeValidation) { this.type_validation = type_validation; } public async assign_arg ( opt: Option, value: unknown ): Promise { try { this.value = await this.type_validation.to_type (value); this.filled = true; } catch (e) { if (typeof opt.error_callback !== 'undefined') opt.error_callback (opt.name, value, e); } } } export { Option, OptionValue };