import { Command } from 'commander-ts'; import { Input } from '..'; import * as core from '@actions/core'; import { ActionYamlReader } from '../input-readers/action-yaml'; import { CliFunction, CliFunctionsRepository } from './cli-functions-repository'; import { OptionValues } from 'commander'; import { InputKey } from '../input'; export class Cli { public static options: OptionValues | undefined; static get isCliMode() { return Cli.options !== undefined && Cli.options.mode !== undefined && Cli.options.mode !== ''; } public static query(key: string, alternativeKey: string) { if (Cli.options && Cli.options[key] !== undefined) { return Cli.options[key]; } if (Cli.options && alternativeKey && Cli.options[alternativeKey] !== undefined) { return Cli.options[alternativeKey]; } return; } public static InitCliMode() { const program = new Command(); program.version('0.0.1'); const actionYamlReader: ActionYamlReader = new ActionYamlReader(); const properties = Object.getOwnPropertyNames(Input).filter( (p) => p !== 'length' && p !== 'prototype' && p !== 'name', ); for (const element of properties) { program.option(`--${element} <${element}>`, actionYamlReader.GetActionYamlValue(element)); } program.option( '-m, --mode ', CliFunctionsRepository.GetAllCliModes() .map((x) => `${x.key} (${x.description})`) .join(` | `), ); program.option( '--populateOverride ', 'should use override query to pull input false by default', ); program.option('--cachePushFrom ', 'cache push from source folder'); program.option('--cachePushTo ', 'cache push to caching folder'); program.option('--artifactName ', 'caching artifact name'); program.option('--select