UNPKG

@nomyx/assistant-cli

Version:

A javascript-based assistant that can help you with your daily tasks

62 lines (52 loc) 2.03 kB
const fs = require('fs'); const path = require('path'); class ConfigurationManager { static _instance; _config; constructor() { this._config = this.loadConfig(); } get applicationFolder() { let _appDir = path.dirname(requireMain.filename); const appDirParts = _appDir.split(path.sep); if (appDirParts[appDirParts.length - 1] === 'bin') { appDirParts.pop(); _appDir = appDirParts.join(path.sep); } return _appDir; } static getInstance() { if (!ConfigurationManager._instance) { ConfigurationManager._instance = new ConfigurationManager(); } return ConfigurationManager._instance; } loadConfig() { const appDir = path.dirname(require.main.filename); if (fs.existsSync(path.join(appDir, 'config.json'))) { return JSON.parse(fs.readFileSync(path.join(appDir, 'config.json'), 'utf8')); } else { return { OPENAI_API_KEY: process.env.OPENAI_API_KEY || '', PLAYHT_AUTHORIZATION: process.env.PLAYHT_AUTHORIZATION || '', PLAYHT_USER_ID: process.env.PLAYHT_USER_ID || '', PLAYHT_MALE_VOICE: process.env.PLAYHT_MALE_VOICE || '', PLAYHT_FEMALE_VOICE: process.env.PLAYHT_FEMALE_VOICE || '', GOOGLE_API_KEY: process.env.GOOGLE_API_KEY || '', GOOGLE_CX_ID: process.env.GOOGLE_CX_ID || '', NEWS_API_KEY: process.env.NEWS_API_KEY || '', }; } } saveConfig(config) { const appDir = path.dirname(require.main.filename); fs.writeFileSync(path.join(appDir, 'config.json'), JSON.stringify(config, null, 2)); } getConfig() { return this._config; } setConfig(config) { this._config = config; this.saveConfig(config); } getConfigValue(key) { return this._config[key]; } } const configManager = ConfigurationManager.getInstance(); module.exports = { configManager }