@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.
Files changed (58) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +8 -0
  3. package/package.json +1 -1
  4. package/src/lib/api/api-context.d.ts +15 -0
  5. package/src/lib/api/api-context.js +23 -0
  6. package/src/lib/api/api-context.js.map +1 -0
  7. package/src/lib/api/api-state.d.ts +31 -0
  8. package/src/lib/api/api-state.js +80 -0
  9. package/src/lib/api/api-state.js.map +1 -0
  10. package/src/lib/api/definition.d.ts +37 -1
  11. package/src/lib/api/definition.js +12 -2
  12. package/src/lib/api/definition.js.map +1 -1
  13. package/src/lib/api/doctor.d.ts +16 -0
  14. package/src/lib/api/doctor.js +71 -0
  15. package/src/lib/api/doctor.js.map +1 -0
  16. package/src/lib/api/fingerprint.d.ts +18 -0
  17. package/src/lib/api/fingerprint.js +63 -0
  18. package/src/lib/api/fingerprint.js.map +1 -0
  19. package/src/lib/api/git.d.ts +2 -0
  20. package/src/lib/api/git.js +7 -1
  21. package/src/lib/api/git.js.map +1 -1
  22. package/src/lib/api/help.js +31 -4
  23. package/src/lib/api/help.js.map +1 -1
  24. package/src/lib/api/index.d.ts +4 -0
  25. package/src/lib/api/index.js +4 -0
  26. package/src/lib/api/index.js.map +1 -1
  27. package/src/lib/api/load-definitions.js +3 -0
  28. package/src/lib/api/load-definitions.js.map +1 -1
  29. package/src/lib/api/lock.d.ts +46 -0
  30. package/src/lib/api/lock.js +144 -0
  31. package/src/lib/api/lock.js.map +1 -0
  32. package/src/lib/api/parse-argv.d.ts +12 -0
  33. package/src/lib/api/parse-argv.js +31 -0
  34. package/src/lib/api/parse-argv.js.map +1 -0
  35. package/src/lib/api/run-locked.d.ts +14 -0
  36. package/src/lib/api/run-locked.js +62 -0
  37. package/src/lib/api/run-locked.js.map +1 -0
  38. package/src/lib/api/run-ready.d.ts +60 -0
  39. package/src/lib/api/run-ready.js +212 -0
  40. package/src/lib/api/run-ready.js.map +1 -0
  41. package/src/lib/api/run-snapshot.d.ts +33 -0
  42. package/src/lib/api/run-snapshot.js +124 -0
  43. package/src/lib/api/run-snapshot.js.map +1 -0
  44. package/src/lib/api/run-status.d.ts +9 -0
  45. package/src/lib/api/run-status.js +55 -0
  46. package/src/lib/api/run-status.js.map +1 -0
  47. package/src/lib/api/run.d.ts +1 -1
  48. package/src/lib/api/run.js +192 -9
  49. package/src/lib/api/run.js.map +1 -1
  50. package/src/lib/api/seeds.d.ts +55 -0
  51. package/src/lib/api/seeds.js +215 -0
  52. package/src/lib/api/seeds.js.map +1 -0
  53. package/src/lib/api/snapshot.d.ts +63 -0
  54. package/src/lib/api/snapshot.js +132 -0
  55. package/src/lib/api/snapshot.js.map +1 -0
  56. package/src/lib/api/validate-definition.d.ts +7 -0
  57. package/src/lib/api/validate-definition.js +79 -0
  58. package/src/lib/api/validate-definition.js.map +1 -0
@@ -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
- 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`);
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
- const [command, nameArgument, service] = argv.filter((arg) => !arg.startsWith('-'));
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 code = yield runOneApiCommand({ argv, root, invocation, command, name, api, service });
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
  }
@@ -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