@ethlete/cli 2.1.0-next.5 → 2.1.0-next.7

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 (73) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +39 -4
  3. package/package.json +1 -1
  4. package/src/index.js +51 -11
  5. package/src/index.js.map +1 -1
  6. package/src/lib/api/api-command.d.ts +2 -1
  7. package/src/lib/api/api-command.js +2 -2
  8. package/src/lib/api/api-command.js.map +1 -1
  9. package/src/lib/api/auth-hint.d.ts +7 -0
  10. package/src/lib/api/auth-hint.js +27 -1
  11. package/src/lib/api/auth-hint.js.map +1 -1
  12. package/src/lib/api/clear.d.ts +36 -0
  13. package/src/lib/api/clear.js +121 -0
  14. package/src/lib/api/clear.js.map +1 -0
  15. package/src/lib/api/compose.d.ts +29 -0
  16. package/src/lib/api/compose.js +44 -1
  17. package/src/lib/api/compose.js.map +1 -1
  18. package/src/lib/api/definition.d.ts +8 -3
  19. package/src/lib/api/definition.js +28 -4
  20. package/src/lib/api/definition.js.map +1 -1
  21. package/src/lib/api/git.d.ts +4 -0
  22. package/src/lib/api/git.js +14 -2
  23. package/src/lib/api/git.js.map +1 -1
  24. package/src/lib/api/help.d.ts +9 -1
  25. package/src/lib/api/help.js +43 -10
  26. package/src/lib/api/help.js.map +1 -1
  27. package/src/lib/api/index.d.ts +5 -0
  28. package/src/lib/api/index.js +5 -0
  29. package/src/lib/api/index.js.map +1 -1
  30. package/src/lib/api/ports.d.ts +13 -0
  31. package/src/lib/api/ports.js +98 -0
  32. package/src/lib/api/ports.js.map +1 -0
  33. package/src/lib/api/resolve-checkout.d.ts +19 -9
  34. package/src/lib/api/resolve-checkout.js +18 -5
  35. package/src/lib/api/resolve-checkout.js.map +1 -1
  36. package/src/lib/api/run.js +240 -57
  37. package/src/lib/api/run.js.map +1 -1
  38. package/src/lib/api/setup.d.ts +15 -0
  39. package/src/lib/api/setup.js +41 -0
  40. package/src/lib/api/setup.js.map +1 -0
  41. package/src/lib/api/state.d.ts +20 -0
  42. package/src/lib/api/state.js +33 -0
  43. package/src/lib/api/state.js.map +1 -0
  44. package/src/lib/api/suggest.d.ts +7 -0
  45. package/src/lib/api/suggest.js +35 -0
  46. package/src/lib/api/suggest.js.map +1 -0
  47. package/src/lib/auth/auth-command.d.ts +11 -0
  48. package/src/lib/auth/auth-command.js +165 -0
  49. package/src/lib/auth/auth-command.js.map +1 -0
  50. package/src/lib/auth/composer-auth.d.ts +30 -0
  51. package/src/lib/auth/composer-auth.js +70 -0
  52. package/src/lib/auth/composer-auth.js.map +1 -0
  53. package/src/lib/auth/composer-repositories.d.ts +5 -0
  54. package/src/lib/auth/composer-repositories.js +33 -0
  55. package/src/lib/auth/composer-repositories.js.map +1 -0
  56. package/src/lib/auth/gitlab-token.d.ts +43 -0
  57. package/src/lib/auth/gitlab-token.js +72 -0
  58. package/src/lib/auth/gitlab-token.js.map +1 -0
  59. package/src/lib/auth/index.d.ts +4 -0
  60. package/src/lib/auth/index.js +8 -0
  61. package/src/lib/auth/index.js.map +1 -0
  62. package/src/lib/doctor/doctor-command.d.ts +2 -1
  63. package/src/lib/doctor/doctor-command.js +4 -7
  64. package/src/lib/doctor/doctor-command.js.map +1 -1
  65. package/src/lib/index.d.ts +2 -0
  66. package/src/lib/index.js +2 -0
  67. package/src/lib/index.js.map +1 -1
  68. package/src/lib/invocation.d.ts +9 -0
  69. package/src/lib/invocation.js +47 -0
  70. package/src/lib/invocation.js.map +1 -0
  71. package/src/lib/utils.d.ts +14 -0
  72. package/src/lib/utils.js +14 -1
  73. package/src/lib/utils.js.map +1 -1
@@ -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 confirmClone = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
16
- const { problem, repoUrl, into } = options;
17
- if (!process.stdin.isTTY) {
18
- console.error(`${problem}\n\nRe-run with --clone to clone ${repoUrl} into ${into}.`);
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 runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ apis, argv, root = process.cwd(), invocation = 'et api', }) {
26
- var _b, _c, _d, _e;
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)({ root, name, api, requireCompose: !isGitCommand });
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 (!checkout.clonable) {
50
- console.error(checkout.problem);
51
- return 1;
52
- }
53
- const { repoUrl, into, branch } = checkout.clonable;
54
- const accepted = command === 'clone' ||
55
- argv.includes('--clone') ||
56
- (yield confirmClone({ problem: checkout.problem, repoUrl, into }));
57
- if (!accepted)
58
- return 1;
59
- if (!(0, clone_1.isGitIgnored)(root, into)) {
60
- console.warn(`\n${clone_1.DEFAULT_CHECKOUT_DIR}/ is not gitignored. Add it before you commit anything.\n`);
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
- const cloned = (0, clone_1.cloneApiRepo)({ repoUrl, into, branch });
63
- if (cloned !== 0) {
64
- (0, auth_hint_1.printPrivateDependencyHint)({ repoHost: (0, auth_hint_1.gitUrlHost)(repoUrl) });
65
- return cloned;
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
- if (command === 'clone')
68
- return 0;
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((_c = (_b = api.env) === null || _b === void 0 ? void 0 : _b.call(api)) !== null && _c !== void 0 ? _c : {}));
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
- runCompose('up', '-d', ...api.services);
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
- console.log(`\n${name} API at http://localhost:${api.port}. State:\n`);
115
- runCompose('ps');
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
- runCompose('logs', '-f', api.execService);
136
- }
137
- else if (command === 'shell') {
138
- runCompose('exec', api.execService, 'bash');
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
- runCompose('exec', api.execService, ...((_e = (_d = api.exec) === null || _d === void 0 ? void 0 : _d[command]) !== null && _e !== void 0 ? _e : []));
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
- (0, auth_hint_1.printPrivateDependencyHint)({ repoHost: api.repoUrl ? (0, auth_hint_1.gitUrlHost)(api.repoUrl) : undefined });
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
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/run.ts"],"names":[],"mappings":"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"}
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>;