UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

92 lines (70 loc) 2.49 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createFileSystemConfigProvider; var _path = _interopRequireDefault(require("path")); var _invariant = _interopRequireDefault(require("invariant")); var _fs = _interopRequireDefault(require("../../util/fs")); var _execAsync = require("../../util/exec-async"); async function cwdHasValidDockerComposeConfig() { try { await (0, _execAsync.execAsync)('docker compose', ['config'], null, { maxBuffer: Infinity, cwd: process.cwd() }); } catch (ex) { return false; } return true; } function createFileSystemConfigProvider(navy) { return { async getNavyPath() { const envState = await navy.getState(); (0, _invariant.default)(!!envState, "STATE_NONEXISTANT: State doesn't exist for navy %s", navy.name); (0, _invariant.default)(!!envState.path, "FILESYSTEM_PROVIDER_REQUIRES_PATH: File system config provider requires a path for %s", navy.name); try { await _fs.default.statAsync(envState.path); } catch (ex) { (0, _invariant.default)(false, "FILESYSTEM_PROVIDER_INVALID_PATH: Invalid path given to navy: %s", navy.name); } return envState.path; }, async getNavyFilePath() { return _path.default.join(await this.getNavyPath(), 'Navyfile.js'); }, async refreshConfig() { // no-op return false; }, async getLocationDisplayName() { const envState = await navy.getState(); (0, _invariant.default)(!!envState, "STATE_NONEXISTANT: State doesn't exist for navy %s", navy.name); return envState.path; }, async isDangling() { const envState = await navy.getState(); if (!envState || !envState.path) { return true; } try { await _fs.default.statAsync(envState.path); } catch (ex) { return true; } return false; } }; } createFileSystemConfigProvider.importCliOptions = []; createFileSystemConfigProvider.getImportOptionsForCLI = async opts => { const hasValidComposeConfig = await cwdHasValidDockerComposeConfig(); (0, _invariant.default)(hasValidComposeConfig, "NO_DOCKER_COMPOSE_FILE: No docker-compose.yml (or valid Docker Compose config) found"); return { configProvider: 'filesystem', path: process.cwd() }; }; module.exports = exports.default;