sda
Version:
Software development assistant
112 lines • 3.89 kB
JavaScript
;
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