UNPKG

vvc

Version:

Vivocha Command Line Tools

57 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs = require("fs"); const _ = require("lodash"); const util_1 = require("util"); function homedir() { const user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME; switch (process.platform) { case 'win32': return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || process.env.HOME || null; case 'darwin': return process.env.HOME || (user ? '/Users/' + user : null); case 'linux': return process.env.HOME || (process.getuid() === 0 ? '/root' : user ? '/home/' + user : null); default: return process.env.HOME || null; } } exports.meta = require(__dirname + '/../../package.json'); const _config_file_dir = `${homedir()}/.vvc`; const _config_file_path = `${_config_file_dir}/config.json`; let config; async function innerRead() { const raw = await util_1.promisify(fs.readFile)(_config_file_path, 'utf8'); return JSON.parse(raw.toString()); } async function read(force = false) { if (!config || force) { config = innerRead(); } return config; } exports.read = read; async function write(newConfig) { try { const stat = await util_1.promisify(fs.stat)(_config_file_dir); if (!stat.isDirectory()) { let e = new Error(`${_config_file_dir} is not a directory`); e.code = 'ENOTDIR'; throw e; } } catch (e) { if (e.code !== 'ENOENT') { throw e; } await util_1.promisify(fs.mkdir)(_config_file_dir); } await util_1.promisify(fs.writeFile)(_config_file_path, JSON.stringify(_.omit(newConfig, ['info']), null, 2)); return (config = Promise.resolve(newConfig)); } exports.write = write; function unlink() { return util_1.promisify(fs.unlink)(_config_file_path); } exports.unlink = unlink; //# sourceMappingURL=config.js.map