UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

69 lines (54 loc) 2.82 kB
"use strict"; 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 _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } // $FlowIgnore const DEFAULT_ENVIRONMENT_NAME = 'dev'; const DEFAULT_TLS_ROOT_CA_DIR = `${getConfigDir()}/tls-root-ca`; exports.DEFAULT_TLS_ROOT_CA_DIR = DEFAULT_TLS_ROOT_CA_DIR; 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; }