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,265 +1,81 @@
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.reconfigureIfNecessary = undefined;
7
-
8
- var _stringify = require('babel-runtime/core-js/json/stringify');
9
-
10
- var _stringify2 = _interopRequireDefault(_stringify);
11
-
12
- var _keys = require('babel-runtime/core-js/object/keys');
13
-
14
- var _keys2 = _interopRequireDefault(_keys);
15
-
16
- var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
17
-
18
- var _defineProperty3 = _interopRequireDefault(_defineProperty2);
19
-
20
- var _extends4 = require('babel-runtime/helpers/extends');
21
-
22
- var _extends5 = _interopRequireDefault(_extends4);
23
-
24
- var _regenerator = require('babel-runtime/regenerator');
25
-
26
- var _regenerator2 = _interopRequireDefault(_regenerator);
27
-
28
- var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
29
-
30
- var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
8
+ exports.reconfigureIfNecessary = reconfigureIfNecessary;
31
9
 
32
- var reconfigureIfNecessary = exports.reconfigureIfNecessary = function () {
33
- var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(configProp) {
34
- return _regenerator2.default.wrap(function _callee$(_context) {
35
- while (1) {
36
- switch (_context.prev = _context.next) {
37
- case 0:
38
- if (!(configWhichNeedsReconfigure.indexOf(configProp) === -1)) {
39
- _context.next = 2;
40
- break;
41
- }
10
+ var _commander = _interopRequireDefault(require("commander"));
42
11
 
43
- return _context.abrupt('return');
12
+ var _config = require("../../config");
44
13
 
45
- case 2:
46
- _context.next = 4;
47
- return (0, _reconfigure.reconfigureAllNavies)();
14
+ var _errors = require("../../errors");
48
15
 
49
- case 4:
50
- case 'end':
51
- return _context.stop();
52
- }
53
- }
54
- }, _callee, this);
55
- }));
16
+ var _reconfigure = require("../util/reconfigure");
56
17
 
57
- return function reconfigureIfNecessary(_x) {
58
- return _ref.apply(this, arguments);
59
- };
60
- }();
61
-
62
- var _commander = require('commander');
63
-
64
- var _commander2 = _interopRequireDefault(_commander);
65
-
66
- var _config = require('../../config');
67
-
68
- var _errors = require('../../errors');
69
-
70
- var _reconfigure = require('../util/reconfigure');
71
-
72
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
73
-
74
- var NAME_MAP = {
18
+ const NAME_MAP = {
75
19
  'default-navy': 'defaultNavy',
76
- 'external-ip': 'externalIP'
20
+ 'external-ip': 'externalIP',
21
+ 'tlsCa-dir': 'tlsRootCaDir'
77
22
  };
23
+ const configWhichNeedsReconfigure = ['externalIP'];
78
24
 
79
- var configWhichNeedsReconfigure = ['externalIP'];
80
-
81
- _commander2.default.command('set <key> <value>').description('Sets the given config key').action(function () {
82
- var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(key, value) {
83
- var configProp;
84
- return _regenerator2.default.wrap(function _callee2$(_context2) {
85
- while (1) {
86
- switch (_context2.prev = _context2.next) {
87
- case 0:
88
- configProp = NAME_MAP[key];
89
-
90
- if (configProp) {
91
- _context2.next = 3;
92
- break;
93
- }
94
-
95
- throw new _errors.NavyError('Invalid config key: ' + key);
96
-
97
- case 3:
98
- _context2.t0 = _config.setConfig;
99
- _context2.t1 = _extends5.default;
100
- _context2.t2 = {};
101
- _context2.next = 8;
102
- return (0, _config.getConfig)();
103
-
104
- case 8:
105
- _context2.t3 = _context2.sent;
106
- _context2.t4 = (0, _defineProperty3.default)({}, configProp, value);
107
- _context2.t5 = (0, _context2.t1)(_context2.t2, _context2.t3, _context2.t4);
108
- _context2.next = 13;
109
- return (0, _context2.t0)(_context2.t5);
110
-
111
- case 13:
112
- _context2.next = 15;
113
- return reconfigureIfNecessary(configProp);
114
-
115
- case 15:
116
- case 'end':
117
- return _context2.stop();
118
- }
119
- }
120
- }, _callee2, undefined);
121
- }));
122
-
123
- return function (_x2, _x3) {
124
- return _ref2.apply(this, arguments);
125
- };
126
- }());
127
-
128
- _commander2.default.command('get <key>').description('Gets the given config by key').action(function () {
129
- var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(key) {
130
- var config;
131
- return _regenerator2.default.wrap(function _callee3$(_context3) {
132
- while (1) {
133
- switch (_context3.prev = _context3.next) {
134
- case 0:
135
- if (NAME_MAP[key]) {
136
- _context3.next = 2;
137
- break;
138
- }
139
-
140
- throw new _errors.NavyError('Invalid config key: ' + key);
141
-
142
- case 2:
143
- _context3.next = 4;
144
- return (0, _config.getConfig)();
145
-
146
- case 4:
147
- config = _context3.sent;
148
-
149
-
150
- console.log(config[NAME_MAP[key]]);
151
-
152
- case 6:
153
- case 'end':
154
- return _context3.stop();
155
- }
156
- }
157
- }, _callee3, undefined);
158
- }));
159
-
160
- return function (_x4) {
161
- return _ref3.apply(this, arguments);
162
- };
163
- }());
164
-
165
- _commander2.default.command('rm <key>').description('Removes the current config value').action(function () {
166
- var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(key) {
167
- var configProp;
168
- return _regenerator2.default.wrap(function _callee4$(_context4) {
169
- while (1) {
170
- switch (_context4.prev = _context4.next) {
171
- case 0:
172
- configProp = NAME_MAP[key];
173
-
174
- if (configProp) {
175
- _context4.next = 3;
176
- break;
177
- }
178
-
179
- throw new _errors.NavyError('Invalid config key: ' + key);
180
-
181
- case 3:
182
- _context4.t0 = _config.setConfig;
183
- _context4.t1 = _extends5.default;
184
- _context4.t2 = {};
185
- _context4.next = 8;
186
- return (0, _config.getConfig)();
187
-
188
- case 8:
189
- _context4.t3 = _context4.sent;
190
- _context4.t4 = (0, _defineProperty3.default)({}, configProp, null);
191
- _context4.t5 = (0, _context4.t1)(_context4.t2, _context4.t3, _context4.t4);
192
- _context4.next = 13;
193
- return (0, _context4.t0)(_context4.t5);
194
-
195
- case 13:
196
- _context4.next = 15;
197
- return reconfigureIfNecessary(configProp);
25
+ async function reconfigureIfNecessary(configProp) {
26
+ if (configWhichNeedsReconfigure.indexOf(configProp) === -1) {
27
+ return;
28
+ }
198
29
 
199
- case 15:
200
- case 'end':
201
- return _context4.stop();
202
- }
203
- }
204
- }, _callee4, undefined);
205
- }));
30
+ await (0, _reconfigure.reconfigureAllNavies)();
31
+ }
206
32
 
207
- return function (_x5) {
208
- return _ref4.apply(this, arguments);
209
- };
210
- }());
33
+ _commander.default.command('set <key> <value>').description('Sets the given config key').action(async (key, value) => {
34
+ const configProp = NAME_MAP[key];
211
35
 
212
- _commander2.default.command('ls').description('Lists all of the Navy config keys and values that have been set').action((0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {
213
- var configKeys, config;
214
- return _regenerator2.default.wrap(function _callee5$(_context5) {
215
- while (1) {
216
- switch (_context5.prev = _context5.next) {
217
- case 0:
218
- configKeys = (0, _keys2.default)(NAME_MAP);
219
- _context5.next = 3;
220
- return (0, _config.getConfig)();
36
+ if (!configProp) {
37
+ throw new _errors.NavyError('Invalid config key: ' + key);
38
+ }
221
39
 
222
- case 3:
223
- config = _context5.sent;
40
+ await (0, _config.setConfig)({ ...(await (0, _config.getConfig)()),
41
+ [configProp]: value
42
+ });
43
+ await reconfigureIfNecessary(configProp);
44
+ });
224
45
 
46
+ _commander.default.command('get <key>').description('Gets the given config by key').action(async key => {
47
+ if (!NAME_MAP[key]) {
48
+ throw new _errors.NavyError('Invalid config key: ' + key);
49
+ }
225
50
 
226
- console.log(configKeys.map(function (key) {
227
- return key + '=' + (config[NAME_MAP[key]] != null ? config[NAME_MAP[key]] : 'null');
228
- }).join('\n'));
51
+ const config = await (0, _config.getConfig)();
52
+ console.log(config[NAME_MAP[key]]);
53
+ });
229
54
 
230
- case 5:
231
- case 'end':
232
- return _context5.stop();
233
- }
234
- }
235
- }, _callee5, undefined);
236
- })));
55
+ _commander.default.command('rm <key>').description('Removes the current config value').action(async key => {
56
+ const configProp = NAME_MAP[key];
237
57
 
238
- _commander2.default.command('json').description('Dumps out all Navy config as JSON').action((0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {
239
- return _regenerator2.default.wrap(function _callee6$(_context6) {
240
- while (1) {
241
- switch (_context6.prev = _context6.next) {
242
- case 0:
243
- _context6.t0 = console;
244
- _context6.t1 = _stringify2.default;
245
- _context6.next = 4;
246
- return (0, _config.getConfig)();
58
+ if (!configProp) {
59
+ throw new _errors.NavyError('Invalid config key: ' + key);
60
+ }
247
61
 
248
- case 4:
249
- _context6.t2 = _context6.sent;
250
- _context6.t3 = (0, _context6.t1)(_context6.t2, null, 2);
62
+ await (0, _config.setConfig)({ ...(await (0, _config.getConfig)()),
63
+ [configProp]: null
64
+ });
65
+ await reconfigureIfNecessary(configProp);
66
+ });
251
67
 
252
- _context6.t0.log.call(_context6.t0, _context6.t3);
68
+ _commander.default.command('ls').description('Lists all of the Navy config keys and values that have been set').action(async () => {
69
+ const configKeys = Object.keys(NAME_MAP);
70
+ const config = await (0, _config.getConfig)();
71
+ console.log(configKeys.map(key => `${key}=${config[NAME_MAP[key]] != null ? config[NAME_MAP[key]] : 'null'}`).join('\n'));
72
+ });
253
73
 
254
- case 7:
255
- case 'end':
256
- return _context6.stop();
257
- }
258
- }
259
- }, _callee6, undefined);
260
- })));
74
+ _commander.default.command('json').description('Dumps out all Navy config as JSON').action(async () => {
75
+ console.log(JSON.stringify(await (0, _config.getConfig)(), null, 2));
76
+ });
261
77
 
262
- process.on('unhandledRejection', function (err) {
78
+ process.on('unhandledRejection', err => {
263
79
  if (err instanceof _errors.NavyError) {
264
80
  err.prettyPrint();
265
81
  } else {
@@ -267,8 +83,8 @@ process.on('unhandledRejection', function (err) {
267
83
  }
268
84
  });
269
85
 
270
- _commander2.default.parse(process.argv);
86
+ _commander.default.parse(process.argv);
271
87
 
272
- if (_commander2.default.args.length === 0) {
273
- _commander2.default.help();
88
+ if (_commander.default.args.length === 0) {
89
+ _commander.default.help();
274
90
  }
@@ -1,45 +1,21 @@
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 _child_process = require('child_process');
16
-
17
- var _path = require('path');
18
-
19
- var _path2 = _interopRequireDefault(_path);
20
-
21
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
-
23
- exports.default = function () {
24
- var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(navy) {
25
- return _regenerator2.default.wrap(function _callee$(_context) {
26
- while (1) {
27
- switch (_context.prev = _context.next) {
28
- case 0:
29
- // $FlowIgnore flow bug with execSync
30
- (0, _child_process.execSync)(_path2.default.join(__dirname, '../../../bin/navy-config.js') + ' ' + process.argv.slice(3).join(' '), { stdio: 'inherit' });
10
+ var _child_process = require("child_process");
31
11
 
32
- case 1:
33
- case 'end':
34
- return _context.stop();
35
- }
36
- }
37
- }, _callee, this);
38
- }));
12
+ var _path = _interopRequireDefault(require("path"));
39
13
 
40
- return function (_x) {
41
- return _ref.apply(this, arguments);
42
- };
43
- }();
14
+ async function _default(navy) {
15
+ // $FlowIgnore flow bug with execSync
16
+ (0, _child_process.execSync)(_path.default.join(__dirname, '../../../bin/navy-config.js') + ' ' + process.argv.slice(3).join(' '), {
17
+ stdio: 'inherit'
18
+ });
19
+ }
44
20
 
45
21
  module.exports = exports.default;
@@ -1,189 +1,85 @@
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 _defineProperty2 = require('babel-runtime/helpers/defineProperty');
12
-
13
- var _defineProperty3 = _interopRequireDefault(_defineProperty2);
14
-
15
- var _extends3 = require('babel-runtime/helpers/extends');
16
-
17
- var _extends4 = _interopRequireDefault(_extends3);
18
-
19
- var _keys = require('babel-runtime/core-js/object/keys');
20
-
21
- var _keys2 = _interopRequireDefault(_keys);
22
-
23
- var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
24
-
25
- var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
26
-
27
- var _path = require('path');
28
-
29
- var _path2 = _interopRequireDefault(_path);
30
-
31
- var _chalk = require('chalk');
32
-
33
- var _chalk2 = _interopRequireDefault(_chalk);
34
-
35
- var _invariant = require('invariant');
36
-
37
- var _invariant2 = _interopRequireDefault(_invariant);
38
-
39
- var _ = require('../');
40
-
41
- var _errors = require('../errors');
42
-
43
- var _dockerClient = require('../util/docker-client');
44
-
45
- var _dockerClient2 = _interopRequireDefault(_dockerClient);
46
-
47
- var _navyrc = require('../util/navyrc');
48
-
49
- var _navyrc2 = _interopRequireDefault(_navyrc);
10
+ var _path = _interopRequireDefault(require("path"));
50
11
 
51
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var _chalk = _interopRequireDefault(require("chalk"));
52
13
 
53
- exports.default = function () {
54
- var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(service, opts) {
55
- var navy, cwd, navyRc, mounts, state, container, containerId, containerObj;
56
- return _regenerator2.default.wrap(function _callee$(_context) {
57
- while (1) {
58
- switch (_context.prev = _context.next) {
59
- case 0:
60
- navy = (0, _.getNavy)(opts.navy);
61
- cwd = process.cwd();
62
- _context.next = 4;
63
- return (0, _navyrc2.default)(cwd);
14
+ var _invariant = _interopRequireDefault(require("invariant"));
64
15
 
65
- case 4:
66
- navyRc = _context.sent;
16
+ var _ = require("../");
67
17
 
68
- if (!(!navyRc || !navyRc.services)) {
69
- _context.next = 7;
70
- break;
71
- }
18
+ var _errors = require("../errors");
72
19
 
73
- throw new _errors.NavyError('No valid .navyrc file was found in "' + cwd + '"');
20
+ var _dockerClient = _interopRequireDefault(require("../util/docker-client"));
74
21
 
75
- case 7:
76
- if (navyRc.develop) {
77
- _context.next = 9;
78
- break;
79
- }
22
+ var _navyrc = _interopRequireDefault(require("../util/navyrc"));
80
23
 
81
- throw new _errors.NavyError('No develop mounts found in .navyrc');
24
+ async function _default(service, opts) {
25
+ const navy = (0, _.getNavy)(opts.navy);
26
+ const cwd = process.cwd();
27
+ const navyRc = await (0, _navyrc.default)(cwd);
82
28
 
83
- case 9:
84
- if (!(navyRc.services.length > 1 && !service)) {
85
- _context.next = 11;
86
- break;
87
- }
29
+ if (!navyRc || !navyRc.services) {
30
+ throw new _errors.NavyError(`No valid .navyrc file was found in "${cwd}"`);
31
+ }
88
32
 
89
- throw new _errors.NavyError('Multiple service mappings are defined in .navyrc, you need to explicitly specify what service to develop');
33
+ if (!navyRc.develop) {
34
+ throw new _errors.NavyError('No develop mounts found in .navyrc');
35
+ }
90
36
 
91
- case 11:
37
+ if (navyRc.services.length > 1 && !service) {
38
+ throw new _errors.NavyError('Multiple service mappings are defined in .navyrc, you need to explicitly specify what service to develop');
39
+ }
92
40
 
93
- if (!service) service = navyRc.services[0];
41
+ if (!service) service = navyRc.services[0];
94
42
 
95
- if (!(navyRc.services.indexOf(service) === -1)) {
96
- _context.next = 14;
97
- break;
98
- }
43
+ if (navyRc.services.indexOf(service) === -1) {
44
+ throw new _errors.NavyError(`Service "${service}" is not a valid development target`);
45
+ }
99
46
 
100
- throw new _errors.NavyError('Service "' + service + '" is not a valid development target');
101
-
102
- case 14:
103
- mounts = {};
104
-
105
- (0, _keys2.default)(navyRc.develop.mounts).forEach(function (localPath) {
106
- return mounts[_path2.default.resolve(localPath)] = navyRc.develop.mounts[localPath];
107
- });
108
-
109
- _context.next = 18;
110
- return navy.getState();
111
-
112
- case 18:
113
- _context.t0 = _context.sent;
114
-
115
- if (_context.t0) {
116
- _context.next = 21;
117
- break;
118
- }
119
-
120
- _context.t0 = {};
121
-
122
- case 21:
123
- state = _context.t0;
124
- _context.next = 24;
125
- return navy.saveState((0, _extends4.default)({}, state, {
126
- services: (0, _extends4.default)({}, state.services, (0, _defineProperty3.default)({}, service, (0, _extends4.default)({}, (state.services || {})[service], {
127
- _develop: {
128
- mounts: mounts,
129
- command: navyRc.develop.command
130
- }
131
- })))
132
- }));
133
-
134
- case 24:
135
- _context.next = 26;
136
- return navy.emitAsync('cli.develop.beforeLaunch');
137
-
138
- case 26:
139
- _context.next = 28;
140
- return navy.kill([service]);
141
-
142
- case 28:
143
- _context.next = 30;
144
- return navy.launch([service], { noDeps: true });
145
-
146
- case 30:
147
-
148
- console.log('\uD83D\uDEA7 ' + service + ' has now restarted in development \uD83D\uDEA7');
149
- console.log(_chalk2.default.dim('-----------'));
150
- console.log();
151
-
152
- _context.next = 35;
153
- return navy.ps();
154
-
155
- case 35:
156
- _context.t1 = function (_service) {
157
- return _service.name === service;
158
- };
159
-
160
- container = _context.sent.filter(_context.t1)[0];
161
-
162
-
163
- (0, _invariant2.default)(container, 'DEVELOP_NO_CONTAINER_ID: Could not determine container ID for log attachment');
164
-
165
- containerId = container.id;
166
- containerObj = _dockerClient2.default.getContainer(containerId);
167
-
168
- containerObj.attach({ stream: true, stdout: true, stderr: true }).then(function (stream) {
169
- return containerObj.modem.demuxStream(stream, process.stdout, process.stderr);
170
- }).catch(function () {
171
- console.log();
172
- console.log(_chalk2.default.dim('-------> ' + service + ' exited'));
173
- console.log();
174
- });
175
-
176
- case 41:
177
- case 'end':
178
- return _context.stop();
47
+ const mounts = {};
48
+ Object.keys(navyRc.develop.mounts).forEach(localPath => mounts[_path.default.resolve(localPath)] = navyRc.develop.mounts[localPath]);
49
+ const state = (await navy.getState()) || {};
50
+ await navy.saveState({ ...state,
51
+ services: { ...state.services,
52
+ [service]: { ...(state.services || {})[service],
53
+ _develop: {
54
+ mounts,
55
+ command: navyRc.develop.command
179
56
  }
180
57
  }
181
- }, _callee, this);
182
- }));
183
-
184
- return function (_x, _x2) {
185
- return _ref.apply(this, arguments);
186
- };
187
- }();
58
+ }
59
+ });
60
+ await navy.emitAsync('cli.develop.beforeLaunch');
61
+ await navy.kill([service]);
62
+ await navy.launch([service], {
63
+ noDeps: true
64
+ });
65
+ console.log(`🚧 ${service} has now restarted in development 🚧`);
66
+ console.log(_chalk.default.dim('-----------'));
67
+ console.log();
68
+ const container = (await navy.ps()).filter(_service => _service.name === service)[0];
69
+ (0, _invariant.default)(container, "DEVELOP_NO_CONTAINER_ID: Could not determine container ID for log attachment");
70
+ const containerId = container.id;
71
+
72
+ const containerObj = _dockerClient.default.getContainer(containerId);
73
+
74
+ containerObj.attach({
75
+ stream: true,
76
+ stdout: true,
77
+ stderr: true
78
+ }).then(stream => containerObj.modem.demuxStream(stream, process.stdout, process.stderr)).catch(() => {
79
+ console.log();
80
+ console.log(_chalk.default.dim(`-------> ${service} exited`));
81
+ console.log();
82
+ });
83
+ }
188
84
 
189
85
  module.exports = exports.default;