/*
 * 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>, October 2020
 */

import { AutoComplete } from 'enquirer';
import { StringOptionConfig } from '../../SubConfigs';
import { InteractiveSubSource } from './InteractiveSubSource';

export class PresetSubSource extends InteractiveSubSource {
  protected condition ():boolean {
    return typeof (this.opt as StringOptionConfig).preset !== 'undefined';
  }

  protected async run ():Promise<void> {
    await this.val.assign_arg (
      this.opt,
      await new AutoComplete ({
        message: this.get_message (),
        default: this.opt.default,
        choices: (this.opt as StringOptionConfig).preset,
        limit:   10
      })
        .run ()
    );
  }
}