/*
 * 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 <timo@scode.ovh>, May 2020
 */

import { OptionProcess } from '../Option';

export abstract class OptionSource {
  public abstract async parse(opt: OptionProcess[]): Promise<void>;

  protected async assign_arg (
    opt: OptionProcess,
    value: unknown
  ): Promise<void> {
    try {
      opt.value = await opt.type_validation.to_type (value);
      opt.filled = true;
    }
    catch (e) {
      // could not assing
    }
  }
}