alwaysai
Version:
The alwaysAI command-line interface (CLI)
63 lines (54 loc) • 1.33 kB
text/typescript
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
};
}