navy
Version:
Quick and powerful development environments using Docker and Docker Compose
54 lines (52 loc) • 2.27 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DEFAULT_TLS_ROOT_CA_DIR = void 0;
exports.getConfig = getConfig;
exports.getConfigDir = getConfigDir;
exports.getConfigPath = getConfigPath;
exports.setConfig = setConfig;
var _path = _interopRequireDefault(require("path"));
var _invariant = _interopRequireDefault(require("invariant"));
var _fs = _interopRequireWildcard(require("fs"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
const DEFAULT_ENVIRONMENT_NAME = 'dev';
const DEFAULT_TLS_ROOT_CA_DIR = exports.DEFAULT_TLS_ROOT_CA_DIR = `${getConfigDir()}/tls-root-ca`;
const DEFAULT_CONFIG = {
defaultNavy: DEFAULT_ENVIRONMENT_NAME,
externalIP: null,
tlsRootCaDir: DEFAULT_TLS_ROOT_CA_DIR
};
let _config = null;
function getConfigDir() {
const home = process.env.HOME;
(0, _invariant.default)(home, "NO_HOME_DIRECTORY: No home directory available");
return _path.default.join(home, '.navy');
}
function getConfigPath() {
const configDir = getConfigDir();
return _path.default.join(configDir, 'config.json');
}
function getConfig() {
if (_config) {
return _config;
}
try {
const file = _fs.default.readFileSync(getConfigPath(), 'utf8');
_config = JSON.parse(file);
return _config;
} catch (ex) {
return DEFAULT_CONFIG;
}
}
async function setConfig(config) {
if (config == null) config = DEFAULT_CONFIG;
await _fs.promises.mkdir(_path.default.dirname(getConfigPath()), {
recursive: true
});
await _fs.promises.writeFile(getConfigPath(), JSON.stringify(config, null, 2));
// trash cached config
_config = null;
}