navy
Version:
Quick and powerful development environments using Docker and Docker Compose
92 lines (70 loc) • 2.49 kB
JavaScript
;
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;