UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

78 lines (56 loc) 1.93 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 _readline = _interopRequireDefault(require("readline")); var _cliSpinners = require("cli-spinners"); var _ = require("../"); let spinnerIndex = 0; let spinnerFrame = _cliSpinners.dots.frames[0]; async function _default(services, opts) { const navy = (0, _.getNavy)(opts.navy); const servicesToCheck = services.length === 0 ? undefined : services; if (!process.stdout.isTTY) { await navy.waitForHealthy(servicesToCheck); console.log('Now available'); return; } let healthyStatus = []; let drawnLines = 0; function draw() { drawnLines = 0; if (healthyStatus.length === 0) { console.log('Waiting'); drawnLines = 1; return; } const lines = healthyStatus.map(service => `${service.health !== 'healthy' ? _chalk.default.yellow(spinnerFrame) : _chalk.default.green('✔')} ${service.service}`); drawnLines = lines.length; console.log(lines.join('\n')); } function redraw() { _readline.default.clearLine(process.stdout, 0); _readline.default.cursorTo(process.stdout, 0); for (let i = 0; i < drawnLines; i++) { _readline.default.moveCursor(process.stdout, 0, -1); _readline.default.clearLine(process.stdout, 0); } draw(); } const spinner = setInterval(() => { spinnerIndex++; if (spinnerIndex >= _cliSpinners.dots.frames.length) { spinnerIndex = 0; } spinnerFrame = _cliSpinners.dots.frames[spinnerIndex]; redraw(); }, _cliSpinners.dots.interval); draw(); await navy.waitForHealthy(servicesToCheck, servicesHealth => healthyStatus = servicesHealth); redraw(); clearInterval(spinner); } module.exports = exports.default;