@ethlete/cli 2.1.0-next.5 → 2.1.0-next.6
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/CHANGELOG.md +30 -0
- package/README.md +22 -2
- package/package.json +1 -1
- package/src/index.js +51 -11
- package/src/index.js.map +1 -1
- package/src/lib/api/api-command.d.ts +2 -1
- package/src/lib/api/api-command.js +2 -2
- package/src/lib/api/api-command.js.map +1 -1
- package/src/lib/api/auth-hint.d.ts +2 -0
- package/src/lib/api/auth-hint.js +15 -1
- package/src/lib/api/auth-hint.js.map +1 -1
- package/src/lib/api/clear.d.ts +36 -0
- package/src/lib/api/clear.js +121 -0
- package/src/lib/api/clear.js.map +1 -0
- package/src/lib/api/compose.d.ts +29 -0
- package/src/lib/api/compose.js +44 -1
- package/src/lib/api/compose.js.map +1 -1
- package/src/lib/api/definition.d.ts +8 -3
- package/src/lib/api/definition.js +28 -4
- package/src/lib/api/definition.js.map +1 -1
- package/src/lib/api/git.d.ts +4 -0
- package/src/lib/api/git.js +14 -2
- package/src/lib/api/git.js.map +1 -1
- package/src/lib/api/help.d.ts +9 -1
- package/src/lib/api/help.js +43 -10
- package/src/lib/api/help.js.map +1 -1
- package/src/lib/api/index.d.ts +5 -0
- package/src/lib/api/index.js +5 -0
- package/src/lib/api/index.js.map +1 -1
- package/src/lib/api/ports.d.ts +13 -0
- package/src/lib/api/ports.js +98 -0
- package/src/lib/api/ports.js.map +1 -0
- package/src/lib/api/resolve-checkout.d.ts +19 -9
- package/src/lib/api/resolve-checkout.js +18 -5
- package/src/lib/api/resolve-checkout.js.map +1 -1
- package/src/lib/api/run.js +240 -57
- package/src/lib/api/run.js.map +1 -1
- package/src/lib/api/setup.d.ts +15 -0
- package/src/lib/api/setup.js +41 -0
- package/src/lib/api/setup.js.map +1 -0
- package/src/lib/api/state.d.ts +20 -0
- package/src/lib/api/state.js +33 -0
- package/src/lib/api/state.js.map +1 -0
- package/src/lib/api/suggest.d.ts +7 -0
- package/src/lib/api/suggest.js +35 -0
- package/src/lib/api/suggest.js.map +1 -0
- package/src/lib/auth/auth-command.d.ts +11 -0
- package/src/lib/auth/auth-command.js +137 -0
- package/src/lib/auth/auth-command.js.map +1 -0
- package/src/lib/auth/composer-auth.d.ts +25 -0
- package/src/lib/auth/composer-auth.js +63 -0
- package/src/lib/auth/composer-auth.js.map +1 -0
- package/src/lib/auth/composer-repositories.d.ts +5 -0
- package/src/lib/auth/composer-repositories.js +33 -0
- package/src/lib/auth/composer-repositories.js.map +1 -0
- package/src/lib/auth/gitlab-token.d.ts +43 -0
- package/src/lib/auth/gitlab-token.js +72 -0
- package/src/lib/auth/gitlab-token.js.map +1 -0
- package/src/lib/auth/index.d.ts +4 -0
- package/src/lib/auth/index.js +8 -0
- package/src/lib/auth/index.js.map +1 -0
- package/src/lib/doctor/doctor-command.d.ts +2 -1
- package/src/lib/doctor/doctor-command.js +4 -7
- package/src/lib/doctor/doctor-command.js.map +1 -1
- package/src/lib/index.d.ts +2 -0
- package/src/lib/index.js +2 -0
- package/src/lib/index.js.map +1 -1
- package/src/lib/invocation.d.ts +9 -0
- package/src/lib/invocation.js +47 -0
- package/src/lib/invocation.js.map +1 -0
- package/src/lib/utils.d.ts +14 -0
- package/src/lib/utils.js +14 -1
- package/src/lib/utils.js.map +1 -1
package/src/lib/api/run.js
CHANGED
|
@@ -8,71 +8,106 @@ const definition_1 = require("./definition");
|
|
|
8
8
|
const git_1 = require("./git");
|
|
9
9
|
const help_1 = require("./help");
|
|
10
10
|
const resolve_checkout_1 = require("./resolve-checkout");
|
|
11
|
+
const setup_1 = require("./setup");
|
|
12
|
+
const suggest_1 = require("./suggest");
|
|
11
13
|
const clone_1 = require("./clone");
|
|
12
14
|
const auth_hint_1 = require("./auth-hint");
|
|
13
15
|
const utils_1 = require("../utils");
|
|
14
16
|
const local_config_1 = require("../config/local-config");
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
const answer = yield (0, utils_1.askQuestion)(`${problem}\n\nClone ${repoUrl}\ninto ${into}? [y/N] `);
|
|
22
|
-
return /^y(es)?$/i.test(answer.trim());
|
|
23
|
-
});
|
|
17
|
+
const clear_1 = require("./clear");
|
|
18
|
+
const ports_1 = require("./ports");
|
|
19
|
+
const state_1 = require("./state");
|
|
20
|
+
const confirmFix = (options) => (0, utils_1.confirm)(Object.assign(Object.assign({}, options), { defaultsToYes: true }));
|
|
24
21
|
const definedEntries = (record) => Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
|
|
25
|
-
const
|
|
26
|
-
|
|
22
|
+
const namedApis = (argument) => argument
|
|
23
|
+
.split(',')
|
|
24
|
+
.map((name) => name.trim())
|
|
25
|
+
.filter((name) => name !== '');
|
|
26
|
+
const composeProjectHasContainers = (composePath) => {
|
|
27
|
+
var _a;
|
|
28
|
+
const tool = (0, compose_1.resolveComposeTool)();
|
|
29
|
+
return tool ? ((_a = (0, compose_1.composeContainerIds)({ tool, cwd: composePath })) !== null && _a !== void 0 ? _a : []).length > 0 : false;
|
|
30
|
+
};
|
|
31
|
+
const takeComposeProjectDown = (composePath) => {
|
|
32
|
+
const tool = (0, compose_1.resolveComposeTool)();
|
|
33
|
+
if (!tool)
|
|
34
|
+
return false;
|
|
35
|
+
const [binary, ...prefix] = tool.compose;
|
|
36
|
+
const result = (0, child_process_1.spawnSync)(binary, [...prefix, 'down'], {
|
|
37
|
+
cwd: composePath,
|
|
38
|
+
env: Object.assign(Object.assign({}, (0, compose_1.engineEnv)(tool.engine)), process.env),
|
|
39
|
+
stdio: 'inherit',
|
|
40
|
+
});
|
|
41
|
+
return !result.error && result.status === 0;
|
|
42
|
+
};
|
|
43
|
+
const runOneApiCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
45
|
+
const { argv, root, invocation, command, name, api, service } = options;
|
|
27
46
|
const exposeOnLan = argv.includes('--host');
|
|
28
|
-
const [command, name] = argv.filter((arg) => !arg.startsWith('--'));
|
|
29
|
-
const api = name === undefined ? undefined : apis[name];
|
|
30
|
-
if (argv.includes('--help') || argv.includes('-h') || command === 'help') {
|
|
31
|
-
console.log((0, help_1.apiHelp)(apis, invocation));
|
|
32
|
-
return 0;
|
|
33
|
-
}
|
|
34
|
-
if (command === undefined || name === undefined || !api) {
|
|
35
|
-
console.error((0, help_1.apiHelp)(apis, invocation));
|
|
36
|
-
return 1;
|
|
37
|
-
}
|
|
38
|
-
const commands = (0, definition_1.apiCommandNames)(api);
|
|
39
|
-
if (!commands.includes(command)) {
|
|
40
|
-
console.error(`Unknown command "${command}" for the ${name} API.\n\nCommands: ${commands.join(', ')}`);
|
|
41
|
-
return 1;
|
|
42
|
-
}
|
|
43
47
|
const isGitCommand = definition_1.GIT_API_COMMANDS.includes(command);
|
|
44
|
-
const checkout = (0, resolve_checkout_1.resolveApiCheckout)({
|
|
48
|
+
const checkout = (0, resolve_checkout_1.resolveApiCheckout)({
|
|
49
|
+
root,
|
|
50
|
+
name,
|
|
51
|
+
api,
|
|
52
|
+
needs: isGitCommand ? 'repo' : command === 'setup' ? 'compose' : 'env',
|
|
53
|
+
});
|
|
45
54
|
if (checkout.legacyConfigWarning) {
|
|
46
55
|
console.warn(`${checkout.legacyConfigWarning}\n`);
|
|
47
56
|
}
|
|
48
57
|
if (!checkout.ok) {
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
if (checkout.clonable) {
|
|
59
|
+
const { repoUrl, into, branch } = checkout.clonable;
|
|
60
|
+
const accepted = command === 'clone' ||
|
|
61
|
+
argv.includes('--clone') ||
|
|
62
|
+
(yield confirmFix({
|
|
63
|
+
problem: checkout.problem,
|
|
64
|
+
question: `Clone ${repoUrl}\ninto ${into}?`,
|
|
65
|
+
hint: `Re-run with --clone to clone ${repoUrl} into ${into}.`,
|
|
66
|
+
}));
|
|
67
|
+
if (!accepted)
|
|
68
|
+
return 1;
|
|
69
|
+
if (!(0, clone_1.isGitIgnored)(root, into)) {
|
|
70
|
+
console.warn(`\n${clone_1.DEFAULT_CHECKOUT_DIR}/ is not gitignored. Add it before you commit anything.\n`);
|
|
71
|
+
}
|
|
72
|
+
const cloned = (0, clone_1.cloneApiRepo)({ repoUrl, into, branch });
|
|
73
|
+
if (cloned !== 0) {
|
|
74
|
+
(0, auth_hint_1.printPrivateDependencyHint)({ repoHost: (0, auth_hint_1.gitUrlHost)(repoUrl) });
|
|
75
|
+
return cloned;
|
|
76
|
+
}
|
|
77
|
+
if (command === 'clone')
|
|
78
|
+
return 0;
|
|
79
|
+
return runOneApiCommand(options);
|
|
61
80
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
81
|
+
if (checkout.setupable) {
|
|
82
|
+
const { setupCommand, composePath } = checkout.setupable;
|
|
83
|
+
const accepted = argv.includes('--setup') ||
|
|
84
|
+
(yield confirmFix({
|
|
85
|
+
problem: checkout.problem,
|
|
86
|
+
question: `Run "${setupCommand}" in ${composePath}?`,
|
|
87
|
+
hint: `Re-run with --setup to run "${setupCommand}" in ${composePath}.`,
|
|
88
|
+
}));
|
|
89
|
+
if (!accepted)
|
|
90
|
+
return 1;
|
|
91
|
+
const prepared = (0, setup_1.runApiSetup)(checkout.setupable);
|
|
92
|
+
if (prepared !== 0)
|
|
93
|
+
return prepared;
|
|
94
|
+
return runOneApiCommand(options);
|
|
66
95
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return (0, exports.runApiCommand)({ apis, argv, root, invocation });
|
|
96
|
+
console.error(checkout.problem);
|
|
97
|
+
return 1;
|
|
70
98
|
}
|
|
71
99
|
if (command === 'clone') {
|
|
72
100
|
console.log(`${name} already has a checkout at ${checkout.checkout.repoPath}.`);
|
|
73
101
|
return 0;
|
|
74
102
|
}
|
|
75
103
|
const { repoPath, composePath: cwd } = checkout.checkout;
|
|
104
|
+
if (command === 'setup') {
|
|
105
|
+
if (!api.setupCommand) {
|
|
106
|
+
console.error(`The ${name} API declares no setupCommand.`);
|
|
107
|
+
return 1;
|
|
108
|
+
}
|
|
109
|
+
return (0, setup_1.runApiSetup)({ setupCommand: api.setupCommand, composePath: cwd, envFile: api.envFile });
|
|
110
|
+
}
|
|
76
111
|
if (isGitCommand) {
|
|
77
112
|
const expectedBranch = (0, local_config_1.configuredApiRepoBranch)((0, local_config_1.readLocalConfig)(root).config, name);
|
|
78
113
|
if (command === 'checkout') {
|
|
@@ -92,7 +127,7 @@ const runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function*
|
|
|
92
127
|
}
|
|
93
128
|
const { engine, compose } = tool;
|
|
94
129
|
const [binary, ...composePrefix] = compose;
|
|
95
|
-
const env = Object.assign(Object.assign(Object.assign({}, (0, compose_1.engineEnv)(engine)), process.env), definedEntries((
|
|
130
|
+
const env = Object.assign(Object.assign(Object.assign({}, (0, compose_1.engineEnv)(engine)), process.env), definedEntries((_b = (_a = api.env) === null || _a === void 0 ? void 0 : _a.call(api)) !== null && _b !== void 0 ? _b : {}));
|
|
96
131
|
let exitCode = 0;
|
|
97
132
|
const runCompose = (...composeArgs) => {
|
|
98
133
|
var _a;
|
|
@@ -104,15 +139,82 @@ const runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function*
|
|
|
104
139
|
}
|
|
105
140
|
exitCode = (_a = result.status) !== null && _a !== void 0 ? _a : 1;
|
|
106
141
|
};
|
|
142
|
+
const call = { tool, cwd, env };
|
|
143
|
+
/** Ports another program already holds. Empty while this project has containers, because `up` then reconciles its own. */
|
|
144
|
+
const takenPorts = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
145
|
+
const running = (0, compose_1.composeContainerIds)(call);
|
|
146
|
+
if (running === undefined || running.length > 0)
|
|
147
|
+
return [];
|
|
148
|
+
const config = (0, compose_1.composeOutput)(Object.assign(Object.assign({}, call), { args: ['config'] }));
|
|
149
|
+
return config === undefined ? [] : (0, ports_1.portsInUse)((0, ports_1.publishedPorts)({ config, services: api.services }));
|
|
150
|
+
});
|
|
151
|
+
const freePorts = (taken) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
152
|
+
var _a;
|
|
153
|
+
const containers = (0, compose_1.containerStates)(engine);
|
|
154
|
+
const holders = taken.map((port) => {
|
|
155
|
+
var _a;
|
|
156
|
+
return ({
|
|
157
|
+
port,
|
|
158
|
+
container: (_a = containers.find(({ ports }) => ports.some(({ host }) => host === port))) === null || _a === void 0 ? void 0 : _a.name,
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
const rows = holders.map(({ port, container }) => ` ${port} ${container !== null && container !== void 0 ? container : 'held by another program'}`);
|
|
162
|
+
const problem = `Cannot start ${name}. These ports are already in use:\n\n${rows.join('\n')}`;
|
|
163
|
+
const names = [...new Set(holders.map(({ container }) => container))].filter((holder) => holder !== undefined);
|
|
164
|
+
if (holders.some(({ container }) => container === undefined)) {
|
|
165
|
+
console.error(`${problem}\n\nRe-run with --force to start ${name} anyway.`);
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
const accepted = yield (0, utils_1.confirm)({
|
|
169
|
+
problem,
|
|
170
|
+
question: `Stop ${names.join(', ')} and start ${name}?`,
|
|
171
|
+
hint: `Stop them with "${engine} stop ${names.join(' ')}", or re-run with --force to start ${name} anyway.`,
|
|
172
|
+
defaultsToYes: true,
|
|
173
|
+
});
|
|
174
|
+
if (!accepted)
|
|
175
|
+
return false;
|
|
176
|
+
return ((_a = (0, child_process_1.spawnSync)(engine, ['stop', ...names], { stdio: 'inherit' }).status) !== null && _a !== void 0 ? _a : 1) === 0;
|
|
177
|
+
});
|
|
107
178
|
if (command === 'up') {
|
|
179
|
+
const taken = argv.includes('--force') ? [] : yield takenPorts();
|
|
180
|
+
if (taken.length > 0 && !(yield freePorts(taken)))
|
|
181
|
+
return 1;
|
|
108
182
|
if (api.network) {
|
|
109
183
|
(0, child_process_1.spawnSync)(engine, ['network', 'create', api.network], { stdio: 'ignore' });
|
|
110
184
|
}
|
|
111
|
-
|
|
185
|
+
console.log(`Starting ${name}: ${api.services.join(', ')}.`);
|
|
186
|
+
const started = (0, child_process_1.spawnSync)(binary, [...composePrefix, 'up', '-d', ...api.services], { cwd, env, encoding: 'utf8' });
|
|
187
|
+
const startedOutput = `${(_c = started.stdout) !== null && _c !== void 0 ? _c : ''}\n${(_d = started.stderr) !== null && _d !== void 0 ? _d : ''}`.trim();
|
|
188
|
+
if (started.error) {
|
|
189
|
+
console.error(started.error.message);
|
|
190
|
+
return 1;
|
|
191
|
+
}
|
|
192
|
+
if (started.status !== 0) {
|
|
193
|
+
if (startedOutput)
|
|
194
|
+
console.error(startedOutput);
|
|
195
|
+
return (_e = started.status) !== null && _e !== void 0 ? _e : 1;
|
|
196
|
+
}
|
|
112
197
|
// podman-compose exits 0 even when it fails to build or pull an image, so the state has to be
|
|
113
198
|
// read back rather than inferred from the exit code.
|
|
114
|
-
|
|
115
|
-
|
|
199
|
+
const ids = (_f = (0, compose_1.composeContainerIds)(call)) !== null && _f !== void 0 ? _f : [];
|
|
200
|
+
const ours = (0, compose_1.containerStates)(engine).filter((container) => ids.some((id) => id.startsWith(container.id) || container.id.startsWith(id)));
|
|
201
|
+
const states = (0, state_1.serviceStates)({ services: api.services, containers: ours });
|
|
202
|
+
const stopped = states.filter(({ running }) => !running);
|
|
203
|
+
console.log(`\n${name} API at http://localhost:${api.port}\n`);
|
|
204
|
+
console.log((0, state_1.serviceStateTable)(states));
|
|
205
|
+
if (stopped.length > 0) {
|
|
206
|
+
const which = stopped.map((state) => state.service).join(', ');
|
|
207
|
+
const exited = stopped.filter(({ status }) => status !== 'no container');
|
|
208
|
+
console.error(`\n${which} ${stopped.length === 1 ? 'is' : 'are'} not running.`);
|
|
209
|
+
for (const state of exited) {
|
|
210
|
+
console.error(`Run "${invocation} logs ${name} ${state.service}" to see why.`);
|
|
211
|
+
}
|
|
212
|
+
// A service with no container never logged anything, so the output of `up` is the only place
|
|
213
|
+
// a failed pull or build is reported.
|
|
214
|
+
if (exited.length < stopped.length && startedOutput)
|
|
215
|
+
console.error(`\n${startedOutput}`);
|
|
216
|
+
exitCode = 1;
|
|
217
|
+
}
|
|
116
218
|
if (exposeOnLan) {
|
|
117
219
|
const address = (0, compose_1.lanAddress)();
|
|
118
220
|
if (!address) {
|
|
@@ -131,19 +233,100 @@ const runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function*
|
|
|
131
233
|
else if (command === 'down') {
|
|
132
234
|
runCompose('down');
|
|
133
235
|
}
|
|
134
|
-
else if (command === 'logs') {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
236
|
+
else if (command === 'logs' || command === 'shell') {
|
|
237
|
+
if (service !== undefined && !api.services.includes(service)) {
|
|
238
|
+
console.error(`The ${name} API does not start "${service}".${(0, suggest_1.didYouMean)(service, api.services)}\n\n` +
|
|
239
|
+
`Services: ${api.services.join(', ')}`);
|
|
240
|
+
return 1;
|
|
241
|
+
}
|
|
242
|
+
const target = service !== null && service !== void 0 ? service : api.execService;
|
|
243
|
+
if (command === 'logs')
|
|
244
|
+
runCompose('logs', '-f', target);
|
|
245
|
+
else
|
|
246
|
+
runCompose('exec', target, 'bash');
|
|
139
247
|
}
|
|
140
248
|
else {
|
|
141
|
-
|
|
249
|
+
const execCommand = (_h = (_g = api.exec) === null || _g === void 0 ? void 0 : _g[command]) !== null && _h !== void 0 ? _h : [];
|
|
250
|
+
runCompose('exec', api.execService, ...execCommand);
|
|
142
251
|
if (exitCode !== 0) {
|
|
143
|
-
|
|
252
|
+
const install = (0, definition_1.dependencyInstallCommandName)(api);
|
|
253
|
+
if ((0, definition_1.installsDependencies)(execCommand)) {
|
|
254
|
+
(0, auth_hint_1.printPrivateDependencyHint)({ repoHost: api.repoUrl ? (0, auth_hint_1.gitUrlHost)(api.repoUrl) : undefined });
|
|
255
|
+
}
|
|
256
|
+
else if (install !== undefined) {
|
|
257
|
+
console.error(`\nIf the ${api.execService} container has no dependencies installed yet, ` +
|
|
258
|
+
`run "${invocation} ${install} ${name}" first.`);
|
|
259
|
+
}
|
|
144
260
|
}
|
|
145
261
|
}
|
|
146
262
|
return exitCode;
|
|
147
263
|
});
|
|
264
|
+
const runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ apis, argv, root = process.cwd(), invocation = 'et api', }) {
|
|
265
|
+
const [command, nameArgument, service] = argv.filter((arg) => !arg.startsWith('--'));
|
|
266
|
+
const wantsHelp = argv.includes('--help') || argv.includes('-h') || command === 'help';
|
|
267
|
+
if (wantsHelp && nameArgument === undefined) {
|
|
268
|
+
console.log((0, help_1.apiHelp)(apis, invocation));
|
|
269
|
+
return 0;
|
|
270
|
+
}
|
|
271
|
+
const clear = (names) => (0, clear_1.clearApiCheckouts)({
|
|
272
|
+
apis,
|
|
273
|
+
names,
|
|
274
|
+
root,
|
|
275
|
+
invocation,
|
|
276
|
+
force: argv.includes('--force'),
|
|
277
|
+
hasContainers: composeProjectHasContainers,
|
|
278
|
+
takeDown: takeComposeProjectDown,
|
|
279
|
+
});
|
|
280
|
+
if (command === 'clear' && argv.includes('--all'))
|
|
281
|
+
return clear(Object.keys(apis));
|
|
282
|
+
const names = nameArgument === undefined ? [] : namedApis(nameArgument);
|
|
283
|
+
if (command === undefined || names.length === 0) {
|
|
284
|
+
console.error((0, help_1.apiHelp)(apis, invocation));
|
|
285
|
+
return 1;
|
|
286
|
+
}
|
|
287
|
+
const known = Object.keys(apis);
|
|
288
|
+
const unknown = names.find((candidate) => apis[candidate] === undefined);
|
|
289
|
+
if (unknown !== undefined) {
|
|
290
|
+
console.error(known.length === 0
|
|
291
|
+
? (0, help_1.apiHelp)(apis, invocation)
|
|
292
|
+
: `Unknown API "${unknown}".${(0, suggest_1.didYouMean)(unknown, known)}\n\nAPIs: ${known.join(', ')}`);
|
|
293
|
+
return 1;
|
|
294
|
+
}
|
|
295
|
+
const targets = names.flatMap((name) => {
|
|
296
|
+
const api = apis[name];
|
|
297
|
+
return api === undefined ? [] : [{ name, api }];
|
|
298
|
+
});
|
|
299
|
+
if (wantsHelp) {
|
|
300
|
+
const texts = targets.map(({ name, api }) => {
|
|
301
|
+
const checkout = (0, resolve_checkout_1.resolveApiCheckout)({ root, name, api });
|
|
302
|
+
return (0, help_1.singleApiHelp)({
|
|
303
|
+
name,
|
|
304
|
+
api,
|
|
305
|
+
invocation,
|
|
306
|
+
checkout: checkout.ok
|
|
307
|
+
? checkout.checkout.composePath
|
|
308
|
+
: (0, resolve_checkout_1.checkoutProblem)({ failure: checkout, name, invocation }),
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
console.log(texts.join('\n\n'));
|
|
312
|
+
return 0;
|
|
313
|
+
}
|
|
314
|
+
const rejected = targets.find(({ api }) => !(0, definition_1.apiCommandNames)(api).includes(command));
|
|
315
|
+
if (rejected) {
|
|
316
|
+
const commands = (0, definition_1.apiCommandNames)(rejected.api);
|
|
317
|
+
console.error(`Unknown command "${command}" for the ${rejected.name} API.${(0, suggest_1.didYouMean)(command, commands)}\n\n` +
|
|
318
|
+
`Commands: ${commands.join(', ')}`);
|
|
319
|
+
return 1;
|
|
320
|
+
}
|
|
321
|
+
if (command === 'clear')
|
|
322
|
+
return clear(names);
|
|
323
|
+
let exitCode = 0;
|
|
324
|
+
for (const { name, api } of targets) {
|
|
325
|
+
const code = yield runOneApiCommand({ argv, root, invocation, command, name, api, service });
|
|
326
|
+
if (code !== 0)
|
|
327
|
+
exitCode = code;
|
|
328
|
+
}
|
|
329
|
+
return exitCode;
|
|
330
|
+
});
|
|
148
331
|
exports.runApiCommand = runApiCommand;
|
|
149
332
|
//# sourceMappingURL=run.js.map
|
package/src/lib/api/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/run.ts"],"names":[],"mappings":";;;;AAAA,iDAA0C;AAC1C,uCAAwF;AACxF,6CAAiF;AACjF,+BAAyD;AACzD,iCAAiC;AACjC,yDAAwD;AACxD,mCAA2E;AAC3E,2CAAqE;AACrE,oCAAuC;AACvC,yDAAkF;AAWlF,MAAM,YAAY,GAAG,CAAO,OAA2D,EAAE,EAAE;IACzF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAE3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,oCAAoC,OAAO,SAAS,IAAI,GAAG,CAAC,CAAC;QAErF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAW,EAAC,GAAG,OAAO,aAAa,OAAO,UAAU,IAAI,UAAU,CAAC,CAAC;IAEzF,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC,CAAA,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAA0C,EAAE,EAAE,CACpE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAA2B,CAAC;AAE3G,MAAM,aAAa,GAAG,KAKa,EAAE,oDALR,EAClC,IAAI,EACJ,IAAI,EACJ,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,EACpB,UAAU,GAAG,QAAQ,GACA;;IACrB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAExD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,IAAA,cAAO,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAEvC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,IAAA,cAAO,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAEzC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,4BAAe,EAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,aAAa,IAAI,sBAAsB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEvG,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,YAAY,GAAG,6BAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAA,qCAAkB,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IAExF,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,mBAAmB,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEhC,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACpD,MAAM,QAAQ,GACZ,OAAO,KAAK,OAAO;YACnB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACxB,CAAC,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,IAAA,oBAAY,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,4BAAoB,2DAA2D,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,IAAA,sCAA0B,EAAC,EAAE,QAAQ,EAAE,IAAA,sBAAU,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE9D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO,CAAC,CAAC;QAElC,OAAO,IAAA,qBAAa,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,8BAA8B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;QAEhF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEzD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,IAAA,sCAAuB,EAAC,IAAA,8BAAe,EAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEnF,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CACX,6BAA6B,IAAI,mCAAmC;oBAClE,yCAAyC,IAAI,uBAAuB,CACvE,CAAC;gBAEF,OAAO,CAAC,CAAC;YACX,CAAC;YAED,OAAO,IAAA,uBAAiB,EAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,IAAA,mBAAa,EAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,4BAAkB,GAAE,CAAC;IAElC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAA,0BAAgB,GAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC;IAC3C,MAAM,GAAG,iDAAQ,IAAA,mBAAS,EAAC,MAAM,CAAC,GAAK,OAAO,CAAC,GAAG,GAAK,cAAc,CAAC,MAAA,MAAA,GAAG,CAAC,GAAG,mDAAI,mCAAI,EAAE,CAAC,CAAE,CAAC;IAE3F,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,MAAM,UAAU,GAAG,CAAC,GAAG,WAAqB,EAAE,EAAE;;QAC9C,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,MAAM,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAErG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,QAAQ,GAAG,CAAC,CAAC;YAEb,OAAO;QACT,CAAC;QAED,QAAQ,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,IAAA,yBAAS,EAAC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,8FAA8F;QAC9F,qDAAqD;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,4BAA4B,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC;QACvE,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjB,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,IAAA,oBAAU,GAAE,CAAC;YAE7B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAC;gBAE7G,OAAO,CAAC,CAAC;YACX,CAAC;YAED,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM;gBAC3B,CAAC,CAAC,oCAAoC,GAAG,CAAC,MAAM,cAAc,OAAO,IAAI,GAAG,CAAC,IAAI,oBAAoB;gBACrG,CAAC,CAAC,EAAE,CAAC;YAEP,OAAO,CAAC,GAAG,CACT,uFAAuF;gBACrF,UAAU,OAAO,IAAI,GAAG,CAAC,IAAI,kDAAkD;gBAC/E,qDAAqD,UAAU,MAAM;gBACrE,wCAAwC,GAAG,CAAC,IAAI,GAAG,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,UAAU,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAG,OAAO,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC;QAEpE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,IAAA,sCAA0B,EAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,sBAAU,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAA,CAAC;AA1KW,QAAA,aAAa,iBA0KxB"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type SetupRequest = {
|
|
2
|
+
/** The API's own `setupCommand`, for example `make setup`. */
|
|
3
|
+
setupCommand: string;
|
|
4
|
+
/** Directory the command runs in, which is the API's compose directory. */
|
|
5
|
+
composePath: string;
|
|
6
|
+
/** The API's `envFile`, when it declares one. */
|
|
7
|
+
envFile?: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Runs the API's own setup command in its compose directory, on the host rather than in a container.
|
|
11
|
+
* The command's output is kept back and only printed when it fails, so its own hints about the
|
|
12
|
+
* checkout's Makefile do not compete with the CLI. A command that exits 0 without creating `envFile`
|
|
13
|
+
* still fails here, so a caller that re-runs the original command afterwards cannot loop.
|
|
14
|
+
*/
|
|
15
|
+
export declare const runApiSetup: ({ setupCommand, composePath, envFile }: SetupRequest) => number;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runApiSetup = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
/**
|
|
8
|
+
* Runs the API's own setup command in its compose directory, on the host rather than in a container.
|
|
9
|
+
* The command's output is kept back and only printed when it fails, so its own hints about the
|
|
10
|
+
* checkout's Makefile do not compete with the CLI. A command that exits 0 without creating `envFile`
|
|
11
|
+
* still fails here, so a caller that re-runs the original command afterwards cannot loop.
|
|
12
|
+
*/
|
|
13
|
+
const runApiSetup = ({ setupCommand, composePath, envFile }) => {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
const envPath = envFile === undefined ? undefined : (0, path_1.join)(composePath, envFile);
|
|
16
|
+
const existedBefore = envPath !== undefined && (0, fs_1.existsSync)(envPath);
|
|
17
|
+
console.log(`Running "${setupCommand}" in ${composePath}.`);
|
|
18
|
+
const result = (0, child_process_1.spawnSync)(setupCommand, { cwd: composePath, shell: true, encoding: 'utf8' });
|
|
19
|
+
const output = `${(_a = result.stdout) !== null && _a !== void 0 ? _a : ''}\n${(_b = result.stderr) !== null && _b !== void 0 ? _b : ''}`.trim();
|
|
20
|
+
const status = (_c = result.status) !== null && _c !== void 0 ? _c : 1;
|
|
21
|
+
const fail = (reason) => {
|
|
22
|
+
if (output)
|
|
23
|
+
console.error(output);
|
|
24
|
+
console.error(reason);
|
|
25
|
+
return status === 0 ? 1 : status;
|
|
26
|
+
};
|
|
27
|
+
if (result.error)
|
|
28
|
+
return fail(result.error.message);
|
|
29
|
+
if (status !== 0)
|
|
30
|
+
return fail(`"${setupCommand}" failed with exit code ${status}.`);
|
|
31
|
+
if (envPath !== undefined && !(0, fs_1.existsSync)(envPath)) {
|
|
32
|
+
return fail(`"${setupCommand}" ran, but ${envFile} still does not exist in ${composePath}.`);
|
|
33
|
+
}
|
|
34
|
+
if (envFile === undefined)
|
|
35
|
+
console.log(`"${setupCommand}" finished.`);
|
|
36
|
+
else
|
|
37
|
+
console.log(existedBefore ? `${envFile} already existed.` : `Created ${envFile}.`);
|
|
38
|
+
return 0;
|
|
39
|
+
};
|
|
40
|
+
exports.runApiSetup = runApiSetup;
|
|
41
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/setup.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAC1C,2BAAgC;AAChC,+BAA4B;AAW5B;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAgB,EAAE,EAAE;;IAClF,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,OAAO,KAAK,SAAS,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,YAAY,YAAY,QAAQ,WAAW,GAAG,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,KAAK,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,EAAE;QAC9B,IAAI,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtB,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnC,CAAC,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEpD,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,YAAY,2BAA2B,MAAM,GAAG,CAAC,CAAC;IAEpF,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,YAAY,cAAc,OAAO,4BAA4B,WAAW,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,YAAY,aAAa,CAAC,CAAC;;QACjE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,mBAAmB,CAAC,CAAC,CAAC,WAAW,OAAO,GAAG,CAAC,CAAC;IAExF,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AA9BW,QAAA,WAAW,eA8BtB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ContainerState } from './compose';
|
|
2
|
+
export type ServiceState = {
|
|
3
|
+
service: string;
|
|
4
|
+
/** The engine's own words, or `no container` for a service that was never created. */
|
|
5
|
+
status: string;
|
|
6
|
+
running: boolean;
|
|
7
|
+
/** Published host ports, as `8000 -> 80`. */
|
|
8
|
+
ports: string[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* One row per requested service, in the order the API declares them. A container the engine knows
|
|
12
|
+
* but this API does not ask for is left out, so a shared checkout does not pad the table.
|
|
13
|
+
*/
|
|
14
|
+
export declare const serviceStates: (options: {
|
|
15
|
+
services: readonly string[];
|
|
16
|
+
/** Containers of this compose project only. */
|
|
17
|
+
containers: readonly ContainerState[];
|
|
18
|
+
}) => ServiceState[];
|
|
19
|
+
/** The state table `up` prints instead of the container engine's own wide one. */
|
|
20
|
+
export declare const serviceStateTable: (states: readonly ServiceState[]) => string;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serviceStateTable = exports.serviceStates = void 0;
|
|
4
|
+
const compose_1 = require("./compose");
|
|
5
|
+
const pad = (text, width) => text.padEnd(width);
|
|
6
|
+
/**
|
|
7
|
+
* One row per requested service, in the order the API declares them. A container the engine knows
|
|
8
|
+
* but this API does not ask for is left out, so a shared checkout does not pad the table.
|
|
9
|
+
*/
|
|
10
|
+
const serviceStates = (options) => {
|
|
11
|
+
const { services, containers } = options;
|
|
12
|
+
return services.map((service) => {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const container = containers.find((candidate) => candidate.service === service);
|
|
15
|
+
return {
|
|
16
|
+
service,
|
|
17
|
+
status: (_a = container === null || container === void 0 ? void 0 : container.status) !== null && _a !== void 0 ? _a : 'no container',
|
|
18
|
+
running: container !== undefined && (0, compose_1.isRunningStatus)(container.status),
|
|
19
|
+
ports: ((_b = container === null || container === void 0 ? void 0 : container.ports) !== null && _b !== void 0 ? _b : []).map(({ host, container: target }) => `${host} -> ${target}`),
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
exports.serviceStates = serviceStates;
|
|
24
|
+
/** The state table `up` prints instead of the container engine's own wide one. */
|
|
25
|
+
const serviceStateTable = (states) => {
|
|
26
|
+
const serviceWidth = Math.max(0, ...states.map(({ service }) => service.length));
|
|
27
|
+
const statusWidth = Math.max(0, ...states.map(({ status }) => status.length));
|
|
28
|
+
return states
|
|
29
|
+
.map(({ service, status, ports }) => ` ${pad(service, serviceWidth)} ${pad(status, statusWidth)} ${ports.join(', ')}`.trimEnd())
|
|
30
|
+
.join('\n');
|
|
31
|
+
};
|
|
32
|
+
exports.serviceStateTable = serviceStateTable;
|
|
33
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/state.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAW5D,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhE;;;GAGG;AACI,MAAM,aAAa,GAAG,CAAC,OAI7B,EAAkB,EAAE;IACnB,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAEzC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;;QAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QAEhF,OAAO;YACL,OAAO;YACP,MAAM,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,mCAAI,cAAc;YAC3C,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,IAAA,yBAAe,EAAC,SAAS,CAAC,MAAM,CAAC;YACrE,KAAK,EAAE,CAAC,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,MAAM,EAAE,CAAC;SAC7F,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAjBW,QAAA,aAAa,iBAiBxB;AAEF,kFAAkF;AAC3E,MAAM,iBAAiB,GAAG,CAAC,MAA+B,EAAE,EAAE;IACnE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9E,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAClC,KAAK,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAC9F;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC;AATW,QAAA,iBAAiB,qBAS5B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The candidate closest to `input`, or undefined when none is close enough to suggest. A short input
|
|
3
|
+
* accepts one edit and a longer one two, so a typo is caught without guessing at a different word.
|
|
4
|
+
*/
|
|
5
|
+
export declare const closestMatch: (input: string, candidates: string[]) => string | undefined;
|
|
6
|
+
/** The " Did you mean …?" tail of an error, empty when nothing is close enough. */
|
|
7
|
+
export declare const didYouMean: (input: string, candidates: string[]) => string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.didYouMean = exports.closestMatch = void 0;
|
|
4
|
+
const cell = (row, index) => { var _a; return (_a = row[index]) !== null && _a !== void 0 ? _a : 0; };
|
|
5
|
+
const distance = (one, two) => {
|
|
6
|
+
let previous = Array.from({ length: two.length + 1 }, (_, index) => index);
|
|
7
|
+
for (let row = 1; row <= one.length; row++) {
|
|
8
|
+
const current = [row];
|
|
9
|
+
for (let column = 1; column <= two.length; column++) {
|
|
10
|
+
const substitution = cell(previous, column - 1) + (one[row - 1] === two[column - 1] ? 0 : 1);
|
|
11
|
+
current.push(Math.min(cell(current, column - 1) + 1, cell(previous, column) + 1, substitution));
|
|
12
|
+
}
|
|
13
|
+
previous = current;
|
|
14
|
+
}
|
|
15
|
+
return cell(previous, two.length);
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The candidate closest to `input`, or undefined when none is close enough to suggest. A short input
|
|
19
|
+
* accepts one edit and a longer one two, so a typo is caught without guessing at a different word.
|
|
20
|
+
*/
|
|
21
|
+
const closestMatch = (input, candidates) => {
|
|
22
|
+
const limit = input.length <= 4 ? 1 : 2;
|
|
23
|
+
const [best] = candidates
|
|
24
|
+
.map((candidate) => ({ candidate, gap: distance(input.toLowerCase(), candidate.toLowerCase()) }))
|
|
25
|
+
.sort((one, two) => one.gap - two.gap);
|
|
26
|
+
return best && best.gap <= limit ? best.candidate : undefined;
|
|
27
|
+
};
|
|
28
|
+
exports.closestMatch = closestMatch;
|
|
29
|
+
/** The " Did you mean …?" tail of an error, empty when nothing is close enough. */
|
|
30
|
+
const didYouMean = (input, candidates) => {
|
|
31
|
+
const suggestion = (0, exports.closestMatch)(input, candidates);
|
|
32
|
+
return suggestion ? ` Did you mean "${suggestion}"?` : '';
|
|
33
|
+
};
|
|
34
|
+
exports.didYouMean = didYouMean;
|
|
35
|
+
//# sourceMappingURL=suggest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/suggest.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,CAAC,GAAa,EAAE,KAAa,EAAE,EAAE,WAAC,OAAA,MAAA,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAA,EAAA,CAAC;AAE/D,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAE3E,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAEtB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7F,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAClG,CAAC;QAED,QAAQ,GAAG,OAAO,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,UAAoB,EAAE,EAAE;IAClE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU;SACtB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;SAChG,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAEzC,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC,CAAC;AARW,QAAA,YAAY,gBAQvB;AAEF,mFAAmF;AAC5E,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,UAAoB,EAAE,EAAE;IAChE,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAEnD,OAAO,UAAU,CAAC,CAAC,CAAC,kBAAkB,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC,CAAC;AAJW,QAAA,UAAU,cAIrB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type AuthCommandOptions = {
|
|
2
|
+
/** Arguments after `auth`, for example `['gitlab.example.com', 'glpat-…']`. */
|
|
3
|
+
argv: string[];
|
|
4
|
+
root?: string;
|
|
5
|
+
/** How the caller is invoked, used in the usage line. */
|
|
6
|
+
invocation?: string;
|
|
7
|
+
/** Where auth.json is written. Defaults to the directory the API containers mount. */
|
|
8
|
+
home?: string;
|
|
9
|
+
};
|
|
10
|
+
/** Writes a GitLab token into composer's auth.json, after asking the host whether it can fetch code. */
|
|
11
|
+
export declare const authCommand: ({ argv, root, invocation, home, }: AuthCommandOptions) => Promise<number>;
|