UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

42 lines (39 loc) 1.45 kB
import { CliTerseError } from '@alwaysai/alwayscli'; import { APP_JSON_FILE_NAME } from '../../paths'; import { AppJsonFile } from '../../core/app'; import { Spinner, UnableToProceedWithoutMessage } from '../../util'; import { checkConfigFileExistsAndValid } from '../../util/config-file-exists-and-is-valid'; import { confirmWriteFilePromptComponent } from '../general'; const WRITE_MESSAGE = `Write ${APP_JSON_FILE_NAME}`; const FOUND_MESSAGE = `Found ${APP_JSON_FILE_NAME}`; export async function findOrWriteAppJsonFileComponent(props: { yes: boolean }) { const { yes } = props; const appJsonFile = AppJsonFile(); if (!appJsonFile.exists()) { const confirmed = yes || (await confirmWriteFilePromptComponent({ fileName: APP_JSON_FILE_NAME, description: 'Configuration file' })); if (!confirmed) { throw new CliTerseError( UnableToProceedWithoutMessage(APP_JSON_FILE_NAME) ); } try { appJsonFile.remove(); appJsonFile.initialize(); Spinner(WRITE_MESSAGE).succeed(); } catch (exception) { Spinner(WRITE_MESSAGE).fail(); throw exception; } } else if (await checkConfigFileExistsAndValid(appJsonFile)) { Spinner(FOUND_MESSAGE).succeed(); } // if it exists but doesn't pass the checkConfigFileExistsAndValid, then it's syntax error. else { throw new CliTerseError(UnableToProceedWithoutMessage(APP_JSON_FILE_NAME)); } }