UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

79 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = require("path"); const t = require("io-ts"); const config_nodejs_1 = require("@alwaysai/config-nodejs"); const constants_1 = require("../constants"); const chalk_1 = require("chalk"); exports.APP_CONFIG_FILE_NAME = 'alwaysai.app.json'; const codec = t.partial({ models: t.record(t.string, t.string, 'models'), scripts: t.record(t.string, t.string, 'scripts'), }); const ENOENT = { message: `${exports.APP_CONFIG_FILE_NAME} not found. Did you run "alwaysai app configure"?`, code: 'TERSE', }; function AppConfigFile(dir = process.cwd()) { const configFile = config_nodejs_1.ConfigFile({ path: path_1.join(dir, exports.APP_CONFIG_FILE_NAME), codec, ENOENT, initialValue: { models: {}, scripts: { start: `python ${constants_1.APP_DOT_PY}`, }, }, }); return Object.assign({}, configFile, { addModel(id, version) { return configFile.update(config => { config.models = config.models || {}; config.models[id] = version; }); }, removeModel(id) { return configFile.update(config => { if (config.models) { delete config.models[id]; } }); }, describeModels() { const config = configFile.readIfExists(); const MODELS_COLON = 'Models:'; if (!config) { return `${MODELS_COLON} "${exports.APP_CONFIG_FILE_NAME}" not found`; } let description = `${MODELS_COLON} ${chalk_1.default.bold('None')}`; if (config.models) { const entries = Object.entries(config.models); if (entries.length > 0) { description = `${MODELS_COLON}\n${entries .map(([modelId, modelVersion]) => ` ${modelId}@${modelVersion}`) .join('\n')}`; } } return description; }, describeScripts() { const config = configFile.readIfExists(); const SCRIPTS_COLON = 'Scripts:'; if (!config) { return `${SCRIPTS_COLON} "${exports.APP_CONFIG_FILE_NAME}" not found`; } let description = `${SCRIPTS_COLON} ${chalk_1.default.bold('None')}`; if (config.scripts) { const entries = Object.entries(config.scripts); if (entries.length > 0) { description = `${SCRIPTS_COLON}\n${entries .map(([scriptName, scriptValue]) => ` ${scriptName} => "${scriptValue}"`) .join('\n')}`; } } return description; } }); } exports.AppConfigFile = AppConfigFile; exports.appConfigFile = AppConfigFile(); //# sourceMappingURL=app-config-file.js.map