navy
Version:
Quick and powerful development environments using Docker and Docker Compose
52 lines (41 loc) • 1.65 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _inquirer = _interopRequireDefault(require("inquirer"));
var _util = require("./util");
var _driverLogging = require("../driver-logging");
const SELECTED_WEIGHT = 100; // make sure selected services appear at the top
async function _default(services, opts) {
const navy = await (0, _util.getOrInitialiseNavy)(opts.navy);
const navyFile = (await navy.getNavyFile()) || {};
await navy.ensurePluginsLoaded();
const serviceNames = await navy.getAvailableServiceNames();
const launchedServiceNames = await navy.getLaunchedServiceNames();
const selectedServiceNames = launchedServiceNames.length > 0 ? launchedServiceNames : navyFile.launchDefaults || [];
if (!services || services.length === 0) {
const choices = serviceNames.sort(name => selectedServiceNames.indexOf(name) === -1 ? SELECTED_WEIGHT : -1).map(name => ({
name,
checked: selectedServiceNames.indexOf(name) !== -1
}));
const {
services: selectedServices
} = await _inquirer.default.prompt([{
type: 'checkbox',
message: 'Select services that you\'d like to bring up',
name: 'services',
choices
}]);
services = selectedServices;
}
if (services.length === 0) {
return;
}
await navy.emitAsync('cli.before.launch');
(0, _driverLogging.startDriverLogging)('Launching services...');
await navy.launch(services);
(0, _driverLogging.stopDriverLogging)();
}
module.exports = exports.default;