UNPKG

sda

Version:

Software development assistant

112 lines 3.89 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs = __importStar(require("fs")); const path = __importStar(require("path")); const Log_1 = __importDefault(require("../Log")); const Constants_1 = require("./Constants"); class HomeConfig { constructor(config, fileName) { this.config = config; this.fileName = fileName; } static create() { const homeFolder = getHomeFolder(); if (homeFolder) { try { const fileName = path.join(homeFolder, Constants_1.configFileName); if (!fs.existsSync(fileName)) { fs.writeFileSync(fileName, JSON.stringify(Constants_1.EMPTY_CONFIG, undefined, 2)); } const configFile = fs.readFileSync(fileName, 'utf8'); const config = JSON.parse(configFile); return new HomeConfig(config, fileName); } catch (err) { Log_1.default.error('Could not create home config object.'); throw err; } } else { throw new Error('Home folder could not be found.'); } } /** * Returns the path to the config file in the user folder. * If the file doesn't exist returns undefined. */ static getPathIfExists() { const homeFolder = getHomeFolder(); if (homeFolder) { const fileName = path.join(homeFolder, Constants_1.configFileName); if (fs.existsSync(fileName)) { return fileName; } } } addEnvironment(env) { if (!this.config.environments) { this.config.environments = {}; } this.config.environments[env.id] = { path: env.path, templateId: env.templateId, }; } addTemplate(template) { if (!this.config.templates) { this.config.templates = {}; } this.config.templates[template.id] = { commands: template.commands, aliases: template.aliases, gitRepo: template.gitRepo, description: template.description, }; } removeEnvironment(envId) { if (this.config.environments) { this.config.environments[envId] = undefined; } } removeTemplate(templateId) { if (this.config.templates) { delete this.config.templates[templateId]; } } async write() { const ws = fs.createWriteStream(this.fileName); ws.write(JSON.stringify(this.config, undefined, 2)); ws.end(); return new Promise((resolve, reject) => { ws.on('finish', () => { Log_1.default.verbose('Config file written.'); resolve(); }); ws.on('error', (error) => { Log_1.default.verbose(`Error writing config file. ${error}`); reject(error); }); }); } } exports.default = HomeConfig; function getHomeFolder() { if (process.env.HOME) { return process.env.HOME; } else if (process.env.HOMEDRIVE && process.env.HOMEPATH) { return path.join(process.env.HOMEDRIVE, process.env.HOMEPATH); } } exports.getHomeFolder = getHomeFolder; //# sourceMappingURL=HomeConfig.js.map