alwaysai
Version:
The alwaysAI command-line interface (CLI)
46 lines (39 loc) • 1.46 kB
text/typescript
import { existsSync } from 'fs';
import { appConfigFile, APP_CONFIG_FILE_NAME } from '../util/app-config-file';
import { targetConfigFile, TARGET_CONFIG_FILE_NAME } from '../util/target-config-file';
import { APP_DOT_PY } from '../constants';
import { appConfigureComponent } from './app-configure-component';
import { TerseError } from '@alwaysai/alwayscli';
import ora = require('ora');
export async function checkForRequiredFilesComponent(props: { yes: boolean }) {
const { yes } = props;
const spinner = ora('Check for required files').start();
let titleOfMissingFile = '';
if (!titleOfMissingFile && !appConfigFile.exists()) {
titleOfMissingFile = `Application configuration file "${APP_CONFIG_FILE_NAME}"`;
}
if (!titleOfMissingFile && !targetConfigFile.exists()) {
titleOfMissingFile = `Target configuration file "${TARGET_CONFIG_FILE_NAME}"`;
}
if (!titleOfMissingFile && !existsSync(APP_DOT_PY)) {
titleOfMissingFile = `Python application file "${APP_DOT_PY}"`;
}
if (titleOfMissingFile) {
if (yes) {
spinner.fail();
throw new TerseError(
`${titleOfMissingFile} not found. Please run "alwaysai app configure".`,
);
} else {
spinner.warn(`${titleOfMissingFile} not found`);
await appConfigureComponent({
yes,
targetPath: '',
targetHostname: '',
targetProtocol: 'ssh+docker:',
});
}
} else {
spinner.succeed();
}
}