UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

70 lines (49 loc) 2.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; var _chalk = _interopRequireDefault(require("chalk")); var _ = require("../"); var _serviceHost = require("../util/service-host"); var _table = _interopRequireDefault(require("../util/table")); const SMALL_WINDOW_COLUMNS = 185; function getStatus(service, state) { let statusString = service.status === 'exited' ? _chalk.default.red(service.status) : service.status; if (state && state.services && state.services[service.name]) { const serviceState = state.services[service.name]; if (serviceState._develop) { statusString += ' ' + _chalk.default.yellow('(development)'); } if (serviceState._tag) { statusString += ' ' + _chalk.default.cyan(`@ ${serviceState._tag}`); } } return statusString; } function getPorts(service) { if (!service || !service.raw || !service.raw.NetworkSettings || !service.raw.NetworkSettings.Ports) { return '-'; } const ports = service.raw.NetworkSettings.Ports; const portKeys = Object.keys(ports); return portKeys.map(portKey => { return ports[portKey] ? `${ports[portKey].map(conf => conf.HostPort).join(', ')}->${portKey}` : portKey; }).join(', '); } const getDisplayUrl = serviceUrl => serviceUrl != null ? serviceUrl : '-'; async function _default(opts) { const navy = (0, _.getNavy)(opts.navy); const ps = await navy.ps(); const state = await navy.getState(); // $FlowIgnore getWindowSize not on type const isSmallConsole = process.stdout.isTTY && process.stdout.getWindowSize()[0] < SMALL_WINDOW_COLUMNS; if (opts.json) { return console.log(JSON.stringify(ps, null, 2)); } if (isSmallConsole) { return console.log((0, _table.default)([['ID', 'NAME', 'STATUS', 'PORTS', 'URL'], ...ps.map(service => [service.id.substring(0, 12), service.name, getStatus(service, state), getPorts(service), getDisplayUrl((0, _serviceHost.getUrlFromService)(service))])])); } console.log((0, _table.default)([['ID', 'NAME', 'IMAGE', 'STATUS', 'PORTS', 'URL'], ...ps.map(service => [service.id.substring(0, 12), service.name, service.image, getStatus(service, state), getPorts(service), getDisplayUrl((0, _serviceHost.getUrlFromService)(service))])])); } module.exports = exports.default;