installer functional
This commit is contained in:
62
tools/installer/lib/config-loader.js
Normal file
62
tools/installer/lib/config-loader.js
Normal file
@@ -0,0 +1,62 @@
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
class ConfigLoader {
|
||||
constructor() {
|
||||
this.configPath = path.join(__dirname, '..', 'config', 'install.config.yml');
|
||||
this.config = null;
|
||||
}
|
||||
|
||||
async load() {
|
||||
if (this.config) return this.config;
|
||||
|
||||
try {
|
||||
const configContent = await fs.readFile(this.configPath, 'utf8');
|
||||
this.config = yaml.load(configContent);
|
||||
return this.config;
|
||||
} catch (error) {
|
||||
throw new Error(`Failed to load configuration: ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
async getInstallationOptions() {
|
||||
const config = await this.load();
|
||||
return config['installation-options'] || {};
|
||||
}
|
||||
|
||||
async getAvailableAgents() {
|
||||
const config = await this.load();
|
||||
return config['available-agents'] || [];
|
||||
}
|
||||
|
||||
async getAgentDependencies(agentId) {
|
||||
const config = await this.load();
|
||||
const dependencies = config['agent-dependencies'] || {};
|
||||
|
||||
// Always include core files
|
||||
const coreFiles = dependencies['core-files'] || [];
|
||||
|
||||
// Add agent-specific dependencies
|
||||
const agentDeps = dependencies[agentId] || [];
|
||||
|
||||
return [...coreFiles, ...agentDeps];
|
||||
}
|
||||
|
||||
async getIdeConfiguration(ide) {
|
||||
const config = await this.load();
|
||||
const ideConfigs = config['ide-configurations'] || {};
|
||||
return ideConfigs[ide] || null;
|
||||
}
|
||||
|
||||
getBmadCorePath() {
|
||||
// Get the path to bmad-core relative to the installer (now under tools)
|
||||
return path.join(__dirname, '..', '..', '..', 'bmad-core');
|
||||
}
|
||||
|
||||
getAgentPath(agentId) {
|
||||
return path.join(this.getBmadCorePath(), 'agents', `${agentId}.md`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new ConfigLoader();
|
||||
Reference in New Issue
Block a user