navy
Version:
Quick and powerful development environments using Docker and Docker Compose
69 lines (54 loc) • 2.82 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 _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;
}