@ethlete/cli 3.0.0-next.16 → 3.0.0-next.18
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 +12 -0
- package/README.md +8 -0
- package/package.json +1 -1
- package/src/lib/api/api-context.d.ts +15 -0
- package/src/lib/api/api-context.js +23 -0
- package/src/lib/api/api-context.js.map +1 -0
- package/src/lib/api/api-state.d.ts +31 -0
- package/src/lib/api/api-state.js +80 -0
- package/src/lib/api/api-state.js.map +1 -0
- package/src/lib/api/definition.d.ts +37 -1
- package/src/lib/api/definition.js +12 -2
- package/src/lib/api/definition.js.map +1 -1
- package/src/lib/api/doctor.d.ts +16 -0
- package/src/lib/api/doctor.js +71 -0
- package/src/lib/api/doctor.js.map +1 -0
- package/src/lib/api/fingerprint.d.ts +18 -0
- package/src/lib/api/fingerprint.js +63 -0
- package/src/lib/api/fingerprint.js.map +1 -0
- package/src/lib/api/git.d.ts +2 -0
- package/src/lib/api/git.js +7 -1
- package/src/lib/api/git.js.map +1 -1
- package/src/lib/api/help.js +31 -4
- package/src/lib/api/help.js.map +1 -1
- package/src/lib/api/index.d.ts +4 -0
- package/src/lib/api/index.js +4 -0
- package/src/lib/api/index.js.map +1 -1
- package/src/lib/api/load-definitions.js +3 -0
- package/src/lib/api/load-definitions.js.map +1 -1
- package/src/lib/api/lock.d.ts +46 -0
- package/src/lib/api/lock.js +144 -0
- package/src/lib/api/lock.js.map +1 -0
- package/src/lib/api/parse-argv.d.ts +12 -0
- package/src/lib/api/parse-argv.js +31 -0
- package/src/lib/api/parse-argv.js.map +1 -0
- package/src/lib/api/run-locked.d.ts +14 -0
- package/src/lib/api/run-locked.js +62 -0
- package/src/lib/api/run-locked.js.map +1 -0
- package/src/lib/api/run-ready.d.ts +60 -0
- package/src/lib/api/run-ready.js +212 -0
- package/src/lib/api/run-ready.js.map +1 -0
- package/src/lib/api/run-snapshot.d.ts +33 -0
- package/src/lib/api/run-snapshot.js +124 -0
- package/src/lib/api/run-snapshot.js.map +1 -0
- package/src/lib/api/run-status.d.ts +9 -0
- package/src/lib/api/run-status.js +55 -0
- package/src/lib/api/run-status.js.map +1 -0
- package/src/lib/api/run.d.ts +1 -1
- package/src/lib/api/run.js +192 -9
- package/src/lib/api/run.js.map +1 -1
- package/src/lib/api/seeds.d.ts +55 -0
- package/src/lib/api/seeds.js +215 -0
- package/src/lib/api/seeds.js.map +1 -0
- package/src/lib/api/snapshot.d.ts +63 -0
- package/src/lib/api/snapshot.js +132 -0
- package/src/lib/api/snapshot.js.map +1 -0
- package/src/lib/api/validate-definition.d.ts +7 -0
- package/src/lib/api/validate-definition.js +79 -0
- package/src/lib/api/validate-definition.js.map +1 -0
package/src/lib/api/run.js
CHANGED
|
@@ -8,21 +8,39 @@ 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 doctor_1 = require("./doctor");
|
|
11
12
|
const setup_1 = require("./setup");
|
|
13
|
+
const parse_argv_1 = require("./parse-argv");
|
|
12
14
|
const suggest_1 = require("./suggest");
|
|
13
15
|
const clone_1 = require("./clone");
|
|
16
|
+
const git_2 = require("./git");
|
|
17
|
+
const gitignore_1 = require("../update/gitignore");
|
|
18
|
+
const seeds_1 = require("./seeds");
|
|
14
19
|
const auth_hint_1 = require("./auth-hint");
|
|
15
20
|
const utils_1 = require("../utils");
|
|
16
21
|
const local_config_1 = require("../config/local-config");
|
|
17
22
|
const clear_1 = require("./clear");
|
|
18
23
|
const ports_1 = require("./ports");
|
|
19
24
|
const state_1 = require("./state");
|
|
25
|
+
const api_state_1 = require("./api-state");
|
|
26
|
+
const run_locked_1 = require("./run-locked");
|
|
27
|
+
const run_snapshot_1 = require("./run-snapshot");
|
|
28
|
+
const run_status_1 = require("./run-status");
|
|
29
|
+
const run_ready_1 = require("./run-ready");
|
|
30
|
+
const api_context_1 = require("./api-context");
|
|
20
31
|
const confirmFix = (options) => (0, utils_1.confirm)(Object.assign(Object.assign({}, options), { defaultsToYes: true }));
|
|
21
|
-
const definedEntries = (record) => Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
|
|
22
32
|
const namedApis = (argument) => argument
|
|
23
33
|
.split(',')
|
|
24
34
|
.map((name) => name.trim())
|
|
25
35
|
.filter((name) => name !== '');
|
|
36
|
+
const parseWait = (wait) => {
|
|
37
|
+
if (wait === undefined)
|
|
38
|
+
return { ok: true, seconds: undefined };
|
|
39
|
+
const seconds = Number(wait);
|
|
40
|
+
return wait.trim() !== '' && Number.isFinite(seconds) && seconds >= 0
|
|
41
|
+
? { ok: true, seconds }
|
|
42
|
+
: { ok: false };
|
|
43
|
+
};
|
|
26
44
|
const composeProjectHasContainers = (composePath) => {
|
|
27
45
|
var _a;
|
|
28
46
|
const tool = (0, compose_1.resolveComposeTool)();
|
|
@@ -42,7 +60,7 @@ const takeComposeProjectDown = (composePath) => {
|
|
|
42
60
|
};
|
|
43
61
|
const runOneApiCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
44
62
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
45
|
-
const { argv, root, invocation, command, name, api, service } = options;
|
|
63
|
+
const { argv, root, invocation, command, name, api, service, seedSteps: steps, commandArgs = [] } = options;
|
|
46
64
|
const exposeOnLan = argv.includes('--host');
|
|
47
65
|
const isGitCommand = definition_1.GIT_API_COMMANDS.includes(command);
|
|
48
66
|
const checkout = (0, resolve_checkout_1.resolveApiCheckout)({
|
|
@@ -66,8 +84,9 @@ const runOneApiCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
|
|
|
66
84
|
}));
|
|
67
85
|
if (!accepted)
|
|
68
86
|
return 1;
|
|
69
|
-
|
|
70
|
-
|
|
87
|
+
const ignoreLine = `/${clone_1.DEFAULT_CHECKOUT_DIR}/${name}/`;
|
|
88
|
+
if ((0, gitignore_1.ignoreEntry)({ root, entry: ignoreLine, probe: `${clone_1.DEFAULT_CHECKOUT_DIR}/${name}/` })) {
|
|
89
|
+
console.log(`\nAdded ${ignoreLine} to .gitignore.`);
|
|
71
90
|
}
|
|
72
91
|
const cloned = (0, clone_1.cloneApiRepo)({ repoUrl, into, branch });
|
|
73
92
|
if (cloned !== 0) {
|
|
@@ -127,7 +146,7 @@ const runOneApiCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
|
|
|
127
146
|
}
|
|
128
147
|
const { engine, compose } = tool;
|
|
129
148
|
const [binary, ...composePrefix] = compose;
|
|
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 : {}));
|
|
149
|
+
const env = Object.assign(Object.assign(Object.assign({}, (0, compose_1.engineEnv)(engine)), process.env), (0, api_context_1.definedEntries)((_b = (_a = api.env) === null || _a === void 0 ? void 0 : _a.call(api)) !== null && _b !== void 0 ? _b : {}));
|
|
131
150
|
let exitCode = 0;
|
|
132
151
|
const runCompose = (...composeArgs) => {
|
|
133
152
|
var _a;
|
|
@@ -235,6 +254,9 @@ const runOneApiCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
|
|
|
235
254
|
`A host firewall can still block port ${api.port}.`);
|
|
236
255
|
}
|
|
237
256
|
}
|
|
257
|
+
else if (command === 'doctor') {
|
|
258
|
+
exitCode = (0, doctor_1.runDoctor)({ name, api, tool, cwd, env, invocation, fix: argv.includes('--fix') }).ok ? 0 : 1;
|
|
259
|
+
}
|
|
238
260
|
else if (command === 'down') {
|
|
239
261
|
runCompose('down');
|
|
240
262
|
}
|
|
@@ -250,9 +272,42 @@ const runOneApiCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
|
|
|
250
272
|
else
|
|
251
273
|
runCompose('exec', target, 'bash');
|
|
252
274
|
}
|
|
275
|
+
else if (command === 'exec') {
|
|
276
|
+
if (service === undefined || !api.services.includes(service)) {
|
|
277
|
+
console.error(service === undefined
|
|
278
|
+
? `Name the service to run in: ${invocation} exec ${name} <service> -- <command>`
|
|
279
|
+
: `The ${name} API does not start "${service}".${(0, suggest_1.didYouMean)(service, api.services)}`);
|
|
280
|
+
console.error(`Services: ${api.services.join(', ')}`);
|
|
281
|
+
return 1;
|
|
282
|
+
}
|
|
283
|
+
runCompose('exec', '-T', service, ...commandArgs);
|
|
284
|
+
}
|
|
285
|
+
else if (steps !== undefined) {
|
|
286
|
+
const directory = (0, seeds_1.containerSeedDirectory)(name);
|
|
287
|
+
const copied = (0, child_process_1.spawnSync)(binary, [...composePrefix, ...(0, seeds_1.seedCopyArgs)(api.execService, directory)], {
|
|
288
|
+
cwd,
|
|
289
|
+
env,
|
|
290
|
+
input: (0, seeds_1.tarDirectory)((0, seeds_1.seedDirectory)(root, name)),
|
|
291
|
+
stdio: ['pipe', 'inherit', 'inherit'],
|
|
292
|
+
});
|
|
293
|
+
if (copied.error || copied.status !== 0) {
|
|
294
|
+
if (copied.error)
|
|
295
|
+
console.error(copied.error.message);
|
|
296
|
+
console.error(`Could not copy ${(0, seeds_1.seedDirectory)(root, name)} into the ${api.execService} container.`);
|
|
297
|
+
return copied.status || 1;
|
|
298
|
+
}
|
|
299
|
+
for (const step of steps) {
|
|
300
|
+
console.log(`\nRunning ${step.label} in ${api.execService}.`);
|
|
301
|
+
runCompose(...(0, seeds_1.seedRunArgs)({ service: api.execService, directory, step, tty: process.stdin.isTTY === true }));
|
|
302
|
+
if (exitCode !== 0) {
|
|
303
|
+
console.error(`\n${step.label} failed with exit code ${exitCode}.`);
|
|
304
|
+
return exitCode;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
253
308
|
else {
|
|
254
309
|
const execCommand = (_h = (_g = api.exec) === null || _g === void 0 ? void 0 : _g[command]) !== null && _h !== void 0 ? _h : [];
|
|
255
|
-
runCompose('exec', api.execService, ...execCommand);
|
|
310
|
+
runCompose('exec', ...(process.stdin.isTTY === true ? [] : ['-T']), api.execService, ...execCommand);
|
|
256
311
|
if (exitCode !== 0) {
|
|
257
312
|
const install = (0, definition_1.dependencyInstallCommandName)(api);
|
|
258
313
|
if ((0, definition_1.installsDependencies)(execCommand)) {
|
|
@@ -266,8 +321,14 @@ const runOneApiCommand = (options) => tslib_1.__awaiter(void 0, void 0, void 0,
|
|
|
266
321
|
}
|
|
267
322
|
return exitCode;
|
|
268
323
|
});
|
|
269
|
-
const runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ apis, argv, root = process.cwd(), invocation = 'et api', }) {
|
|
270
|
-
|
|
324
|
+
const runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ apis, argv: rawArgv, root = process.cwd(), invocation = 'et api', }) {
|
|
325
|
+
var _b, _c, _d;
|
|
326
|
+
const parsed = (0, parse_argv_1.parseApiArgv)(rawArgv);
|
|
327
|
+
const argv = parsed.head;
|
|
328
|
+
const positionals = parsed.positionals[0] === 'snapshot' && ['save', 'restore'].includes((_b = parsed.positionals[1]) !== null && _b !== void 0 ? _b : '')
|
|
329
|
+
? ['snapshot', parsed.positionals[2], parsed.positionals[1], parsed.positionals[3]]
|
|
330
|
+
: parsed.positionals;
|
|
331
|
+
const [command, nameArgument, service] = positionals;
|
|
271
332
|
const wantsHelp = argv.includes('--help') || argv.includes('-h') || command === 'help';
|
|
272
333
|
if (wantsHelp && nameArgument === undefined) {
|
|
273
334
|
console.log((0, help_1.apiHelp)(apis, invocation));
|
|
@@ -289,6 +350,31 @@ const runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function*
|
|
|
289
350
|
console.error((0, help_1.apiHelp)(apis, invocation));
|
|
290
351
|
return 1;
|
|
291
352
|
}
|
|
353
|
+
if (command === 'exec' && !wantsHelp) {
|
|
354
|
+
if (names.length > 1) {
|
|
355
|
+
console.error(`exec runs in one API at a time, but ${names.length} were named.`);
|
|
356
|
+
return 1;
|
|
357
|
+
}
|
|
358
|
+
if (parsed.rest === undefined || parsed.rest.length === 0) {
|
|
359
|
+
console.error(`exec needs a command after "--": ${invocation} exec ${names[0]} <service> -- <command> [<args>...]`);
|
|
360
|
+
return 1;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
const runUsage = `${invocation} run <api> --lock [--wait <seconds>] -- <command> [<args>...]`;
|
|
364
|
+
if (command === 'run' && !wantsHelp) {
|
|
365
|
+
if (names.length > 1) {
|
|
366
|
+
console.error(`run locks one API at a time, but ${names.length} were named.`);
|
|
367
|
+
return 1;
|
|
368
|
+
}
|
|
369
|
+
if (!argv.includes('--lock') || parsed.rest === undefined || parsed.rest.length === 0) {
|
|
370
|
+
console.error(`run needs --lock and a command after "--": ${runUsage}`);
|
|
371
|
+
return 1;
|
|
372
|
+
}
|
|
373
|
+
if (!parseWait(parsed.wait).ok) {
|
|
374
|
+
console.error(`--wait takes a number of seconds: ${runUsage}`);
|
|
375
|
+
return 1;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
292
378
|
const known = Object.keys(apis);
|
|
293
379
|
const unknown = names.find((candidate) => !Object.prototype.hasOwnProperty.call(apis, candidate));
|
|
294
380
|
if (unknown !== undefined) {
|
|
@@ -325,9 +411,106 @@ const runApiCommand = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function*
|
|
|
325
411
|
}
|
|
326
412
|
if (command === 'clear')
|
|
327
413
|
return clear(names);
|
|
414
|
+
if (command === 'run') {
|
|
415
|
+
const [target] = targets;
|
|
416
|
+
if (target === undefined)
|
|
417
|
+
return 1;
|
|
418
|
+
const state = (0, api_context_1.stateDirectoryOf)(Object.assign({ root }, target));
|
|
419
|
+
if (!state.ok) {
|
|
420
|
+
console.error((0, resolve_checkout_1.checkoutProblem)({ failure: state, name: target.name, invocation }));
|
|
421
|
+
return 1;
|
|
422
|
+
}
|
|
423
|
+
return (0, run_locked_1.runLocked)({
|
|
424
|
+
directory: state.directory,
|
|
425
|
+
command: (_c = parsed.rest) !== null && _c !== void 0 ? _c : [],
|
|
426
|
+
cwd: root,
|
|
427
|
+
wait: parseWait(parsed.wait).seconds,
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
if (command === 'ready') {
|
|
431
|
+
const [target] = targets;
|
|
432
|
+
if (target === undefined)
|
|
433
|
+
return 1;
|
|
434
|
+
if (targets.length > 1) {
|
|
435
|
+
console.error(`ready works on one API at a time, but ${targets.length} were named.`);
|
|
436
|
+
return 1;
|
|
437
|
+
}
|
|
438
|
+
if (!parseWait(parsed.wait).ok) {
|
|
439
|
+
console.error(`--wait takes a number of seconds.`);
|
|
440
|
+
return 1;
|
|
441
|
+
}
|
|
442
|
+
const single = { argv, root, invocation, name: target.name, api: target.api, service: undefined };
|
|
443
|
+
return (0, run_ready_1.runReadyCommand)(Object.assign(Object.assign({ root }, target), { invocation, profile: parsed.profile, wait: parseWait(parsed.wait).seconds, up: () => runOneApiCommand(Object.assign(Object.assign({}, single), { command: 'up' })), runSeeds: (unit) => unit.kind === 'exec'
|
|
444
|
+
? runOneApiCommand(Object.assign(Object.assign({}, single), { command: unit.name }))
|
|
445
|
+
: runOneApiCommand(Object.assign(Object.assign({}, single), { command: 'seed', seedSteps: unit.steps })) }));
|
|
446
|
+
}
|
|
447
|
+
if (command === 'snapshot' || command === 'status') {
|
|
448
|
+
const [target] = targets;
|
|
449
|
+
if (target === undefined)
|
|
450
|
+
return 1;
|
|
451
|
+
if (targets.length > 1) {
|
|
452
|
+
console.error(`${command} works on one API at a time, but ${targets.length} were named.`);
|
|
453
|
+
return 1;
|
|
454
|
+
}
|
|
455
|
+
if (command === 'status') {
|
|
456
|
+
return (0, run_status_1.runStatusCommand)(Object.assign(Object.assign({ root }, target), { invocation, profile: parsed.profile }));
|
|
457
|
+
}
|
|
458
|
+
if (!parseWait(parsed.wait).ok) {
|
|
459
|
+
console.error(`--wait takes a number of seconds.`);
|
|
460
|
+
return 1;
|
|
461
|
+
}
|
|
462
|
+
return (0, run_snapshot_1.runSnapshotCommand)(Object.assign(Object.assign({ root }, target), { invocation, action: service, snapshotName: positionals[3], profile: parsed.profile, wait: parseWait(parsed.wait).seconds }));
|
|
463
|
+
}
|
|
464
|
+
const stepsByApi = new Map();
|
|
465
|
+
const isSeedCommand = seeds_1.SEED_API_COMMANDS.some((candidate) => candidate === command);
|
|
466
|
+
for (const { name } of isSeedCommand ? targets.filter(({ api }) => { var _a; return !((_a = api.exec) === null || _a === void 0 ? void 0 : _a[command]); }) : []) {
|
|
467
|
+
const manifest = (0, seeds_1.readSeedManifest)(root, name);
|
|
468
|
+
if (!manifest.ok) {
|
|
469
|
+
console.error(manifest.problem);
|
|
470
|
+
return 1;
|
|
471
|
+
}
|
|
472
|
+
if ((0, git_2.ignoredByGit)(root, (0, seeds_1.seedManifestPath)(name)) === true) {
|
|
473
|
+
console.warn(`${(0, seeds_1.seedManifestPath)(name)} is gitignored, so nobody else gets these seeds. Ignore only the managed ` +
|
|
474
|
+
`checkout: replace the ${clone_1.DEFAULT_CHECKOUT_DIR} line in .gitignore with "/${clone_1.DEFAULT_CHECKOUT_DIR}/${name}/".\n`);
|
|
475
|
+
}
|
|
476
|
+
const seedNames = (0, seeds_1.parseSeedList)(service);
|
|
477
|
+
if (command === 'seed' && seedNames.length === 0) {
|
|
478
|
+
console.log((0, seeds_1.seedListText)({ api: name, manifest: manifest.value, invocation }));
|
|
479
|
+
continue;
|
|
480
|
+
}
|
|
481
|
+
const steps = (0, seeds_1.seedSteps)({
|
|
482
|
+
manifest: manifest.value,
|
|
483
|
+
names: seedNames,
|
|
484
|
+
withFixtures: command === 'fixtures',
|
|
485
|
+
api: name,
|
|
486
|
+
});
|
|
487
|
+
if (!steps.ok) {
|
|
488
|
+
console.error(steps.problem);
|
|
489
|
+
return 1;
|
|
490
|
+
}
|
|
491
|
+
stepsByApi.set(name, steps.value);
|
|
492
|
+
}
|
|
328
493
|
let exitCode = 0;
|
|
329
494
|
for (const { name, api } of targets) {
|
|
330
|
-
const
|
|
495
|
+
const seedStepsOfApi = stepsByApi.get(name);
|
|
496
|
+
if (isSeedCommand && !((_d = api.exec) === null || _d === void 0 ? void 0 : _d[command]) && seedStepsOfApi === undefined)
|
|
497
|
+
continue;
|
|
498
|
+
const code = yield runOneApiCommand({
|
|
499
|
+
argv,
|
|
500
|
+
root,
|
|
501
|
+
invocation,
|
|
502
|
+
command,
|
|
503
|
+
name,
|
|
504
|
+
api,
|
|
505
|
+
service,
|
|
506
|
+
seedSteps: seedStepsOfApi,
|
|
507
|
+
commandArgs: parsed.rest,
|
|
508
|
+
});
|
|
509
|
+
if (isSeedCommand) {
|
|
510
|
+
const state = (0, api_context_1.stateDirectoryOf)({ root, name, api });
|
|
511
|
+
if (state.ok)
|
|
512
|
+
(0, api_state_1.markApiStateDirty)(state.directory);
|
|
513
|
+
}
|
|
331
514
|
if (code !== 0)
|
|
332
515
|
exitCode = code;
|
|
333
516
|
}
|
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":"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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,55 @@
|
|
|
1
|
+
export declare const SEEDS_DIR = ".ethlete/seeds";
|
|
2
|
+
export declare const SEED_MANIFEST_FILE_NAME = "seeds.json";
|
|
3
|
+
export declare const CONTAINER_SEEDS_DIR = "/tmp/ethlete-seeds";
|
|
4
|
+
/** The commands an API gets from `.ethlete/seeds/<name>/seeds.json`. An `exec` entry of the same name runs instead. */
|
|
5
|
+
export declare const SEED_API_COMMANDS: readonly ["seed", "fixtures"];
|
|
6
|
+
export type Seed = {
|
|
7
|
+
description?: string;
|
|
8
|
+
/** Shell lines, run in order by one `sh` that stops at the first failing line. */
|
|
9
|
+
run: string[];
|
|
10
|
+
env?: Record<string, string>;
|
|
11
|
+
};
|
|
12
|
+
export type SeedManifest = {
|
|
13
|
+
fixtures?: string[];
|
|
14
|
+
seeds: Record<string, Seed>;
|
|
15
|
+
};
|
|
16
|
+
export type SeedStep = {
|
|
17
|
+
label: string;
|
|
18
|
+
lines: string[];
|
|
19
|
+
env: Record<string, string>;
|
|
20
|
+
};
|
|
21
|
+
type Parsed<T> = {
|
|
22
|
+
ok: true;
|
|
23
|
+
value: T;
|
|
24
|
+
} | {
|
|
25
|
+
ok: false;
|
|
26
|
+
problem: string;
|
|
27
|
+
};
|
|
28
|
+
export declare const parseSeedManifest: (value: unknown) => Parsed<SeedManifest>;
|
|
29
|
+
export declare const seedDirectory: (root: string, name: string) => string;
|
|
30
|
+
export declare const seedManifestPath: (name: string) => string;
|
|
31
|
+
export declare const readSeedManifest: (root: string, name: string) => Parsed<SeedManifest>;
|
|
32
|
+
export declare const parseSeedList: (argument: string | undefined) => string[];
|
|
33
|
+
export declare const seedSteps: (options: {
|
|
34
|
+
manifest: SeedManifest;
|
|
35
|
+
names: string[];
|
|
36
|
+
withFixtures: boolean;
|
|
37
|
+
api: string;
|
|
38
|
+
}) => Parsed<SeedStep[]>;
|
|
39
|
+
export declare const seedListText: (options: {
|
|
40
|
+
api: string;
|
|
41
|
+
manifest: SeedManifest;
|
|
42
|
+
invocation: string;
|
|
43
|
+
}) => string;
|
|
44
|
+
export declare const shellQuote: (value: string) => string;
|
|
45
|
+
export declare const containerSeedDirectory: (api: string) => string;
|
|
46
|
+
export declare const seedCopyArgs: (service: string, directory: string) => string[];
|
|
47
|
+
export declare const seedRunArgs: (options: {
|
|
48
|
+
service: string;
|
|
49
|
+
directory: string;
|
|
50
|
+
step: SeedStep;
|
|
51
|
+
tty: boolean;
|
|
52
|
+
}) => string[];
|
|
53
|
+
/** A ustar archive of everything under `directory`, built in memory so the host needs no `tar` of its own. */
|
|
54
|
+
export declare const tarDirectory: (directory: string) => Buffer<ArrayBuffer>;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tarDirectory = exports.seedRunArgs = exports.seedCopyArgs = exports.containerSeedDirectory = exports.shellQuote = exports.seedListText = exports.seedSteps = exports.parseSeedList = exports.readSeedManifest = exports.seedManifestPath = exports.seedDirectory = exports.parseSeedManifest = exports.SEED_API_COMMANDS = exports.CONTAINER_SEEDS_DIR = exports.SEED_MANIFEST_FILE_NAME = exports.SEEDS_DIR = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const clone_1 = require("./clone");
|
|
7
|
+
const suggest_1 = require("./suggest");
|
|
8
|
+
exports.SEEDS_DIR = `${clone_1.DEFAULT_CHECKOUT_DIR}/seeds`;
|
|
9
|
+
exports.SEED_MANIFEST_FILE_NAME = 'seeds.json';
|
|
10
|
+
exports.CONTAINER_SEEDS_DIR = '/tmp/ethlete-seeds';
|
|
11
|
+
/** The commands an API gets from `.ethlete/seeds/<name>/seeds.json`. An `exec` entry of the same name runs instead. */
|
|
12
|
+
exports.SEED_API_COMMANDS = ['seed', 'fixtures'];
|
|
13
|
+
const SEED_NAME = /^[\w-]+$/;
|
|
14
|
+
const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
15
|
+
const isLineList = (value) => Array.isArray(value) && value.length > 0 && value.every((line) => typeof line === 'string' && line.trim() !== '');
|
|
16
|
+
const unknownKeys = (value, known) => Object.keys(value).filter((key) => !known.includes(key));
|
|
17
|
+
const parseSeed = (name, value) => {
|
|
18
|
+
const at = `seeds.${name}`;
|
|
19
|
+
if (!SEED_NAME.test(name)) {
|
|
20
|
+
return { ok: false, problem: `"${name}" is not a seed name. Use letters, digits, "-" and "_".` };
|
|
21
|
+
}
|
|
22
|
+
if (!isRecord(value))
|
|
23
|
+
return { ok: false, problem: `${at} must be an object with a "run" list.` };
|
|
24
|
+
const extra = unknownKeys(value, ['description', 'run', 'env']);
|
|
25
|
+
if (extra.length > 0) {
|
|
26
|
+
return { ok: false, problem: `${at} has an unknown key "${extra[0]}". Known keys: description, run, env.` };
|
|
27
|
+
}
|
|
28
|
+
if (!isLineList(value['run']))
|
|
29
|
+
return { ok: false, problem: `${at}.run must be a non-empty list of shell lines.` };
|
|
30
|
+
if (value['description'] !== undefined && typeof value['description'] !== 'string') {
|
|
31
|
+
return { ok: false, problem: `${at}.description must be a string.` };
|
|
32
|
+
}
|
|
33
|
+
const env = value['env'];
|
|
34
|
+
if (env !== undefined) {
|
|
35
|
+
const valid = isRecord(env) &&
|
|
36
|
+
Object.entries(env).every(([key, entry]) => /^[A-Za-z_]\w*$/.test(key) && typeof entry === 'string');
|
|
37
|
+
if (!valid) {
|
|
38
|
+
return { ok: false, problem: `${at}.env must map variable names to strings.` };
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
ok: true,
|
|
43
|
+
value: {
|
|
44
|
+
run: value['run'],
|
|
45
|
+
description: value['description'],
|
|
46
|
+
env: env,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
const parseSeedManifest = (value) => {
|
|
51
|
+
var _a;
|
|
52
|
+
if (!isRecord(value))
|
|
53
|
+
return { ok: false, problem: 'The manifest must be a JSON object.' };
|
|
54
|
+
const extra = unknownKeys(value, ['fixtures', 'seeds']);
|
|
55
|
+
if (extra.length > 0) {
|
|
56
|
+
return { ok: false, problem: `Unknown key "${extra[0]}". Known keys: fixtures, seeds.` };
|
|
57
|
+
}
|
|
58
|
+
const fixtures = value['fixtures'];
|
|
59
|
+
if (fixtures !== undefined && !isLineList(fixtures)) {
|
|
60
|
+
return { ok: false, problem: 'fixtures must be a non-empty list of shell lines.' };
|
|
61
|
+
}
|
|
62
|
+
const rawSeeds = (_a = value['seeds']) !== null && _a !== void 0 ? _a : {};
|
|
63
|
+
if (!isRecord(rawSeeds))
|
|
64
|
+
return { ok: false, problem: 'seeds must be an object of named seeds.' };
|
|
65
|
+
const seeds = {};
|
|
66
|
+
for (const [name, entry] of Object.entries(rawSeeds)) {
|
|
67
|
+
const seed = parseSeed(name, entry);
|
|
68
|
+
if (!seed.ok)
|
|
69
|
+
return seed;
|
|
70
|
+
seeds[name] = seed.value;
|
|
71
|
+
}
|
|
72
|
+
return { ok: true, value: { fixtures, seeds } };
|
|
73
|
+
};
|
|
74
|
+
exports.parseSeedManifest = parseSeedManifest;
|
|
75
|
+
const seedDirectory = (root, name) => (0, path_1.join)(root, exports.SEEDS_DIR, name);
|
|
76
|
+
exports.seedDirectory = seedDirectory;
|
|
77
|
+
const seedManifestPath = (name) => `${exports.SEEDS_DIR}/${name}/${exports.SEED_MANIFEST_FILE_NAME}`;
|
|
78
|
+
exports.seedManifestPath = seedManifestPath;
|
|
79
|
+
const readSeedManifest = (root, name) => {
|
|
80
|
+
const path = (0, exports.seedManifestPath)(name);
|
|
81
|
+
const absolute = (0, path_1.join)(root, path);
|
|
82
|
+
if (!(0, fs_1.existsSync)(absolute)) {
|
|
83
|
+
return {
|
|
84
|
+
ok: false,
|
|
85
|
+
problem: `The ${name} API has no seeds. Create ${path}:\n\n` +
|
|
86
|
+
` {\n "fixtures": ["bin/console doctrine:fixtures:load -n"],\n` +
|
|
87
|
+
` "seeds": {\n "demo": { "description": "Demo data", "run": ["php $SEED_DIR/demo.php"] }\n }\n }`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
let parsed;
|
|
91
|
+
try {
|
|
92
|
+
parsed = JSON.parse((0, fs_1.readFileSync)(absolute, 'utf8'));
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return { ok: false, problem: `${path} is not valid JSON: ${error.message}` };
|
|
96
|
+
}
|
|
97
|
+
const manifest = (0, exports.parseSeedManifest)(parsed);
|
|
98
|
+
return manifest.ok ? manifest : { ok: false, problem: `${path}: ${manifest.problem}` };
|
|
99
|
+
};
|
|
100
|
+
exports.readSeedManifest = readSeedManifest;
|
|
101
|
+
const parseSeedList = (argument) => (argument !== null && argument !== void 0 ? argument : '')
|
|
102
|
+
.split(',')
|
|
103
|
+
.map((name) => name.trim())
|
|
104
|
+
.filter((name) => name !== '');
|
|
105
|
+
exports.parseSeedList = parseSeedList;
|
|
106
|
+
const seedSteps = (options) => {
|
|
107
|
+
const { manifest, names, withFixtures, api } = options;
|
|
108
|
+
const known = Object.keys(manifest.seeds);
|
|
109
|
+
const unknown = names.find((name) => !Object.prototype.hasOwnProperty.call(manifest.seeds, name));
|
|
110
|
+
if (unknown !== undefined) {
|
|
111
|
+
return {
|
|
112
|
+
ok: false,
|
|
113
|
+
problem: `The ${api} API has no seed "${unknown}".${(0, suggest_1.didYouMean)(unknown, known)}\n\n` +
|
|
114
|
+
`Seeds: ${known.length > 0 ? known.join(', ') : 'none'}`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (withFixtures && !manifest.fixtures) {
|
|
118
|
+
return { ok: false, problem: `${(0, exports.seedManifestPath)(api)} declares no fixtures.` };
|
|
119
|
+
}
|
|
120
|
+
const fixtures = withFixtures && manifest.fixtures ? [{ label: 'fixtures', lines: manifest.fixtures, env: {} }] : [];
|
|
121
|
+
const seeds = names.map((name) => {
|
|
122
|
+
var _a;
|
|
123
|
+
const seed = manifest.seeds[name];
|
|
124
|
+
return { label: name, lines: seed.run, env: (_a = seed.env) !== null && _a !== void 0 ? _a : {} };
|
|
125
|
+
});
|
|
126
|
+
return { ok: true, value: [...fixtures, ...seeds] };
|
|
127
|
+
};
|
|
128
|
+
exports.seedSteps = seedSteps;
|
|
129
|
+
const seedListText = (options) => {
|
|
130
|
+
const { api, manifest, invocation } = options;
|
|
131
|
+
const entries = Object.entries(manifest.seeds);
|
|
132
|
+
const width = Math.max(...entries.map(([name]) => name.length), 0);
|
|
133
|
+
if (entries.length === 0)
|
|
134
|
+
return `${(0, exports.seedManifestPath)(api)} declares no seeds.`;
|
|
135
|
+
return [
|
|
136
|
+
`Seeds of the ${api} API`,
|
|
137
|
+
'',
|
|
138
|
+
...entries.map(([name, seed]) => { var _a; return ` ${name.padEnd(width)} ${(_a = seed.description) !== null && _a !== void 0 ? _a : seed.run.join('; ')}`; }),
|
|
139
|
+
'',
|
|
140
|
+
`Run them with "${invocation} seed ${api} ${entries.map(([name]) => name).join(',')}".`,
|
|
141
|
+
].join('\n');
|
|
142
|
+
};
|
|
143
|
+
exports.seedListText = seedListText;
|
|
144
|
+
const shellQuote = (value) => `'${value.replace(/'/g, `'\\''`)}'`;
|
|
145
|
+
exports.shellQuote = shellQuote;
|
|
146
|
+
const containerSeedDirectory = (api) => path_1.posix.join(exports.CONTAINER_SEEDS_DIR, api);
|
|
147
|
+
exports.containerSeedDirectory = containerSeedDirectory;
|
|
148
|
+
const seedCopyArgs = (service, directory) => {
|
|
149
|
+
const quoted = (0, exports.shellQuote)(directory);
|
|
150
|
+
return ['exec', '-T', service, 'sh', '-c', `rm -rf ${quoted} && mkdir -p ${quoted} && tar -x -C ${quoted}`];
|
|
151
|
+
};
|
|
152
|
+
exports.seedCopyArgs = seedCopyArgs;
|
|
153
|
+
const seedRunArgs = (options) => {
|
|
154
|
+
const { service, directory, step, tty } = options;
|
|
155
|
+
const exportLines = Object.entries(Object.assign({ SEED_DIR: directory }, step.env)).map(([key, value]) => `export ${key}=${(0, exports.shellQuote)(value)}`);
|
|
156
|
+
return ['exec', ...(tty ? [] : ['-T']), service, 'sh', '-c', ['set -e', ...exportLines, ...step.lines].join('\n')];
|
|
157
|
+
};
|
|
158
|
+
exports.seedRunArgs = seedRunArgs;
|
|
159
|
+
const BLOCK = 512;
|
|
160
|
+
const octal = (value, length) => value.toString(8).padStart(length - 1, '0') + '\0';
|
|
161
|
+
const splitTarName = (name) => {
|
|
162
|
+
if (Buffer.byteLength(name) <= 100)
|
|
163
|
+
return ['', name];
|
|
164
|
+
for (let index = name.indexOf('/'); index !== -1; index = name.indexOf('/', index + 1)) {
|
|
165
|
+
const prefix = name.slice(0, index);
|
|
166
|
+
const rest = name.slice(index + 1);
|
|
167
|
+
if (Buffer.byteLength(prefix) <= 155 && Buffer.byteLength(rest) <= 100)
|
|
168
|
+
return [prefix, rest];
|
|
169
|
+
}
|
|
170
|
+
throw new Error(`${name} is too long a path for a seed folder.`);
|
|
171
|
+
};
|
|
172
|
+
const tarHeader = (options) => {
|
|
173
|
+
const header = Buffer.alloc(BLOCK);
|
|
174
|
+
const [prefix, name] = splitTarName(options.name);
|
|
175
|
+
header.write(name, 0);
|
|
176
|
+
header.write(octal(options.mode, 8), 100);
|
|
177
|
+
header.write(octal(0, 8), 108);
|
|
178
|
+
header.write(octal(0, 8), 116);
|
|
179
|
+
header.write(octal(options.size, 12), 124);
|
|
180
|
+
header.write(octal(options.mtime, 12), 136);
|
|
181
|
+
header.write(' '.repeat(8), 148);
|
|
182
|
+
header.write(options.directory ? '5' : '0', 156);
|
|
183
|
+
header.write('ustar\0', 257);
|
|
184
|
+
header.write('00', 263);
|
|
185
|
+
header.write(prefix, 345);
|
|
186
|
+
const checksum = header.reduce((sum, byte) => sum + byte, 0);
|
|
187
|
+
header.write(`${checksum.toString(8).padStart(6, '0')}\0 `, 148);
|
|
188
|
+
return header;
|
|
189
|
+
};
|
|
190
|
+
/** A ustar archive of everything under `directory`, built in memory so the host needs no `tar` of its own. */
|
|
191
|
+
const tarDirectory = (directory) => {
|
|
192
|
+
const blocks = [];
|
|
193
|
+
const add = (relative) => {
|
|
194
|
+
const absolute = (0, path_1.join)(directory, relative);
|
|
195
|
+
for (const entry of (0, fs_1.readdirSync)(absolute).sort()) {
|
|
196
|
+
const name = relative === '' ? entry : `${relative}/${entry}`;
|
|
197
|
+
const stats = (0, fs_1.statSync)((0, path_1.join)(directory, name));
|
|
198
|
+
const mtime = Math.floor(stats.mtimeMs / 1000);
|
|
199
|
+
if (stats.isDirectory()) {
|
|
200
|
+
blocks.push(tarHeader({ name: `${name}/`, mode: 0o755, size: 0, mtime, directory: true }));
|
|
201
|
+
add(name);
|
|
202
|
+
}
|
|
203
|
+
else if (stats.isFile()) {
|
|
204
|
+
const contents = (0, fs_1.readFileSync)((0, path_1.join)(directory, name));
|
|
205
|
+
blocks.push(tarHeader({ name, mode: stats.mode & 0o777, size: contents.length, mtime, directory: false }));
|
|
206
|
+
blocks.push(contents, Buffer.alloc((BLOCK - (contents.length % BLOCK)) % BLOCK));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
add('');
|
|
211
|
+
blocks.push(Buffer.alloc(BLOCK * 2));
|
|
212
|
+
return Buffer.concat(blocks);
|
|
213
|
+
};
|
|
214
|
+
exports.tarDirectory = tarDirectory;
|
|
215
|
+
//# sourceMappingURL=seeds.js.map
|