navy 4.1.2-rc.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/lib/cli/config/index.js +57 -241
  2. package/lib/cli/config/wrapper.js +12 -36
  3. package/lib/cli/develop.js +63 -167
  4. package/lib/cli/doctor/clean-compose-files.js +19 -73
  5. package/lib/cli/doctor/index.js +34 -154
  6. package/lib/cli/doctor/invalid-compose-config.js +20 -110
  7. package/lib/cli/doctor/invalid-state.js +22 -115
  8. package/lib/cli/doctor/util.js +26 -93
  9. package/lib/cli/external-ip.js +9 -39
  10. package/lib/cli/health.js +18 -67
  11. package/lib/cli/https.js +92 -0
  12. package/lib/cli/import.js +22 -59
  13. package/lib/cli/index.js +11 -17
  14. package/lib/cli/lan-ip.js +18 -60
  15. package/lib/cli/launch.js +46 -127
  16. package/lib/cli/live.js +37 -111
  17. package/lib/cli/local-ip.js +16 -53
  18. package/lib/cli/logs.js +7 -35
  19. package/lib/cli/open.js +11 -45
  20. package/lib/cli/program.js +145 -167
  21. package/lib/cli/ps.js +36 -105
  22. package/lib/cli/refresh-config.js +18 -62
  23. package/lib/cli/run.js +8 -39
  24. package/lib/cli/status.js +41 -201
  25. package/lib/cli/updates.js +68 -160
  26. package/lib/cli/util/get-or-initialise-navy.js +14 -57
  27. package/lib/cli/util/import.js +33 -83
  28. package/lib/cli/util/index.js +10 -12
  29. package/lib/cli/util/reconfigure.js +12 -102
  30. package/lib/cli/wait-for-healthy.js +53 -100
  31. package/lib/config-provider.js +25 -127
  32. package/lib/config-providers/filesystem/index.js +58 -235
  33. package/lib/config-providers/npm/__tests__/util.js +3 -6
  34. package/lib/config-providers/npm/index.js +60 -231
  35. package/lib/config-providers/npm/util.js +6 -9
  36. package/lib/config.js +39 -76
  37. package/lib/driver-logging.js +23 -28
  38. package/lib/driver.js +5 -7
  39. package/lib/drivers/docker-compose/client.js +64 -172
  40. package/lib/drivers/docker-compose/index.js +153 -464
  41. package/lib/errors.js +27 -61
  42. package/lib/http-proxy.js +72 -158
  43. package/lib/index.js +26 -29
  44. package/lib/middleware/add-service-proxy-config.js +76 -0
  45. package/lib/middleware/develop.js +9 -23
  46. package/lib/middleware/helpers.js +20 -25
  47. package/lib/middleware/port-override.js +15 -37
  48. package/lib/middleware/set-env-vars.js +14 -18
  49. package/lib/middleware/set-image.js +12 -18
  50. package/lib/middleware/set-logging-driver.js +14 -18
  51. package/lib/middleware/tag-override.js +11 -19
  52. package/lib/navy/default-middleware.js +13 -27
  53. package/lib/navy/index.js +438 -1761
  54. package/lib/navy/middleware.js +15 -100
  55. package/lib/navy/plugin-interface.js +28 -108
  56. package/lib/navy/state.js +58 -147
  57. package/lib/navy/util.js +2 -1
  58. package/lib/service.js +5 -3
  59. package/lib/util/__tests__/external-ip.js +20 -96
  60. package/lib/util/__tests__/registry-client.js +11 -24
  61. package/lib/util/__tests__/service-host.js +19 -116
  62. package/lib/util/docker-client.js +10 -13
  63. package/lib/util/exec-async.js +9 -27
  64. package/lib/util/external-ip.js +48 -126
  65. package/lib/util/fs.js +7 -6
  66. package/lib/util/get-lan-ip.js +15 -52
  67. package/lib/util/has-update.js +23 -73
  68. package/lib/util/https.js +213 -0
  69. package/lib/util/navyrc.js +12 -50
  70. package/lib/util/registry-client.js +41 -112
  71. package/lib/util/service-host.js +40 -129
  72. package/lib/util/table.js +11 -21
  73. package/package.json +14 -14
  74. package/LICENSE +0 -21
  75. package/lib/middleware/add-virtual-hosts.js +0 -147
@@ -1,67 +1,24 @@
1
- 'use strict';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
4
 
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.getOrInitialiseNavy = undefined;
7
-
8
- var _regenerator = require('babel-runtime/regenerator');
9
-
10
- var _regenerator2 = _interopRequireDefault(_regenerator);
11
-
12
- var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
13
-
14
- var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
15
-
16
- var getOrInitialiseNavy = exports.getOrInitialiseNavy = function () {
17
- var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(navyName) {
18
- var navy;
19
- return _regenerator2.default.wrap(function _callee$(_context) {
20
- while (1) {
21
- switch (_context.prev = _context.next) {
22
- case 0:
23
- navy = (0, _.getNavy)(navyName);
24
- _context.next = 3;
25
- return navy.isInitialised();
26
-
27
- case 3:
28
- if (_context.sent) {
29
- _context.next = 11;
30
- break;
31
- }
32
-
33
- _context.t0 = _import.importNavy;
34
- _context.t1 = navy;
35
- _context.next = 8;
36
- return _filesystem2.default.getImportOptionsForCLI({});
37
-
38
- case 8:
39
- _context.t2 = _context.sent;
40
- _context.next = 11;
41
- return (0, _context.t0)(_context.t1, _context.t2);
42
-
43
- case 11:
44
- return _context.abrupt('return', navy);
45
-
46
- case 12:
47
- case 'end':
48
- return _context.stop();
49
- }
50
- }
51
- }, _callee, this);
52
- }));
8
+ exports.getOrInitialiseNavy = getOrInitialiseNavy;
53
9
 
54
- return function getOrInitialiseNavy(_x) {
55
- return _ref.apply(this, arguments);
56
- };
57
- }();
10
+ var _ = require("../../");
58
11
 
59
- var _ = require('../../');
12
+ var _import = require("./import");
60
13
 
61
- var _import = require('./import');
14
+ var _filesystem = _interopRequireDefault(require("../../config-providers/filesystem"));
62
15
 
63
- var _filesystem = require('../../config-providers/filesystem');
16
+ async function getOrInitialiseNavy(navyName) {
17
+ const navy = (0, _.getNavy)(navyName);
64
18
 
65
- var _filesystem2 = _interopRequireDefault(_filesystem);
19
+ if (!(await navy.isInitialised())) {
20
+ await (0, _import.importNavy)(navy, await _filesystem.default.getImportOptionsForCLI({}));
21
+ }
66
22
 
67
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+ return navy;
24
+ }
@@ -1,94 +1,44 @@
1
- 'use strict';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
4
 
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.importNavy = undefined;
7
-
8
- var _regenerator = require('babel-runtime/regenerator');
9
-
10
- var _regenerator2 = _interopRequireDefault(_regenerator);
11
-
12
- var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
13
-
14
- var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
15
-
16
- var importNavy = exports.importNavy = function () {
17
- var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(navy, initialiseOpts) {
18
- var key;
19
- return _regenerator2.default.wrap(function _callee$(_context) {
20
- while (1) {
21
- switch (_context.prev = _context.next) {
22
- case 0:
23
- _context.next = 2;
24
- return navy.isInitialised();
25
-
26
- case 2:
27
- if (!_context.sent) {
28
- _context.next = 4;
29
- break;
30
- }
31
-
32
- throw new _errors.NavyError('Navy "' + navy.name + '" has already been imported and initialised.');
33
-
34
- case 4:
35
- _context.next = 6;
36
- return navy.initialise(initialiseOpts);
37
-
38
- case 6:
39
- _context.next = 8;
40
- return navy.ensurePluginsLoaded();
41
-
42
- case 8:
43
- _context.next = 10;
44
- return navy.emitAsync('cli.import');
45
-
46
- case 10:
47
-
48
- (0, _driverLogging.startDriverLogging)('Ensuring services are up to date...');
49
- _context.next = 13;
50
- return navy.relaunch();
51
-
52
- case 13:
53
- (0, _driverLogging.stopDriverLogging)();
54
-
55
- console.log();
56
- console.log(_chalk2.default.green(' Navy "' + _chalk2.default.white.bold(navy.name) + '" has now been imported and initialised. \uD83C\uDF89'));
57
- console.log();
58
-
59
- for (key in initialiseOpts) {
60
- if (OPTION_LABEL_MAP[key]) {
61
- console.log(' ' + _chalk2.default.bold(OPTION_LABEL_MAP[key]) + ': ' + _chalk2.default.dim(initialiseOpts[key]));
62
- }
63
- }
64
-
65
- console.log();
66
-
67
- case 19:
68
- case 'end':
69
- return _context.stop();
70
- }
71
- }
72
- }, _callee, this);
73
- }));
74
-
75
- return function importNavy(_x, _x2) {
76
- return _ref.apply(this, arguments);
77
- };
78
- }();
79
-
80
- var _chalk = require('chalk');
81
-
82
- var _chalk2 = _interopRequireDefault(_chalk);
8
+ exports.importNavy = importNavy;
83
9
 
84
- var _driverLogging = require('../../driver-logging');
10
+ var _chalk = _interopRequireDefault(require("chalk"));
85
11
 
86
- var _errors = require('../../errors');
12
+ var _driverLogging = require("../../driver-logging");
87
13
 
88
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ var _errors = require("../../errors");
89
15
 
90
- var OPTION_LABEL_MAP = {
16
+ const OPTION_LABEL_MAP = {
91
17
  configProvider: 'Provider',
92
18
  path: 'Directory',
93
19
  npmPackage: 'NPM Package'
94
- };
20
+ };
21
+
22
+ async function importNavy(navy, initialiseOpts) {
23
+ if (await navy.isInitialised()) {
24
+ throw new _errors.NavyError(`Navy "${navy.name}" has already been imported and initialised.`);
25
+ }
26
+
27
+ await navy.initialise(initialiseOpts);
28
+ await navy.ensurePluginsLoaded();
29
+ await navy.emitAsync('cli.import');
30
+ (0, _driverLogging.startDriverLogging)('Ensuring services are up to date...');
31
+ await navy.relaunch();
32
+ (0, _driverLogging.stopDriverLogging)();
33
+ console.log();
34
+ console.log(_chalk.default.green(` Navy "${_chalk.default.white.bold(navy.name)}" has now been imported and initialised. 🎉`));
35
+ console.log();
36
+
37
+ for (const key in initialiseOpts) {
38
+ if (OPTION_LABEL_MAP[key]) {
39
+ console.log(` ${_chalk.default.bold(OPTION_LABEL_MAP[key])}: ${_chalk.default.dim(initialiseOpts[key])}`);
40
+ }
41
+ }
42
+
43
+ console.log();
44
+ }
@@ -1,23 +1,21 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
- var _getOrInitialiseNavy = require('./get-or-initialise-navy');
8
-
9
- Object.defineProperty(exports, 'getOrInitialiseNavy', {
6
+ Object.defineProperty(exports, "getOrInitialiseNavy", {
10
7
  enumerable: true,
11
- get: function get() {
8
+ get: function () {
12
9
  return _getOrInitialiseNavy.getOrInitialiseNavy;
13
10
  }
14
11
  });
15
-
16
- var _import = require('./import');
17
-
18
- Object.defineProperty(exports, 'importNavy', {
12
+ Object.defineProperty(exports, "importNavy", {
19
13
  enumerable: true,
20
- get: function get() {
14
+ get: function () {
21
15
  return _import.importNavy;
22
16
  }
23
- });
17
+ });
18
+
19
+ var _getOrInitialiseNavy = require("./get-or-initialise-navy");
20
+
21
+ var _import = require("./import");
@@ -1,110 +1,20 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.reconfigureAllNavies = undefined;
6
+ exports.reconfigureAllNavies = reconfigureAllNavies;
7
7
 
8
- var _regenerator = require('babel-runtime/regenerator');
8
+ var _ = require("../../");
9
9
 
10
- var _regenerator2 = _interopRequireDefault(_regenerator);
10
+ var _driverLogging = require("../../driver-logging");
11
11
 
12
- var _getIterator2 = require('babel-runtime/core-js/get-iterator');
12
+ async function reconfigureAllNavies() {
13
+ const navies = await (0, _.getLaunchedNavies)();
13
14
 
14
- var _getIterator3 = _interopRequireDefault(_getIterator2);
15
-
16
- var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
17
-
18
- var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
19
-
20
- var reconfigureAllNavies = exports.reconfigureAllNavies = function () {
21
- var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
22
- var navies, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, navy;
23
-
24
- return _regenerator2.default.wrap(function _callee$(_context) {
25
- while (1) {
26
- switch (_context.prev = _context.next) {
27
- case 0:
28
- _context.next = 2;
29
- return (0, _.getLaunchedNavies)();
30
-
31
- case 2:
32
- navies = _context.sent;
33
- _iteratorNormalCompletion = true;
34
- _didIteratorError = false;
35
- _iteratorError = undefined;
36
- _context.prev = 6;
37
- _iterator = (0, _getIterator3.default)(navies);
38
-
39
- case 8:
40
- if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
41
- _context.next = 17;
42
- break;
43
- }
44
-
45
- navy = _step.value;
46
-
47
- (0, _driverLogging.startDriverLogging)('Reconfiguring ' + navy.name);
48
- _context.next = 13;
49
- return navy.reconfigure();
50
-
51
- case 13:
52
- (0, _driverLogging.stopDriverLogging)();
53
-
54
- case 14:
55
- _iteratorNormalCompletion = true;
56
- _context.next = 8;
57
- break;
58
-
59
- case 17:
60
- _context.next = 23;
61
- break;
62
-
63
- case 19:
64
- _context.prev = 19;
65
- _context.t0 = _context['catch'](6);
66
- _didIteratorError = true;
67
- _iteratorError = _context.t0;
68
-
69
- case 23:
70
- _context.prev = 23;
71
- _context.prev = 24;
72
-
73
- if (!_iteratorNormalCompletion && _iterator.return) {
74
- _iterator.return();
75
- }
76
-
77
- case 26:
78
- _context.prev = 26;
79
-
80
- if (!_didIteratorError) {
81
- _context.next = 29;
82
- break;
83
- }
84
-
85
- throw _iteratorError;
86
-
87
- case 29:
88
- return _context.finish(26);
89
-
90
- case 30:
91
- return _context.finish(23);
92
-
93
- case 31:
94
- case 'end':
95
- return _context.stop();
96
- }
97
- }
98
- }, _callee, this, [[6, 19, 23, 31], [24,, 26, 30]]);
99
- }));
100
-
101
- return function reconfigureAllNavies() {
102
- return _ref.apply(this, arguments);
103
- };
104
- }();
105
-
106
- var _ = require('../../');
107
-
108
- var _driverLogging = require('../../driver-logging');
109
-
110
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ for (const navy of navies) {
16
+ (0, _driverLogging.startDriverLogging)('Reconfiguring ' + navy.name);
17
+ await navy.reconfigure();
18
+ (0, _driverLogging.stopDriverLogging)();
19
+ }
20
+ }
@@ -1,125 +1,78 @@
1
- 'use strict';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
4
 
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
8
+ exports.default = _default;
6
9
 
7
- var _regenerator = require('babel-runtime/regenerator');
8
-
9
- var _regenerator2 = _interopRequireDefault(_regenerator);
10
-
11
- var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
12
-
13
- var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
14
-
15
- var _chalk = require('chalk');
16
-
17
- var _chalk2 = _interopRequireDefault(_chalk);
18
-
19
- var _readline = require('readline');
20
-
21
- var _readline2 = _interopRequireDefault(_readline);
22
-
23
- var _cliSpinners = require('cli-spinners');
24
-
25
- var _ = require('../');
26
-
27
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
-
29
- var spinnerIndex = 0;
30
- var spinnerFrame = _cliSpinners.dots.frames[0];
31
-
32
- exports.default = function () {
33
- var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(services, opts) {
34
- var navy, servicesToCheck, healthyStatus, drawnLines, draw, redraw, spinner;
35
- return _regenerator2.default.wrap(function _callee$(_context) {
36
- while (1) {
37
- switch (_context.prev = _context.next) {
38
- case 0:
39
- redraw = function redraw() {
40
- _readline2.default.clearLine(process.stdout, 0);
41
- _readline2.default.cursorTo(process.stdout, 0);
42
-
43
- for (var i = 0; i < drawnLines; i++) {
44
- _readline2.default.moveCursor(process.stdout, 0, -1);
45
- _readline2.default.clearLine(process.stdout, 0);
46
- }
47
-
48
- draw();
49
- };
50
-
51
- draw = function draw() {
52
- drawnLines = 0;
53
-
54
- if (healthyStatus.length === 0) {
55
- console.log('Waiting');
56
- drawnLines = 1;
57
- return;
58
- }
10
+ var _chalk = _interopRequireDefault(require("chalk"));
59
11
 
60
- var lines = healthyStatus.map(function (service) {
61
- return (service.health !== 'healthy' ? _chalk2.default.yellow(spinnerFrame) : _chalk2.default.green('✔')) + ' ' + service.service;
62
- });
12
+ var _readline = _interopRequireDefault(require("readline"));
63
13
 
64
- drawnLines = lines.length;
65
- console.log(lines.join('\n'));
66
- };
14
+ var _cliSpinners = require("cli-spinners");
67
15
 
68
- navy = (0, _.getNavy)(opts.navy);
69
- servicesToCheck = services.length === 0 ? undefined : services;
16
+ var _ = require("../");
70
17
 
71
- if (process.stdout.isTTY) {
72
- _context.next = 9;
73
- break;
74
- }
18
+ let spinnerIndex = 0;
19
+ let spinnerFrame = _cliSpinners.dots.frames[0];
75
20
 
76
- _context.next = 7;
77
- return navy.waitForHealthy(servicesToCheck);
21
+ async function _default(services, opts) {
22
+ const navy = (0, _.getNavy)(opts.navy);
23
+ const servicesToCheck = services.length === 0 ? undefined : services;
78
24
 
79
- case 7:
80
- console.log('Now available');
81
- return _context.abrupt('return');
25
+ if (!process.stdout.isTTY) {
26
+ await navy.waitForHealthy(servicesToCheck);
27
+ console.log('Now available');
28
+ return;
29
+ }
82
30
 
83
- case 9:
84
- healthyStatus = [];
85
- drawnLines = 0;
86
- spinner = setInterval(function () {
87
- spinnerIndex++;
31
+ let healthyStatus = [];
32
+ let drawnLines = 0;
88
33
 
89
- if (spinnerIndex >= _cliSpinners.dots.frames.length) {
90
- spinnerIndex = 0;
91
- }
34
+ function draw() {
35
+ drawnLines = 0;
92
36
 
93
- spinnerFrame = _cliSpinners.dots.frames[spinnerIndex];
37
+ if (healthyStatus.length === 0) {
38
+ console.log('Waiting');
39
+ drawnLines = 1;
40
+ return;
41
+ }
94
42
 
95
- redraw();
96
- }, _cliSpinners.dots.interval);
43
+ const lines = healthyStatus.map(service => `${service.health !== 'healthy' ? _chalk.default.yellow(spinnerFrame) : _chalk.default.green('✔')} ${service.service}`);
44
+ drawnLines = lines.length;
45
+ console.log(lines.join('\n'));
46
+ }
97
47
 
48
+ function redraw() {
49
+ _readline.default.clearLine(process.stdout, 0);
98
50
 
99
- draw();
51
+ _readline.default.cursorTo(process.stdout, 0);
100
52
 
101
- _context.next = 15;
102
- return navy.waitForHealthy(servicesToCheck, function (servicesHealth) {
103
- return healthyStatus = servicesHealth;
104
- });
53
+ for (let i = 0; i < drawnLines; i++) {
54
+ _readline.default.moveCursor(process.stdout, 0, -1);
105
55
 
106
- case 15:
56
+ _readline.default.clearLine(process.stdout, 0);
57
+ }
107
58
 
108
- redraw();
59
+ draw();
60
+ }
109
61
 
110
- clearInterval(spinner);
62
+ const spinner = setInterval(() => {
63
+ spinnerIndex++;
111
64
 
112
- case 17:
113
- case 'end':
114
- return _context.stop();
115
- }
116
- }
117
- }, _callee, this);
118
- }));
65
+ if (spinnerIndex >= _cliSpinners.dots.frames.length) {
66
+ spinnerIndex = 0;
67
+ }
119
68
 
120
- return function (_x, _x2) {
121
- return _ref.apply(this, arguments);
122
- };
123
- }();
69
+ spinnerFrame = _cliSpinners.dots.frames[spinnerIndex];
70
+ redraw();
71
+ }, _cliSpinners.dots.interval);
72
+ draw();
73
+ await navy.waitForHealthy(servicesToCheck, servicesHealth => healthyStatus = servicesHealth);
74
+ redraw();
75
+ clearInterval(spinner);
76
+ }
124
77
 
125
78
  module.exports = exports.default;