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.
- package/lib/cli/config/index.js +57 -241
- package/lib/cli/config/wrapper.js +12 -36
- package/lib/cli/develop.js +63 -167
- package/lib/cli/doctor/clean-compose-files.js +19 -73
- package/lib/cli/doctor/index.js +34 -154
- package/lib/cli/doctor/invalid-compose-config.js +20 -110
- package/lib/cli/doctor/invalid-state.js +22 -115
- package/lib/cli/doctor/util.js +26 -93
- package/lib/cli/external-ip.js +9 -39
- package/lib/cli/health.js +18 -67
- package/lib/cli/https.js +92 -0
- package/lib/cli/import.js +22 -59
- package/lib/cli/index.js +11 -17
- package/lib/cli/lan-ip.js +18 -60
- package/lib/cli/launch.js +46 -127
- package/lib/cli/live.js +37 -111
- package/lib/cli/local-ip.js +16 -53
- package/lib/cli/logs.js +7 -35
- package/lib/cli/open.js +11 -45
- package/lib/cli/program.js +145 -167
- package/lib/cli/ps.js +36 -105
- package/lib/cli/refresh-config.js +18 -62
- package/lib/cli/run.js +8 -39
- package/lib/cli/status.js +41 -201
- package/lib/cli/updates.js +68 -160
- package/lib/cli/util/get-or-initialise-navy.js +14 -57
- package/lib/cli/util/import.js +33 -83
- package/lib/cli/util/index.js +10 -12
- package/lib/cli/util/reconfigure.js +12 -102
- package/lib/cli/wait-for-healthy.js +53 -100
- package/lib/config-provider.js +25 -127
- package/lib/config-providers/filesystem/index.js +58 -235
- package/lib/config-providers/npm/__tests__/util.js +3 -6
- package/lib/config-providers/npm/index.js +60 -231
- package/lib/config-providers/npm/util.js +6 -9
- package/lib/config.js +39 -76
- package/lib/driver-logging.js +23 -28
- package/lib/driver.js +5 -7
- package/lib/drivers/docker-compose/client.js +64 -172
- package/lib/drivers/docker-compose/index.js +153 -464
- package/lib/errors.js +27 -61
- package/lib/http-proxy.js +72 -158
- package/lib/index.js +26 -29
- package/lib/middleware/add-service-proxy-config.js +76 -0
- package/lib/middleware/develop.js +9 -23
- package/lib/middleware/helpers.js +20 -25
- package/lib/middleware/port-override.js +15 -37
- package/lib/middleware/set-env-vars.js +14 -18
- package/lib/middleware/set-image.js +12 -18
- package/lib/middleware/set-logging-driver.js +14 -18
- package/lib/middleware/tag-override.js +11 -19
- package/lib/navy/default-middleware.js +13 -27
- package/lib/navy/index.js +438 -1761
- package/lib/navy/middleware.js +15 -100
- package/lib/navy/plugin-interface.js +28 -108
- package/lib/navy/state.js +58 -147
- package/lib/navy/util.js +2 -1
- package/lib/service.js +5 -3
- package/lib/util/__tests__/external-ip.js +20 -96
- package/lib/util/__tests__/registry-client.js +11 -24
- package/lib/util/__tests__/service-host.js +19 -116
- package/lib/util/docker-client.js +10 -13
- package/lib/util/exec-async.js +9 -27
- package/lib/util/external-ip.js +48 -126
- package/lib/util/fs.js +7 -6
- package/lib/util/get-lan-ip.js +15 -52
- package/lib/util/has-update.js +23 -73
- package/lib/util/https.js +213 -0
- package/lib/util/navyrc.js +12 -50
- package/lib/util/registry-client.js +41 -112
- package/lib/util/service-host.js +40 -129
- package/lib/util/table.js +11 -21
- package/package.json +14 -14
- package/LICENSE +0 -21
- package/lib/middleware/add-virtual-hosts.js +0 -147
package/lib/cli/config/index.js
CHANGED
|
@@ -1,265 +1,81 @@
|
|
|
1
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
12
|
+
var _config = require("../../config");
|
|
44
13
|
|
|
45
|
-
|
|
46
|
-
_context.next = 4;
|
|
47
|
-
return (0, _reconfigure.reconfigureAllNavies)();
|
|
14
|
+
var _errors = require("../../errors");
|
|
48
15
|
|
|
49
|
-
|
|
50
|
-
case 'end':
|
|
51
|
-
return _context.stop();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}, _callee, this);
|
|
55
|
-
}));
|
|
16
|
+
var _reconfigure = require("../util/reconfigure");
|
|
56
17
|
|
|
57
|
-
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
return _context4.stop();
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}, _callee4, undefined);
|
|
205
|
-
}));
|
|
30
|
+
await (0, _reconfigure.reconfigureAllNavies)();
|
|
31
|
+
}
|
|
206
32
|
|
|
207
|
-
|
|
208
|
-
|
|
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
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
-
|
|
223
|
-
|
|
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
|
-
|
|
227
|
-
|
|
228
|
-
|
|
51
|
+
const config = await (0, _config.getConfig)();
|
|
52
|
+
console.log(config[NAME_MAP[key]]);
|
|
53
|
+
});
|
|
229
54
|
|
|
230
|
-
|
|
231
|
-
|
|
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
|
-
|
|
239
|
-
|
|
240
|
-
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
|
|
62
|
+
await (0, _config.setConfig)({ ...(await (0, _config.getConfig)()),
|
|
63
|
+
[configProp]: null
|
|
64
|
+
});
|
|
65
|
+
await reconfigureIfNecessary(configProp);
|
|
66
|
+
});
|
|
251
67
|
|
|
252
|
-
|
|
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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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',
|
|
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
|
-
|
|
86
|
+
_commander.default.parse(process.argv);
|
|
271
87
|
|
|
272
|
-
if (
|
|
273
|
-
|
|
88
|
+
if (_commander.default.args.length === 0) {
|
|
89
|
+
_commander.default.help();
|
|
274
90
|
}
|
|
@@ -1,45 +1,21 @@
|
|
|
1
|
-
|
|
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
|
|
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
|
-
|
|
33
|
-
case 'end':
|
|
34
|
-
return _context.stop();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}, _callee, this);
|
|
38
|
-
}));
|
|
12
|
+
var _path = _interopRequireDefault(require("path"));
|
|
39
13
|
|
|
40
|
-
|
|
41
|
-
|
|
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;
|
package/lib/cli/develop.js
CHANGED
|
@@ -1,189 +1,85 @@
|
|
|
1
|
-
|
|
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
|
|
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
|
-
|
|
12
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
52
13
|
|
|
53
|
-
|
|
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
|
-
|
|
66
|
-
navyRc = _context.sent;
|
|
16
|
+
var _ = require("../");
|
|
67
17
|
|
|
68
|
-
|
|
69
|
-
_context.next = 7;
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
18
|
+
var _errors = require("../errors");
|
|
72
19
|
|
|
73
|
-
|
|
20
|
+
var _dockerClient = _interopRequireDefault(require("../util/docker-client"));
|
|
74
21
|
|
|
75
|
-
|
|
76
|
-
if (navyRc.develop) {
|
|
77
|
-
_context.next = 9;
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
22
|
+
var _navyrc = _interopRequireDefault(require("../util/navyrc"));
|
|
80
23
|
|
|
81
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
33
|
+
if (!navyRc.develop) {
|
|
34
|
+
throw new _errors.NavyError('No develop mounts found in .navyrc');
|
|
35
|
+
}
|
|
90
36
|
|
|
91
|
-
|
|
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
|
-
|
|
41
|
+
if (!service) service = navyRc.services[0];
|
|
94
42
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
}
|
|
182
|
-
})
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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;
|