@ethlete/cli 3.0.0-next.17 → 3.0.0-next.19
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 +41 -0
- package/design/css-inline.d.ts +4 -0
- package/design/define-call.ts +228 -3
- package/design/web/env.d.ts +2 -1
- package/design/web/frame.ts +51 -6
- package/package.json +27 -3
- package/src/index.js +26 -4
- package/src/index.js.map +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/clear.js +10 -2
- package/src/lib/api/clear.js.map +1 -1
- package/src/lib/api/definition.d.ts +37 -1
- package/src/lib/api/definition.js +6 -0
- 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 +13 -0
- package/src/lib/api/help.js.map +1 -1
- package/src/lib/api/index.d.ts +3 -0
- package/src/lib/api/index.js +33 -17
- 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 +152 -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/ports.js +12 -4
- package/src/lib/api/ports.js.map +1 -1
- package/src/lib/api/run-locked.d.ts +14 -0
- package/src/lib/api/run-locked.js +70 -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 +220 -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 +132 -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 +134 -12
- package/src/lib/api/run.js.map +1 -1
- package/src/lib/api/snapshot.d.ts +63 -0
- package/src/lib/api/snapshot.js +140 -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/auth/auth-command.js +10 -2
- package/src/lib/auth/auth-command.js.map +1 -1
- package/src/lib/auth/gitlab-token.js +12 -4
- package/src/lib/auth/gitlab-token.js.map +1 -1
- package/src/lib/auth/index.js +18 -5
- package/src/lib/auth/index.js.map +1 -1
- package/src/lib/config/index.js +16 -3
- package/src/lib/config/index.js.map +1 -1
- package/src/lib/design/browser.d.ts +9 -0
- package/src/lib/design/browser.js +37 -0
- package/src/lib/design/browser.js.map +1 -0
- package/src/lib/design/calls-tsconfig.js +6 -2
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/check.d.ts +2 -1
- package/src/lib/design/check.js +151 -69
- package/src/lib/design/check.js.map +1 -1
- package/src/lib/design/design-command.d.ts +1 -1
- package/src/lib/design/design-command.js +58 -3
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/index.js +19 -6
- package/src/lib/design/index.js.map +1 -1
- package/src/lib/design/legacy.d.ts +9 -0
- package/src/lib/design/legacy.js +52 -0
- package/src/lib/design/legacy.js.map +1 -0
- package/src/lib/design/missing-package.d.ts +2 -0
- package/src/lib/design/missing-package.js +15 -0
- package/src/lib/design/missing-package.js.map +1 -0
- package/src/lib/design/new-call.d.ts +11 -0
- package/src/lib/design/new-call.js +124 -0
- package/src/lib/design/new-call.js.map +1 -0
- package/src/lib/design/paths.d.ts +23 -2
- package/src/lib/design/paths.js +1 -1
- package/src/lib/design/paths.js.map +1 -1
- package/src/lib/design/render-fields.d.ts +29 -0
- package/src/lib/design/render-fields.js +31 -0
- package/src/lib/design/render-fields.js.map +1 -0
- package/src/lib/design/render-packages.d.ts +69 -0
- package/src/lib/design/render-packages.js +168 -0
- package/src/lib/design/render-packages.js.map +1 -0
- package/src/lib/design/render-worker.d.ts +1 -0
- package/src/lib/design/render-worker.js +149 -0
- package/src/lib/design/render-worker.js.map +1 -0
- package/src/lib/design/render.d.ts +23 -0
- package/src/lib/design/render.js +119 -0
- package/src/lib/design/render.js.map +1 -0
- package/src/lib/design/serve.d.ts +1 -1
- package/src/lib/design/serve.js +49 -12
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/ssr-shims.d.ts +10 -0
- package/src/lib/design/ssr-shims.js +128 -0
- package/src/lib/design/ssr-shims.js.map +1 -0
- package/src/lib/design/stamp.d.ts +16 -0
- package/src/lib/design/stamp.js +77 -0
- package/src/lib/design/stamp.js.map +1 -0
- package/src/lib/design/status.d.ts +33 -0
- package/src/lib/design/status.js +58 -0
- package/src/lib/design/status.js.map +1 -0
- package/src/lib/design/system-use.d.ts +23 -0
- package/src/lib/design/system-use.js +61 -0
- package/src/lib/design/system-use.js.map +1 -0
- package/src/lib/doctor/index.js +15 -2
- package/src/lib/doctor/index.js.map +1 -1
- package/src/lib/index.js +22 -9
- package/src/lib/index.js.map +1 -1
- package/src/lib/release.js +10 -2
- package/src/lib/release.js.map +1 -1
- package/src/lib/update/agent-setup.js +11 -3
- package/src/lib/update/agent-setup.js.map +1 -1
- package/src/lib/update/ai.js +13 -5
- package/src/lib/update/ai.js.map +1 -1
- package/src/lib/update/index.js +32 -19
- package/src/lib/update/index.js.map +1 -1
- package/src/lib/update/registry.js +10 -2
- package/src/lib/update/registry.js.map +1 -1
- package/src/lib/update/update-command.js +16 -8
- package/src/lib/update/update-command.js.map +1 -1
- package/src/lib/utils.js +11 -3
- package/src/lib/utils.js.map +1 -1
- package/design/web/host.css +0 -494
- package/design/web/host.ts +0 -445
- package/design/web/index.html +0 -11
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.runReadyCommand = exports.waitForHealth = exports.resolveProfileSeeds = exports.HEALTH_RETRY_MS = exports.HEALTH_TIMEOUT_MS = void 0;
|
|
13
|
+
const fs_1 = require("fs");
|
|
14
|
+
const promises_1 = require("timers/promises");
|
|
15
|
+
const api_context_1 = require("./api-context");
|
|
16
|
+
const api_state_1 = require("./api-state");
|
|
17
|
+
const compose_1 = require("./compose");
|
|
18
|
+
const doctor_1 = require("./doctor");
|
|
19
|
+
const fingerprint_1 = require("./fingerprint");
|
|
20
|
+
const lock_1 = require("./lock");
|
|
21
|
+
const resolve_checkout_1 = require("./resolve-checkout");
|
|
22
|
+
const run_locked_1 = require("./run-locked");
|
|
23
|
+
const run_snapshot_1 = require("./run-snapshot");
|
|
24
|
+
const seeds_1 = require("./seeds");
|
|
25
|
+
const suggest_1 = require("./suggest");
|
|
26
|
+
const snapshot_1 = require("./snapshot");
|
|
27
|
+
exports.HEALTH_TIMEOUT_MS = 60000;
|
|
28
|
+
exports.HEALTH_RETRY_MS = 2000;
|
|
29
|
+
const has = (record, key) => Object.prototype.hasOwnProperty.call(record, key);
|
|
30
|
+
/** Each name is `fixtures`, a seed of `.ethlete/seeds/<api>/seeds.json`, or an `exec` entry, checked in that order. */
|
|
31
|
+
const resolveProfileSeeds = (options) => {
|
|
32
|
+
var _a, _b;
|
|
33
|
+
const { root, name, api, profileName, seeds } = options;
|
|
34
|
+
const manifest = (0, seeds_1.readSeedManifest)(root, name);
|
|
35
|
+
const units = [];
|
|
36
|
+
for (const seed of seeds) {
|
|
37
|
+
const fromManifest = manifest.ok && (seed === 'fixtures' ? manifest.value.fixtures !== undefined : has(manifest.value.seeds, seed))
|
|
38
|
+
? (0, seeds_1.seedSteps)({
|
|
39
|
+
manifest: manifest.value,
|
|
40
|
+
names: seed === 'fixtures' ? [] : [seed],
|
|
41
|
+
withFixtures: seed === 'fixtures',
|
|
42
|
+
api: name,
|
|
43
|
+
})
|
|
44
|
+
: undefined;
|
|
45
|
+
if (fromManifest === null || fromManifest === void 0 ? void 0 : fromManifest.ok) {
|
|
46
|
+
const last = units[units.length - 1];
|
|
47
|
+
if ((last === null || last === void 0 ? void 0 : last.kind) === 'steps')
|
|
48
|
+
last.steps.push(...fromManifest.value);
|
|
49
|
+
else
|
|
50
|
+
units.push({ kind: 'steps', steps: [...fromManifest.value] });
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (((_a = api.exec) === null || _a === void 0 ? void 0 : _a[seed]) !== undefined) {
|
|
54
|
+
units.push({ kind: 'exec', name: seed });
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const candidates = [
|
|
58
|
+
...(manifest.ok && manifest.value.fixtures ? ['fixtures'] : []),
|
|
59
|
+
...(manifest.ok ? Object.keys(manifest.value.seeds) : []),
|
|
60
|
+
...Object.keys((_b = api.exec) !== null && _b !== void 0 ? _b : {}),
|
|
61
|
+
];
|
|
62
|
+
return {
|
|
63
|
+
ok: false,
|
|
64
|
+
problem: `The ${profileName} profile of the ${name} API names "${seed}", which is no seed, fixtures list or exec entry.` +
|
|
65
|
+
`${(0, suggest_1.didYouMean)(seed, candidates)}\n\nKnown: ${candidates.length > 0 ? candidates.join(', ') : 'none'}` +
|
|
66
|
+
(manifest.ok ? '' : `\n\n${manifest.problem}`),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { ok: true, value: units };
|
|
70
|
+
};
|
|
71
|
+
exports.resolveProfileSeeds = resolveProfileSeeds;
|
|
72
|
+
/** GETs `url` until it answers `expect`, every `retryMs` for up to `timeoutMs`. */
|
|
73
|
+
const waitForHealth = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
+
const { url, expect, fetch: get = fetch, sleep = (ms) => __awaiter(void 0, void 0, void 0, function* () { return void (yield (0, promises_1.setTimeout)(ms)); }), now = Date.now, timeoutMs = exports.HEALTH_TIMEOUT_MS, retryMs = exports.HEALTH_RETRY_MS, } = options;
|
|
75
|
+
const startedAt = now();
|
|
76
|
+
for (;;) {
|
|
77
|
+
let last;
|
|
78
|
+
try {
|
|
79
|
+
const left = Math.max(1, timeoutMs - (now() - startedAt));
|
|
80
|
+
const response = yield get(url, { signal: AbortSignal.timeout(Math.min(retryMs * 5, left)) });
|
|
81
|
+
if (response.status === expect)
|
|
82
|
+
return { ok: true };
|
|
83
|
+
last = `status ${response.status}`;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
last = error.message;
|
|
87
|
+
}
|
|
88
|
+
if (now() - startedAt >= timeoutMs)
|
|
89
|
+
return { ok: false, last };
|
|
90
|
+
yield sleep(retryMs);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
exports.waitForHealth = waitForHealth;
|
|
94
|
+
const step = (text) => console.error(`\n==> ${text}`);
|
|
95
|
+
/** Runs `ready <api> --profile <p>` and returns the exit code. */
|
|
96
|
+
const runReadyCommand = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
97
|
+
var _a, _b, _c, _d, _e;
|
|
98
|
+
const { root, name, api, invocation, profile: profileName, wait, now = Date.now } = options;
|
|
99
|
+
const startedAt = now();
|
|
100
|
+
const profileNames = Object.keys((_a = api.profiles) !== null && _a !== void 0 ? _a : {});
|
|
101
|
+
const profile = profileName === undefined ? undefined : (_b = api.profiles) === null || _b === void 0 ? void 0 : _b[profileName];
|
|
102
|
+
if (profileName === undefined || profile === undefined) {
|
|
103
|
+
console.error((profileName === undefined
|
|
104
|
+
? `ready needs a profile: ${invocation} ready ${name} --profile <profile>.`
|
|
105
|
+
: `The ${name} API has no profile "${profileName}".${(0, suggest_1.didYouMean)(profileName, profileNames)}`) +
|
|
106
|
+
`\n\nProfiles: ${profileNames.length > 0 ? profileNames.join(', ') : 'none'}`);
|
|
107
|
+
return 1;
|
|
108
|
+
}
|
|
109
|
+
const units = (0, exports.resolveProfileSeeds)({ root, name, api, profileName, seeds: profile.seeds });
|
|
110
|
+
if (!units.ok) {
|
|
111
|
+
console.error(units.problem);
|
|
112
|
+
return 1;
|
|
113
|
+
}
|
|
114
|
+
const context = (0, api_context_1.stateDirectoryOf)({ root, name, api });
|
|
115
|
+
if (!context.ok) {
|
|
116
|
+
console.error((0, resolve_checkout_1.checkoutProblem)({ failure: context, name, invocation }));
|
|
117
|
+
return 1;
|
|
118
|
+
}
|
|
119
|
+
const tool = (0, compose_1.resolveComposeTool)();
|
|
120
|
+
if (!tool) {
|
|
121
|
+
console.error(`No compose tool found. Tried: ${(0, compose_1.composeToolNames)().join(', ')}.`);
|
|
122
|
+
return 1;
|
|
123
|
+
}
|
|
124
|
+
const { checkout, directory } = context;
|
|
125
|
+
const env = Object.assign(Object.assign(Object.assign({}, (0, compose_1.engineEnv)(tool.engine)), process.env), (0, api_context_1.definedEntries)((_d = (_c = api.env) === null || _c === void 0 ? void 0 : _c.call(api)) !== null && _d !== void 0 ? _d : {}));
|
|
126
|
+
let token;
|
|
127
|
+
if ((0, lock_1.heldLockFromEnv)(directory)) {
|
|
128
|
+
step('Using the API lock this command runs under');
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
step('Taking the API lock');
|
|
132
|
+
const acquired = yield (0, lock_1.acquireApiLock)({
|
|
133
|
+
directory,
|
|
134
|
+
command: `${invocation} ready ${name} --profile ${profileName}`,
|
|
135
|
+
cwd: root,
|
|
136
|
+
wait,
|
|
137
|
+
system: options.lockSystem,
|
|
138
|
+
onHeld: (holder) => console.error(`Waiting for the API lock, held by ${(0, lock_1.describeApiLock)(holder, directory)}.`),
|
|
139
|
+
});
|
|
140
|
+
if (!acquired.ok) {
|
|
141
|
+
console.error(`Gave up after ${wait} s. The API lock is held by ${(0, lock_1.describeApiLock)(acquired.holder, directory)}.`);
|
|
142
|
+
return run_locked_1.LOCK_TIMEOUT_EXIT_CODE;
|
|
143
|
+
}
|
|
144
|
+
token = acquired.lock.token;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
step(`Starting ${name}`);
|
|
148
|
+
const upCode = yield options.up();
|
|
149
|
+
if (upCode !== 0)
|
|
150
|
+
return upCode;
|
|
151
|
+
step('Checking the API (doctor --fix)');
|
|
152
|
+
if (!(0, doctor_1.runDoctor)({ name, api, tool, cwd: checkout.composePath, env, invocation, fix: true }).ok)
|
|
153
|
+
return 1;
|
|
154
|
+
const fingerprint = (0, fingerprint_1.fingerprintApi)({
|
|
155
|
+
root,
|
|
156
|
+
name,
|
|
157
|
+
repoPath: checkout.repoPath,
|
|
158
|
+
migrationsDir: api.migrationsDir,
|
|
159
|
+
seeds: profile.seeds,
|
|
160
|
+
});
|
|
161
|
+
const state = (0, api_state_1.readApiState)(directory);
|
|
162
|
+
const [binary, ...prefix] = tool.compose;
|
|
163
|
+
const compose = { binary, prefix, cwd: checkout.composePath, env };
|
|
164
|
+
const file = (0, snapshot_1.snapshotFilePath)({ root, api: name, name: profileName, fingerprint });
|
|
165
|
+
if (state && !state.dirty && state.profile === profileName && state.fingerprint === fingerprint) {
|
|
166
|
+
step(`Already ready: ${profileName} at ${fingerprint}`);
|
|
167
|
+
}
|
|
168
|
+
else if (profile.snapshot && (0, fs_1.existsSync)(file)) {
|
|
169
|
+
step(`Restoring the ${profileName} snapshot ${fingerprint}`);
|
|
170
|
+
const restored = yield (0, snapshot_1.restoreSnapshot)({
|
|
171
|
+
file,
|
|
172
|
+
snapshot: profile.snapshot,
|
|
173
|
+
compose,
|
|
174
|
+
state: { directory, profile: profileName, fingerprint },
|
|
175
|
+
});
|
|
176
|
+
if (restored !== 0)
|
|
177
|
+
return restored;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
(0, api_state_1.markApiStateDirty)(directory);
|
|
181
|
+
for (const unit of units.value) {
|
|
182
|
+
step(`Seeding ${unit.kind === 'exec' ? unit.name : unit.steps.map(({ label }) => label).join(', ')}`);
|
|
183
|
+
const seeded = yield options.runSeeds(unit);
|
|
184
|
+
if (seeded !== 0)
|
|
185
|
+
return seeded;
|
|
186
|
+
}
|
|
187
|
+
if (profile.snapshot) {
|
|
188
|
+
step(`Saving the ${profileName} snapshot ${fingerprint}`);
|
|
189
|
+
(0, run_snapshot_1.warnUnlessSnapshotIgnored)(root, file);
|
|
190
|
+
const saved = yield (0, snapshot_1.saveSnapshot)({ file, snapshot: profile.snapshot, compose });
|
|
191
|
+
if (saved !== 0)
|
|
192
|
+
return saved;
|
|
193
|
+
}
|
|
194
|
+
(0, api_state_1.writeApiState)({ directory, state: { profile: profileName, fingerprint, dirty: false } });
|
|
195
|
+
}
|
|
196
|
+
if (profile.health) {
|
|
197
|
+
const expect = (_e = profile.health.expect) !== null && _e !== void 0 ? _e : 200;
|
|
198
|
+
step(`Waiting for ${profile.health.url} to answer ${expect}`);
|
|
199
|
+
const health = yield (0, exports.waitForHealth)({
|
|
200
|
+
url: profile.health.url,
|
|
201
|
+
expect,
|
|
202
|
+
fetch: options.fetch,
|
|
203
|
+
sleep: options.sleep,
|
|
204
|
+
now,
|
|
205
|
+
});
|
|
206
|
+
if (!health.ok) {
|
|
207
|
+
console.error(`${profile.health.url} did not answer ${expect} within ${exports.HEALTH_TIMEOUT_MS / 1000} s. Last: ${health.last}.`);
|
|
208
|
+
return 1;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
console.log(`${name} is ready: profile ${profileName}, fingerprint ${fingerprint}, in ${((now() - startedAt) / 1000).toFixed(1)} s.`);
|
|
212
|
+
return 0;
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
if (token !== undefined)
|
|
216
|
+
(0, lock_1.releaseApiLock)(directory, token);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
exports.runReadyCommand = runReadyCommand;
|
|
220
|
+
//# sourceMappingURL=run-ready.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-ready.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/run-ready.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ApiDefinition, ApiProfile } from './definition';
|
|
2
|
+
type Parsed<T> = {
|
|
3
|
+
ok: true;
|
|
4
|
+
value: T;
|
|
5
|
+
} | {
|
|
6
|
+
ok: false;
|
|
7
|
+
problem: string;
|
|
8
|
+
};
|
|
9
|
+
/** `requested`, or the one profile with a `snapshot` block. */
|
|
10
|
+
export declare const chooseSnapshotProfile: (options: {
|
|
11
|
+
name: string;
|
|
12
|
+
api: ApiDefinition;
|
|
13
|
+
requested: string | undefined;
|
|
14
|
+
}) => Parsed<{
|
|
15
|
+
profileName: string;
|
|
16
|
+
profile: ApiProfile & {
|
|
17
|
+
snapshot: NonNullable<ApiProfile["snapshot"]>;
|
|
18
|
+
};
|
|
19
|
+
}>;
|
|
20
|
+
export declare const warnUnlessSnapshotIgnored: (root: string, file: string) => void;
|
|
21
|
+
export type RunSnapshotOptions = {
|
|
22
|
+
root: string;
|
|
23
|
+
name: string;
|
|
24
|
+
api: ApiDefinition;
|
|
25
|
+
invocation: string;
|
|
26
|
+
action: string | undefined;
|
|
27
|
+
snapshotName: string | undefined;
|
|
28
|
+
profile: string | undefined;
|
|
29
|
+
wait: number | undefined;
|
|
30
|
+
};
|
|
31
|
+
/** Runs `snapshot save|restore <api> <name>` and returns the exit code. */
|
|
32
|
+
export declare const runSnapshotCommand: (options: RunSnapshotOptions) => Promise<number>;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.runSnapshotCommand = exports.warnUnlessSnapshotIgnored = exports.chooseSnapshotProfile = void 0;
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const api_context_1 = require("./api-context");
|
|
15
|
+
const fingerprint_1 = require("./fingerprint");
|
|
16
|
+
const git_1 = require("./git");
|
|
17
|
+
const lock_1 = require("./lock");
|
|
18
|
+
const run_locked_1 = require("./run-locked");
|
|
19
|
+
const resolve_checkout_1 = require("./resolve-checkout");
|
|
20
|
+
const compose_1 = require("./compose");
|
|
21
|
+
const snapshot_1 = require("./snapshot");
|
|
22
|
+
/** `requested`, or the one profile with a `snapshot` block. */
|
|
23
|
+
const chooseSnapshotProfile = (options) => {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
const { name, api, requested } = options;
|
|
26
|
+
const profiles = Object.entries((_a = api.profiles) !== null && _a !== void 0 ? _a : {});
|
|
27
|
+
const withSnapshot = profiles.filter(([, profile]) => profile.snapshot !== undefined);
|
|
28
|
+
const pick = (profileName, profile) => {
|
|
29
|
+
if (!profile) {
|
|
30
|
+
return {
|
|
31
|
+
ok: false,
|
|
32
|
+
problem: `The ${name} API has no profile "${profileName}". Profiles: ${profiles.map(([key]) => key).join(', ') || 'none'}`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return profile.snapshot
|
|
36
|
+
? { ok: true, value: { profileName, profile: Object.assign(Object.assign({}, profile), { snapshot: profile.snapshot }) } }
|
|
37
|
+
: { ok: false, problem: `The profile "${profileName}" of the ${name} API declares no snapshot.` };
|
|
38
|
+
};
|
|
39
|
+
if (requested !== undefined)
|
|
40
|
+
return pick(requested, (_b = api.profiles) === null || _b === void 0 ? void 0 : _b[requested]);
|
|
41
|
+
if (withSnapshot.length === 1) {
|
|
42
|
+
const [[profileName, profile]] = withSnapshot;
|
|
43
|
+
return pick(profileName, profile);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
ok: false,
|
|
47
|
+
problem: withSnapshot.length === 0
|
|
48
|
+
? `The ${name} API has no profile with a snapshot block.`
|
|
49
|
+
: `The ${name} API has several profiles with a snapshot block. Choose one with --profile <name>: ${withSnapshot
|
|
50
|
+
.map(([key]) => key)
|
|
51
|
+
.join(', ')}`,
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
exports.chooseSnapshotProfile = chooseSnapshotProfile;
|
|
55
|
+
const warnUnlessSnapshotIgnored = (root, file) => {
|
|
56
|
+
if ((0, git_1.ignoredByGit)(root, (0, path_1.relative)(root, file)) === false) {
|
|
57
|
+
console.warn(`${(0, path_1.relative)(root, file)} is not gitignored, so a snapshot could be committed. ` +
|
|
58
|
+
`Add "/.ethlete/snapshots/" to .gitignore.\n`);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.warnUnlessSnapshotIgnored = warnUnlessSnapshotIgnored;
|
|
62
|
+
/** Runs `snapshot save|restore <api> <name>` and returns the exit code. */
|
|
63
|
+
const runSnapshotCommand = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
const { root, name, api, invocation, action, snapshotName, profile: requested, wait } = options;
|
|
66
|
+
const usage = `${invocation} snapshot save|restore <api> <name> [--profile <profile>]`;
|
|
67
|
+
if ((action !== 'save' && action !== 'restore') || snapshotName === undefined) {
|
|
68
|
+
console.error(`snapshot needs an action and a name: ${usage}`);
|
|
69
|
+
return 1;
|
|
70
|
+
}
|
|
71
|
+
if (!snapshot_1.SNAPSHOT_NAME.test(snapshotName)) {
|
|
72
|
+
console.error(`"${snapshotName}" is not a snapshot name. Use letters, digits, ".", "-" and "_".`);
|
|
73
|
+
return 1;
|
|
74
|
+
}
|
|
75
|
+
const chosen = (0, exports.chooseSnapshotProfile)({ name, api, requested });
|
|
76
|
+
if (!chosen.ok) {
|
|
77
|
+
console.error(chosen.problem);
|
|
78
|
+
return 1;
|
|
79
|
+
}
|
|
80
|
+
const context = (0, api_context_1.stateDirectoryOf)({ root, name, api, needs: 'env' });
|
|
81
|
+
if (!context.ok) {
|
|
82
|
+
console.error((0, resolve_checkout_1.checkoutProblem)({ failure: context, name, invocation }));
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
const tool = (0, compose_1.resolveComposeTool)();
|
|
86
|
+
if (!tool) {
|
|
87
|
+
console.error(`No compose tool found. Tried: ${(0, compose_1.composeToolNames)().join(', ')}.`);
|
|
88
|
+
return 1;
|
|
89
|
+
}
|
|
90
|
+
const { profileName, profile } = chosen.value;
|
|
91
|
+
const { checkout, directory } = context;
|
|
92
|
+
const fingerprint = (0, fingerprint_1.fingerprintApi)({
|
|
93
|
+
root,
|
|
94
|
+
name,
|
|
95
|
+
repoPath: checkout.repoPath,
|
|
96
|
+
migrationsDir: api.migrationsDir,
|
|
97
|
+
seeds: profile.seeds,
|
|
98
|
+
});
|
|
99
|
+
const file = (0, snapshot_1.snapshotFilePath)({ root, api: name, name: snapshotName, fingerprint });
|
|
100
|
+
const [binary, ...prefix] = tool.compose;
|
|
101
|
+
const compose = {
|
|
102
|
+
binary,
|
|
103
|
+
prefix,
|
|
104
|
+
cwd: checkout.composePath,
|
|
105
|
+
env: Object.assign(Object.assign(Object.assign({}, (0, compose_1.engineEnv)(tool.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 : {})),
|
|
106
|
+
};
|
|
107
|
+
(0, exports.warnUnlessSnapshotIgnored)(root, file);
|
|
108
|
+
if (action === 'save')
|
|
109
|
+
return (0, snapshot_1.saveSnapshot)({ file, snapshot: profile.snapshot, compose });
|
|
110
|
+
const state = { directory, profile: profileName, fingerprint };
|
|
111
|
+
if ((0, lock_1.heldLockFromEnv)(directory))
|
|
112
|
+
return (0, snapshot_1.restoreSnapshot)({ file, snapshot: profile.snapshot, compose, state });
|
|
113
|
+
const acquired = yield (0, lock_1.acquireApiLock)({
|
|
114
|
+
directory,
|
|
115
|
+
command: `${invocation} snapshot restore ${name} ${snapshotName}`,
|
|
116
|
+
cwd: root,
|
|
117
|
+
wait,
|
|
118
|
+
onHeld: (holder) => console.error(`Waiting for the API lock, held by ${(0, lock_1.describeApiLock)(holder, directory)}.`),
|
|
119
|
+
});
|
|
120
|
+
if (!acquired.ok) {
|
|
121
|
+
console.error(`Gave up after ${wait} s. The API lock is held by ${(0, lock_1.describeApiLock)(acquired.holder, directory)}.`);
|
|
122
|
+
return run_locked_1.LOCK_TIMEOUT_EXIT_CODE;
|
|
123
|
+
}
|
|
124
|
+
try {
|
|
125
|
+
return yield (0, snapshot_1.restoreSnapshot)({ file, snapshot: profile.snapshot, compose, state });
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
(0, lock_1.releaseApiLock)(directory, acquired.lock.token);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
exports.runSnapshotCommand = runSnapshotCommand;
|
|
132
|
+
//# sourceMappingURL=run-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-snapshot.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/run-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ApiDefinition } from './definition';
|
|
2
|
+
/** Prints profile, fingerprints, dirty flag, snapshot and lock holder of one API. Always exit 0 unless the checkout is missing. */
|
|
3
|
+
export declare const runStatusCommand: (options: {
|
|
4
|
+
root: string;
|
|
5
|
+
name: string;
|
|
6
|
+
api: ApiDefinition;
|
|
7
|
+
invocation: string;
|
|
8
|
+
profile: string | undefined;
|
|
9
|
+
}) => 0 | 1;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runStatusCommand = void 0;
|
|
4
|
+
const api_context_1 = require("./api-context");
|
|
5
|
+
const api_state_1 = require("./api-state");
|
|
6
|
+
const fingerprint_1 = require("./fingerprint");
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const lock_1 = require("./lock");
|
|
9
|
+
const resolve_checkout_1 = require("./resolve-checkout");
|
|
10
|
+
const snapshot_1 = require("./snapshot");
|
|
11
|
+
/** Prints profile, fingerprints, dirty flag, snapshot and lock holder of one API. Always exit 0 unless the checkout is missing. */
|
|
12
|
+
const runStatusCommand = (options) => {
|
|
13
|
+
var _a, _b, _c;
|
|
14
|
+
const { root, name, api, invocation, profile: requested } = options;
|
|
15
|
+
const context = (0, api_context_1.stateDirectoryOf)({ root, name, api });
|
|
16
|
+
if (!context.ok) {
|
|
17
|
+
console.error((0, resolve_checkout_1.checkoutProblem)({ failure: context, name, invocation }));
|
|
18
|
+
return 1;
|
|
19
|
+
}
|
|
20
|
+
const { checkout, directory } = context;
|
|
21
|
+
const state = (0, api_state_1.readApiState)(directory);
|
|
22
|
+
const profileName = (_a = requested !== null && requested !== void 0 ? requested : state === null || state === void 0 ? void 0 : state.profile) !== null && _a !== void 0 ? _a : undefined;
|
|
23
|
+
const profile = profileName === undefined ? undefined : (_b = api.profiles) === null || _b === void 0 ? void 0 : _b[profileName];
|
|
24
|
+
const current = profile
|
|
25
|
+
? (0, fingerprint_1.fingerprintApi)({
|
|
26
|
+
root,
|
|
27
|
+
name,
|
|
28
|
+
repoPath: checkout.repoPath,
|
|
29
|
+
migrationsDir: api.migrationsDir,
|
|
30
|
+
seeds: profile.seeds,
|
|
31
|
+
})
|
|
32
|
+
: undefined;
|
|
33
|
+
const snapshots = current === undefined ? [] : (0, snapshot_1.listSnapshots)({ root, api: name, fingerprint: current });
|
|
34
|
+
const lock = (0, lock_1.readApiLock)(directory);
|
|
35
|
+
const rows = [
|
|
36
|
+
['profile', profileName !== null && profileName !== void 0 ? profileName : 'none'],
|
|
37
|
+
['stored', (_c = state === null || state === void 0 ? void 0 : state.fingerprint) !== null && _c !== void 0 ? _c : 'none'],
|
|
38
|
+
['current', current !== null && current !== void 0 ? current : (profileName === undefined ? 'none' : `no profile "${profileName}"`)],
|
|
39
|
+
['dirty', state ? (state.dirty ? 'yes' : 'no') : 'unknown'],
|
|
40
|
+
['snapshot', snapshots.length > 0 ? snapshots.join(', ') : 'none for the current fingerprint'],
|
|
41
|
+
[
|
|
42
|
+
'lock',
|
|
43
|
+
lock
|
|
44
|
+
? (0, lock_1.describeApiLock)(lock, directory)
|
|
45
|
+
: (0, fs_1.existsSync)((0, lock_1.lockPath)(directory))
|
|
46
|
+
? `unreadable (${(0, lock_1.lockPath)(directory)})`
|
|
47
|
+
: 'free',
|
|
48
|
+
],
|
|
49
|
+
];
|
|
50
|
+
const width = Math.max(...rows.map(([label]) => label.length));
|
|
51
|
+
console.log(rows.map(([label, value]) => ` ${label.padEnd(width)} ${value}`).join('\n'));
|
|
52
|
+
return 0;
|
|
53
|
+
};
|
|
54
|
+
exports.runStatusCommand = runStatusCommand;
|
|
55
|
+
//# sourceMappingURL=run-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-status.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/run-status.ts"],"names":[],"mappings":";;;AAAA,+CAAiD;AACjD,2CAA2C;AAE3C,+CAA+C;AAC/C,2BAAgC;AAChC,iCAAgE;AAChE,yDAAqD;AACrD,yCAA2C;AAE3C,mIAAmI;AAC5H,MAAM,gBAAgB,GAAG,CAAC,OAMhC,EAAE,EAAE;;IACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACpE,MAAM,OAAO,GAAG,IAAA,8BAAgB,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAEtD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,IAAA,kCAAe,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAEvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,KAAK,GAAG,IAAA,wBAAY,EAAC,SAAS,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,MAAA,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,SAAS,CAAC;IAC7D,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAA,GAAG,CAAC,QAAQ,0CAAG,WAAW,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,OAAO;QACrB,CAAC,CAAC,IAAA,4BAAc,EAAC;YACb,IAAI;YACJ,IAAI;YACJ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IACxG,MAAM,IAAI,GAAG,IAAA,kBAAW,EAAC,SAAS,CAAC,CAAC;IACpC,MAAM,IAAI,GAAuB;QAC/B,CAAC,SAAS,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,MAAM,CAAC;QAClC,CAAC,QAAQ,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,mCAAI,MAAM,CAAC;QACxC,CAAC,SAAS,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,WAAW,GAAG,CAAC,CAAC;QAC5F,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC;QAC9F;YACE,MAAM;YACN,IAAI;gBACF,CAAC,CAAC,IAAA,sBAAe,EAAC,IAAI,EAAE,SAAS,CAAC;gBAClC,CAAC,CAAC,IAAA,eAAU,EAAC,IAAA,eAAQ,EAAC,SAAS,CAAC,CAAC;oBAC/B,CAAC,CAAC,eAAe,IAAA,eAAQ,EAAC,SAAS,CAAC,GAAG;oBACvC,CAAC,CAAC,MAAM;SACb;KACF,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3F,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAnDW,QAAA,gBAAgB,oBAmD3B"}
|
package/src/lib/api/run.d.ts
CHANGED
|
@@ -7,4 +7,4 @@ export type RunApiCommandOptions = {
|
|
|
7
7
|
/** How the caller is invoked, used in the usage line. */
|
|
8
8
|
invocation?: string;
|
|
9
9
|
};
|
|
10
|
-
export declare const runApiCommand: ({ apis, argv, root, invocation, }: RunApiCommandOptions) => Promise<number>;
|
|
10
|
+
export declare const runApiCommand: ({ apis, argv: rawArgv, root, invocation, }: RunApiCommandOptions) => Promise<number>;
|