/*
 * Copyright (C) SapphireCode - All Rights Reserved
 * This file is part of Snippeteer which is released under BSD-3-Clause.
 * See file 'LICENSE' for full license details.
 * Created by Timo Hocker <timo@scode.ovh>, May 2020
 */

import { Confirm } from 'enquirer';
import { Snippet } from '../../Snippet';
import { apply_template, modify_json } from '../../Helper';

import { general, node } from './Assets';

export default class Jenkins implements Snippet {
  public is_active (): boolean {
    return true;
  }

  public async start (): Promise<void> {
    const is_node = await new Confirm ({
      message: 'is the current project using nodejs?',
      initial: true
    })
      .run ();

    if (is_node) {
      await apply_template (node.js, 'jenkins.js');
      await apply_template (node.jenkinsfile, 'Jenkinsfile');
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      await modify_json ((obj: any): any => {
        obj.scripts.ci = 'yarn && node jenkins.js';
        return obj;
      });
    }
    else {
      await apply_template (general.jenkinsfile, 'Jenkinsfile');
    }
  }
}