alwaysai
Version:
The alwaysAI command-line interface (CLI)
79 lines • 3.02 kB
JavaScript
;
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