/*
 * 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
 */

/* eslint-disable no-process-env */
import { Option, OptionValue } from '../Option';
import { OptionSource } from './OptionSource';

export class EnvSource extends OptionSource {
  public async parse (opt: Option, val:OptionValue): Promise<void> {
    if (typeof opt.env === 'undefined')
      return;

    if (typeof process.env[opt.env] === 'undefined') {
      if (typeof this.error_callback !== 'undefined') {
        this.error_callback (
          opt.name,
          null,
          new Error ('environment variable does not exist')
        );
      }
      return;
    }

    await this.assign_arg (opt, val, process.env[opt.env]);
  }
}