UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

63 lines (54 loc) 1.33 kB
import { join } from 'path'; import Ajv, { JSONSchemaType } from 'ajv'; import { CLI_TERSE_ERROR } from '@alwaysai/alwayscli'; import { ConfigFileSchema } from '@alwaysai/config-nodejs'; import { ALWAYSAI_CLI_EXECUTABLE_NAME } from '../../constants'; import { PROJECT_JSON_FILE_NAME } from '../../paths'; export interface ProjectConfig { project: { id: string; name?: string; }; } export const projectConfigSchema: JSONSchemaType<ProjectConfig> = { type: 'object', properties: { project: { type: 'object', properties: { id: { type: 'string' }, name: { type: 'string', nullable: true } }, required: ['id'] } }, required: ['project'] }; const ajv = new Ajv(); const validateFunction = ajv.compile(projectConfigSchema); const ENOENT = { message: `${PROJECT_JSON_FILE_NAME} not found. Did you run "${ALWAYSAI_CLI_EXECUTABLE_NAME} app configure"?`, code: CLI_TERSE_ERROR }; export function ProjectJsonFile(dir = process.cwd()) { const configFile = ConfigFileSchema({ path: join(dir, PROJECT_JSON_FILE_NAME), validateFunction, ENOENT, initialValue: { project: { id: '', name: '' } } }); return { ...configFile, name: PROJECT_JSON_FILE_NAME }; }