@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,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.markApiStateDirty = exports.writeApiState = exports.readApiState = exports.apiStateDirectory = exports.composeProjectName = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const os_1 = require("os");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const COMPOSE_FILE_NAMES = ['compose.yaml', 'compose.yml', 'docker-compose.yaml', 'docker-compose.yml'];
|
|
9
|
+
const normalizeProjectName = (name) => name.toLowerCase().replace(/[^a-z0-9_-]/g, '');
|
|
10
|
+
const readText = (path) => ((0, fs_1.existsSync)(path) ? (0, fs_1.readFileSync)(path, 'utf8') : undefined);
|
|
11
|
+
const literal = (value) => (value === undefined || value.includes('$') ? undefined : value);
|
|
12
|
+
/**
|
|
13
|
+
* The compose project name the container engine gives this compose directory, resolved the way compose
|
|
14
|
+
* does: `COMPOSE_PROJECT_NAME` from the environment or the directory's `.env`, then the top-level
|
|
15
|
+
* `name:` of the compose file, then the directory name.
|
|
16
|
+
*/
|
|
17
|
+
const composeProjectName = (options) => {
|
|
18
|
+
var _a, _b, _c, _d;
|
|
19
|
+
const { composePath, env = process.env } = options;
|
|
20
|
+
const fromDotEnv = (_b = (_a = readText((0, path_1.join)(composePath, '.env'))) === null || _a === void 0 ? void 0 : _a.match(/^\s*COMPOSE_PROJECT_NAME\s*=\s*["']?([^"'\s#]+)/m)) === null || _b === void 0 ? void 0 : _b[1];
|
|
21
|
+
const composeFile = COMPOSE_FILE_NAMES.map((name) => (0, path_1.join)(composePath, name)).find((path) => (0, fs_1.existsSync)(path));
|
|
22
|
+
const fromComposeFile = composeFile ? (_d = (_c = readText(composeFile)) === null || _c === void 0 ? void 0 : _c.match(/^name:\s*["']?([^"'\s#]+)/m)) === null || _d === void 0 ? void 0 : _d[1] : undefined;
|
|
23
|
+
const name = [env['COMPOSE_PROJECT_NAME'], literal(fromDotEnv), literal(fromComposeFile)]
|
|
24
|
+
.map((candidate) => (candidate ? normalizeProjectName(candidate) : ''))
|
|
25
|
+
.find((candidate) => candidate !== '');
|
|
26
|
+
return name !== null && name !== void 0 ? name : normalizeProjectName((0, path_1.basename)(composePath));
|
|
27
|
+
};
|
|
28
|
+
exports.composeProjectName = composeProjectName;
|
|
29
|
+
/** Machine-wide directory of one compose project's `state.json` and `lock.json`. */
|
|
30
|
+
const apiStateDirectory = (options) => {
|
|
31
|
+
const { project, env = process.env } = options;
|
|
32
|
+
const stateHome = env['XDG_STATE_HOME'] || (0, path_1.join)((0, os_1.homedir)(), '.local/state');
|
|
33
|
+
return (0, path_1.join)(stateHome, 'ethlete', 'api', project);
|
|
34
|
+
};
|
|
35
|
+
exports.apiStateDirectory = apiStateDirectory;
|
|
36
|
+
const statePath = (directory) => (0, path_1.join)(directory, 'state.json');
|
|
37
|
+
/** The stored state, or `undefined` when there is none or it cannot be read. */
|
|
38
|
+
const readApiState = (directory) => {
|
|
39
|
+
try {
|
|
40
|
+
const value = JSON.parse((0, fs_1.readFileSync)(statePath(directory), 'utf8'));
|
|
41
|
+
return {
|
|
42
|
+
profile: typeof value.profile === 'string' ? value.profile : null,
|
|
43
|
+
fingerprint: typeof value.fingerprint === 'string' ? value.fingerprint : null,
|
|
44
|
+
dirty: value.dirty === true,
|
|
45
|
+
updatedAt: typeof value.updatedAt === 'string' ? value.updatedAt : '',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
catch (_a) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.readApiState = readApiState;
|
|
53
|
+
/** Replaces `state.json` in one rename, so a reader never sees half a file. */
|
|
54
|
+
const writeApiState = (options) => {
|
|
55
|
+
const { directory, state, now = new Date() } = options;
|
|
56
|
+
const written = Object.assign(Object.assign({}, state), { updatedAt: now.toISOString() });
|
|
57
|
+
const temporary = (0, path_1.join)(directory, `state.json.${(0, crypto_1.randomUUID)()}.tmp`);
|
|
58
|
+
(0, fs_1.mkdirSync)(directory, { recursive: true });
|
|
59
|
+
try {
|
|
60
|
+
(0, fs_1.writeFileSync)(temporary, `${JSON.stringify(written, null, 2)}\n`, 'utf8');
|
|
61
|
+
(0, fs_1.renameSync)(temporary, statePath(directory));
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
(0, fs_1.rmSync)(temporary, { force: true });
|
|
65
|
+
}
|
|
66
|
+
return written;
|
|
67
|
+
};
|
|
68
|
+
exports.writeApiState = writeApiState;
|
|
69
|
+
/** Keeps the stored profile and fingerprint, so `status` can still say what the data was before. */
|
|
70
|
+
const markApiStateDirty = (directory, now = new Date()) => {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
const previous = (0, exports.readApiState)(directory);
|
|
73
|
+
return (0, exports.writeApiState)({
|
|
74
|
+
directory,
|
|
75
|
+
state: { profile: (_a = previous === null || previous === void 0 ? void 0 : previous.profile) !== null && _a !== void 0 ? _a : null, fingerprint: (_b = previous === null || previous === void 0 ? void 0 : previous.fingerprint) !== null && _b !== void 0 ? _b : null, dirty: true },
|
|
76
|
+
now,
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
exports.markApiStateDirty = markApiStateDirty;
|
|
80
|
+
//# sourceMappingURL=api-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-state.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/api-state.ts"],"names":[],"mappings":"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"}
|
package/src/lib/api/clear.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
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
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.clearApiCheckouts = exports.planApiClear = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
13
|
const fs_1 = require("fs");
|
|
6
14
|
const utils_1 = require("../utils");
|
|
7
15
|
const git_1 = require("./git");
|
|
@@ -82,7 +90,7 @@ exports.planApiClear = planApiClear;
|
|
|
82
90
|
* Removes the managed checkout of each named API, after one question that defaults to no. It offers to
|
|
83
91
|
* take down the containers that still exist, and refuses an API with work only this checkout holds.
|
|
84
92
|
*/
|
|
85
|
-
const clearApiCheckouts = (options) =>
|
|
93
|
+
const clearApiCheckouts = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
86
94
|
const { names, invocation, takeDown } = options;
|
|
87
95
|
const targets = (0, exports.planApiClear)(options);
|
|
88
96
|
const blocked = targets.filter(({ blockers }) => blockers.length > 0);
|
package/src/lib/api/clear.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/clear.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/clear.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,45 @@ export type ApiDefinition = {
|
|
|
24
24
|
env?: () => Record<string, string | undefined>;
|
|
25
25
|
/** Named commands run in `execService`, for example `{ install: ['composer', 'install'] }`. */
|
|
26
26
|
exec?: Record<string, string[]>;
|
|
27
|
+
/** Ordered preconditions checked by `doctor`. A later check may rely on an earlier one. */
|
|
28
|
+
checks?: ApiCheck[];
|
|
29
|
+
/** Named states `ready` and `snapshot` work with. */
|
|
30
|
+
profiles?: Record<string, ApiProfile>;
|
|
31
|
+
/** Migrations folder relative to the API checkout root. Its contents are part of the state fingerprint. */
|
|
32
|
+
migrationsDir?: string;
|
|
33
|
+
};
|
|
34
|
+
/** One precondition of the API's local setup, run in order by `doctor`. */
|
|
35
|
+
export type ApiCheck = {
|
|
36
|
+
/** Unique label printed in the `doctor` report. */
|
|
37
|
+
name: string;
|
|
38
|
+
/** One shell line that exits 0 when the check passes. */
|
|
39
|
+
check: string;
|
|
40
|
+
/** One shell line that repairs a failed check, run by `doctor --fix`. */
|
|
41
|
+
fix?: string;
|
|
42
|
+
/** Service the lines run in. Defaults to `execService`. */
|
|
43
|
+
service?: string;
|
|
44
|
+
/** Run on the host in `composeDir` with the API's `env` instead of in a container. */
|
|
45
|
+
host?: boolean;
|
|
46
|
+
};
|
|
47
|
+
/** A named state the API can be brought into. */
|
|
48
|
+
export type ApiProfile = {
|
|
49
|
+
/** Seed names from `seeds.json` run in order, where `fixtures` stands for the fixtures list. */
|
|
50
|
+
seeds: string[];
|
|
51
|
+
/** Url that must answer with `expect` (default 200) before the profile counts as ready. */
|
|
52
|
+
health?: {
|
|
53
|
+
url: string;
|
|
54
|
+
expect?: number;
|
|
55
|
+
};
|
|
56
|
+
/** How to dump and restore the databases: `save` writes to stdout, `restore` reads stdin, both see `$DATABASES`. */
|
|
57
|
+
snapshot?: {
|
|
58
|
+
service: string;
|
|
59
|
+
databases: string[];
|
|
60
|
+
save: string;
|
|
61
|
+
restore: string;
|
|
62
|
+
};
|
|
27
63
|
};
|
|
28
64
|
export type ApiDefinitions = Record<string, ApiDefinition>;
|
|
29
|
-
export declare const BUILT_IN_API_COMMANDS: readonly ["up", "down", "logs", "shell", "clone", "clear", "checkout", "pull", "setup"];
|
|
65
|
+
export declare const BUILT_IN_API_COMMANDS: readonly ["up", "down", "logs", "shell", "clone", "clear", "checkout", "pull", "setup", "exec", "doctor", "run", "ready", "snapshot", "status"];
|
|
30
66
|
/** These act on the checkout itself, so they run before `setupCommand` and need no container engine. */
|
|
31
67
|
export declare const GIT_API_COMMANDS: string[];
|
|
32
68
|
/** Whether an exec entry downloads dependencies, which is the only failure the private-dependency hint explains. */
|
|
@@ -12,6 +12,12 @@ exports.BUILT_IN_API_COMMANDS = [
|
|
|
12
12
|
'checkout',
|
|
13
13
|
'pull',
|
|
14
14
|
'setup',
|
|
15
|
+
'exec',
|
|
16
|
+
'doctor',
|
|
17
|
+
'run',
|
|
18
|
+
'ready',
|
|
19
|
+
'snapshot',
|
|
20
|
+
'status',
|
|
15
21
|
];
|
|
16
22
|
/** These act on the checkout itself, so they run before `setupCommand` and need no container engine. */
|
|
17
23
|
exports.GIT_API_COMMANDS = ['clone', 'checkout', 'pull'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/definition.ts"],"names":[],"mappings":";;;AAAA,mCAA4C;
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/definition.ts"],"names":[],"mappings":";;;AAAA,mCAA4C;AA8D/B,QAAA,qBAAqB,GAAG;IACnC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;IACP,UAAU;IACV,QAAQ;CACA,CAAC;AAEX,wGAAwG;AAC3F,QAAA,gBAAgB,GAAa,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAExE,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAElG,oHAAoH;AAC7G,MAAM,oBAAoB,GAAG,CAAC,WAA8B,EAAE,EAAE,WACrE,OAAA,qBAAqB,CAAC,QAAQ,CAAC,MAAA,WAAW,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAC;AAD1C,QAAA,oBAAoB,wBACsB;AAEvD,gGAAgG;AACzF,MAAM,4BAA4B,GAAG,CAAC,GAAkB,EAAE,EAAE,WACjE,OAAA,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,eAAC,OAAA,IAAA,4BAAoB,EAAC,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAG,IAAI,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAC,CAAA,EAAA,CAAC;AAD9E,QAAA,4BAA4B,gCACkD;AAE3F,+GAA+G;AACxG,MAAM,eAAe,GAAG,CAAC,GAAkB,EAAE,EAAE;;IAAC,OAAA;QACrD,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,6BAAqB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC;YACrF,GAAG,yBAAiB;YACpB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,CAAC;SAC/B,CAAC;KACH,CAAA;CAAA,CAAC;AANW,QAAA,eAAe,mBAM1B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiDefinition } from './definition';
|
|
2
|
+
import { ComposeTool } from './compose';
|
|
3
|
+
export type RunDoctorOptions = {
|
|
4
|
+
name: string;
|
|
5
|
+
api: ApiDefinition;
|
|
6
|
+
tool: ComposeTool;
|
|
7
|
+
/** The compose directory of the API checkout. */
|
|
8
|
+
cwd: string;
|
|
9
|
+
env: NodeJS.ProcessEnv;
|
|
10
|
+
invocation: string;
|
|
11
|
+
fix: boolean;
|
|
12
|
+
};
|
|
13
|
+
/** Runs the API's checks in order, repairing failures when `fix` is set. Stops at the first failure it cannot repair. */
|
|
14
|
+
export declare const runDoctor: ({ name, api, tool, cwd, env, invocation, fix }: RunDoctorOptions) => {
|
|
15
|
+
ok: boolean;
|
|
16
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runDoctor = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const STDERR_TAIL_LINES = 5;
|
|
6
|
+
const NOT_RUNNING = /is not running|not running|no such container|no container|can only create exec sessions/i;
|
|
7
|
+
/** Runs the API's checks in order, repairing failures when `fix` is set. Stops at the first failure it cannot repair. */
|
|
8
|
+
const runDoctor = ({ name, api, tool, cwd, env, invocation, fix }) => {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
const checks = (_a = api.checks) !== null && _a !== void 0 ? _a : [];
|
|
11
|
+
if (checks.length === 0) {
|
|
12
|
+
console.log(`The ${name} API declares no checks.`);
|
|
13
|
+
return { ok: true };
|
|
14
|
+
}
|
|
15
|
+
const [binary, ...composePrefix] = tool.compose;
|
|
16
|
+
const run = ({ check, line, stream }) => {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
const [command, args] = check.host
|
|
19
|
+
? ['sh', ['-c', line]]
|
|
20
|
+
: [binary, [...composePrefix, 'exec', '-T', (_a = check.service) !== null && _a !== void 0 ? _a : api.execService, 'sh', '-c', line]];
|
|
21
|
+
const result = (0, child_process_1.spawnSync)(command, args, Object.assign({ cwd,
|
|
22
|
+
env }, (stream ? { stdio: 'inherit' } : { encoding: 'utf8', maxBuffer: Infinity })));
|
|
23
|
+
const stderr = stream ? '' : `${(_b = result.stderr) !== null && _b !== void 0 ? _b : ''}`.trim();
|
|
24
|
+
return { ok: !result.error && result.status === 0, stderr: result.error ? result.error.message : stderr };
|
|
25
|
+
};
|
|
26
|
+
const printFailure = (stderr) => {
|
|
27
|
+
const tail = stderr
|
|
28
|
+
.split('\n')
|
|
29
|
+
.filter((line) => line !== '')
|
|
30
|
+
.slice(-STDERR_TAIL_LINES);
|
|
31
|
+
for (const line of tail)
|
|
32
|
+
console.log(` ${line}`);
|
|
33
|
+
};
|
|
34
|
+
let failed = false;
|
|
35
|
+
for (const check of checks) {
|
|
36
|
+
const first = run({ check, line: check.check, stream: false });
|
|
37
|
+
if (first.ok) {
|
|
38
|
+
console.log(`ok ${check.name}`);
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (!check.host && NOT_RUNNING.test(first.stderr)) {
|
|
42
|
+
console.log(`FAIL ${check.name}`);
|
|
43
|
+
console.error(`\nThe ${(_b = check.service) !== null && _b !== void 0 ? _b : api.execService} service is not running. Start it with: ${invocation} up ${name}`);
|
|
44
|
+
return { ok: false };
|
|
45
|
+
}
|
|
46
|
+
if (!fix || check.fix === undefined) {
|
|
47
|
+
console.log(`FAIL ${check.name}`);
|
|
48
|
+
printFailure(first.stderr);
|
|
49
|
+
if (fix)
|
|
50
|
+
return { ok: false };
|
|
51
|
+
failed = true;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
console.log(`Fixing ${check.name}: ${check.fix}`);
|
|
55
|
+
const fixed = run({ check, line: check.fix, stream: true });
|
|
56
|
+
if (!fixed.ok) {
|
|
57
|
+
console.log(`fix failed ${check.name}`);
|
|
58
|
+
return { ok: false };
|
|
59
|
+
}
|
|
60
|
+
const again = run({ check, line: check.check, stream: false });
|
|
61
|
+
if (!again.ok) {
|
|
62
|
+
console.log(`FAIL ${check.name} (still failing after the fix)`);
|
|
63
|
+
printFailure(again.stderr);
|
|
64
|
+
return { ok: false };
|
|
65
|
+
}
|
|
66
|
+
console.log(`fixed ${check.name}`);
|
|
67
|
+
}
|
|
68
|
+
return { ok: !failed };
|
|
69
|
+
};
|
|
70
|
+
exports.runDoctor = runDoctor;
|
|
71
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/doctor.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAI1C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,MAAM,WAAW,GAAG,0FAA0F,CAAC;AAa/G,yHAAyH;AAClH,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAoB,EAAmB,EAAE;;IAC7G,MAAM,MAAM,GAAG,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAC;IAEhC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,0BAA0B,CAAC,CAAC;QAEnD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IAEhD,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAsD,EAAE,EAAE;;QAC1F,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI;YAChC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAEnG,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,OAAiB,EAAE,IAAgB,kBAC1D,GAAG;YACH,GAAG,IACA,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAChG,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAE7D,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5G,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM;aAChB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;aAC7B,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/D,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CACX,SAAS,MAAA,KAAK,CAAC,OAAO,mCAAI,GAAG,CAAC,WAAW,2CAA2C,UAAU,OAAO,IAAI,EAAE,CAC5G,CAAC;YAEF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE3B,IAAI,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YAE9B,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAElD,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,gCAAgC,CAAC,CAAC;YACvE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC,CAAC;AAvFW,QAAA,SAAS,aAuFpB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const NO_GIT = "no-git";
|
|
2
|
+
/** The major version of this CLI, so a change to what `ready` does invalidates every snapshot. */
|
|
3
|
+
export declare const cliMajorVersion: () => string;
|
|
4
|
+
/**
|
|
5
|
+
* A 12 character hash of everything a profile's data is built from: the API checkout's commit, its
|
|
6
|
+
* migrations, the repo's seed files, the profile's seed list, `ethlete.apis.js` and the CLI major version.
|
|
7
|
+
*/
|
|
8
|
+
export declare const fingerprintApi: (options: {
|
|
9
|
+
/** The repo root that holds `ethlete.apis.js` and `.ethlete/seeds`. */
|
|
10
|
+
root: string;
|
|
11
|
+
name: string;
|
|
12
|
+
/** The API checkout root, not its compose directory. */
|
|
13
|
+
repoPath: string;
|
|
14
|
+
migrationsDir?: string;
|
|
15
|
+
seeds: readonly string[];
|
|
16
|
+
cliMajor?: string;
|
|
17
|
+
head?: (repoPath: string) => string | undefined;
|
|
18
|
+
}) => string;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fingerprintApi = exports.cliMajorVersion = exports.NO_GIT = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const load_definitions_1 = require("./load-definitions");
|
|
8
|
+
const git_1 = require("./git");
|
|
9
|
+
const seeds_1 = require("./seeds");
|
|
10
|
+
exports.NO_GIT = 'no-git';
|
|
11
|
+
const FINGERPRINT_LENGTH = 12;
|
|
12
|
+
/** The major version of this CLI, so a change to what `ready` does invalidates every snapshot. */
|
|
13
|
+
const cliMajorVersion = () => {
|
|
14
|
+
var _a, _b;
|
|
15
|
+
const manifest = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '..', '..', '..', 'package.json'), 'utf8'));
|
|
16
|
+
return (_b = (_a = manifest.version) === null || _a === void 0 ? void 0 : _a.split('.')[0]) !== null && _b !== void 0 ? _b : '0';
|
|
17
|
+
};
|
|
18
|
+
exports.cliMajorVersion = cliMajorVersion;
|
|
19
|
+
const filesUnder = (directory) => {
|
|
20
|
+
if (!(0, fs_1.existsSync)(directory))
|
|
21
|
+
return [];
|
|
22
|
+
const walk = (relative) => (0, fs_1.readdirSync)((0, path_1.join)(directory, relative))
|
|
23
|
+
.sort()
|
|
24
|
+
.flatMap((entry) => {
|
|
25
|
+
const name = relative === '' ? entry : `${relative}/${entry}`;
|
|
26
|
+
const stats = (0, fs_1.statSync)((0, path_1.join)(directory, name));
|
|
27
|
+
return stats.isDirectory() ? walk(name) : stats.isFile() ? [name] : [];
|
|
28
|
+
});
|
|
29
|
+
return walk('');
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* A 12 character hash of everything a profile's data is built from: the API checkout's commit, its
|
|
33
|
+
* migrations, the repo's seed files, the profile's seed list, `ethlete.apis.js` and the CLI major version.
|
|
34
|
+
*/
|
|
35
|
+
const fingerprintApi = (options) => {
|
|
36
|
+
var _a;
|
|
37
|
+
const { root, name, repoPath, migrationsDir, seeds, cliMajor = (0, exports.cliMajorVersion)(), head = git_1.headCommit } = options;
|
|
38
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
39
|
+
const add = (label, value) => {
|
|
40
|
+
hash.update(`${label}\0${value.length}\0`);
|
|
41
|
+
hash.update(value);
|
|
42
|
+
hash.update('\0');
|
|
43
|
+
};
|
|
44
|
+
const addFiles = (label, directory) => {
|
|
45
|
+
for (const file of filesUnder(directory)) {
|
|
46
|
+
add(`${label}:name`, file);
|
|
47
|
+
add(`${label}:content`, (0, fs_1.readFileSync)((0, path_1.join)(directory, file)));
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
add('head', (_a = head(repoPath)) !== null && _a !== void 0 ? _a : exports.NO_GIT);
|
|
51
|
+
if (migrationsDir !== undefined)
|
|
52
|
+
addFiles('migrations', (0, path_1.join)(repoPath, migrationsDir));
|
|
53
|
+
addFiles('seeds', (0, seeds_1.seedDirectory)(root, name));
|
|
54
|
+
add('profile-seeds', JSON.stringify(seeds));
|
|
55
|
+
for (const fileName of load_definitions_1.API_DEFINITIONS_FILE_NAMES) {
|
|
56
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(root, fileName)))
|
|
57
|
+
add(`definitions:${fileName}`, (0, fs_1.readFileSync)((0, path_1.join)(root, fileName)));
|
|
58
|
+
}
|
|
59
|
+
add('cli', cliMajor);
|
|
60
|
+
return hash.digest('hex').slice(0, FINGERPRINT_LENGTH);
|
|
61
|
+
};
|
|
62
|
+
exports.fingerprintApi = fingerprintApi;
|
|
63
|
+
//# sourceMappingURL=fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/fingerprint.ts"],"names":[],"mappings":"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"}
|
package/src/lib/api/git.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export type GitResult = {
|
|
|
4
4
|
stderr: string;
|
|
5
5
|
};
|
|
6
6
|
export declare const currentBranch: (cwd: string) => string | undefined;
|
|
7
|
+
/** The commit `HEAD` names, or `undefined` outside a git checkout. */
|
|
8
|
+
export declare const headCommit: (cwd: string) => string | undefined;
|
|
7
9
|
/** Modified tracked files and untracked files, as git's own porcelain lines, or `undefined` when git fails. */
|
|
8
10
|
export declare const uncommittedChanges: (cwd: string) => string[] | undefined;
|
|
9
11
|
/** Whether git ignores a repo-relative path, or `undefined` outside a git checkout. */
|
package/src/lib/api/git.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pullApiBranch = exports.checkoutApiBranch = exports.stashEntries = exports.unpushedCommits = exports.hasUncommittedChanges = exports.ignoredByGit = exports.uncommittedChanges = exports.currentBranch = void 0;
|
|
3
|
+
exports.pullApiBranch = exports.checkoutApiBranch = exports.stashEntries = exports.unpushedCommits = exports.hasUncommittedChanges = exports.ignoredByGit = exports.uncommittedChanges = exports.headCommit = exports.currentBranch = void 0;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
5
|
const git = (cwd, args) => {
|
|
6
6
|
var _a, _b, _c;
|
|
@@ -17,6 +17,12 @@ const currentBranch = (cwd) => {
|
|
|
17
17
|
return result.status === 0 ? result.stdout : undefined;
|
|
18
18
|
};
|
|
19
19
|
exports.currentBranch = currentBranch;
|
|
20
|
+
/** The commit `HEAD` names, or `undefined` outside a git checkout. */
|
|
21
|
+
const headCommit = (cwd) => {
|
|
22
|
+
const result = git(cwd, ['rev-parse', 'HEAD']);
|
|
23
|
+
return result.status === 0 && result.stdout !== '' ? result.stdout : undefined;
|
|
24
|
+
};
|
|
25
|
+
exports.headCommit = headCommit;
|
|
20
26
|
/** Modified tracked files and untracked files, as git's own porcelain lines, or `undefined` when git fails. */
|
|
21
27
|
const uncommittedChanges = (cwd) => {
|
|
22
28
|
const { status, stdout } = git(cwd, ['status', '--porcelain']);
|
package/src/lib/api/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/git.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/git.ts"],"names":[],"mappings":"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"}
|
package/src/lib/api/help.js
CHANGED
|
@@ -13,6 +13,12 @@ const BUILT_IN_DESCRIPTIONS = {
|
|
|
13
13
|
checkout: 'Switch the checkout to the branch apiRepoBranches names',
|
|
14
14
|
pull: 'Fetch and fast-forward the checked-out branch',
|
|
15
15
|
setup: "Run the API's own setupCommand in its compose directory",
|
|
16
|
+
exec: 'Run a command in a service without a TTY: exec <api> <service> -- <cmd...>',
|
|
17
|
+
doctor: 'Run the checks the API declares: doctor <api> [--fix]',
|
|
18
|
+
run: 'Run a host command under the API lock: run <api> --lock [--wait <s>] -- <cmd...>',
|
|
19
|
+
ready: 'Bring the data of a profile up to date and wait for health: ready <api> --profile <p>',
|
|
20
|
+
snapshot: 'Save or restore the databases of a profile: snapshot save|restore <api> <name> [--profile <p>]',
|
|
21
|
+
status: 'Print profile, fingerprints, dirty flag, snapshot and lock holder: status <api> [--profile <p>]',
|
|
16
22
|
};
|
|
17
23
|
const SEED_DESCRIPTIONS = {
|
|
18
24
|
seed: 'List the seeds in .ethlete/seeds/<name>/seeds.json, or run the ones you name',
|
|
@@ -31,6 +37,10 @@ const apiHelp = (apis, invocation) => {
|
|
|
31
37
|
];
|
|
32
38
|
return [
|
|
33
39
|
`Usage: ${invocation} <command> <api>[,<api>] [<service> | <seed>[,<seed>]] [--host]`,
|
|
40
|
+
` ${invocation} exec <api> <service> -- <command> [<args>...]`,
|
|
41
|
+
` ${invocation} run <api> --lock [--wait <seconds>] -- <command> [<args>...]`,
|
|
42
|
+
` ${invocation} ready <api> --profile <profile> [--wait <seconds>]`,
|
|
43
|
+
` ${invocation} snapshot save|restore <api> <name> [--profile <profile>] [--wait <seconds>]`,
|
|
34
44
|
'',
|
|
35
45
|
'Commands',
|
|
36
46
|
...definition_1.BUILT_IN_API_COMMANDS.map((command) => ` ${pad(command, commandWidth)} ${BUILT_IN_DESCRIPTIONS[command]}`),
|
|
@@ -38,6 +48,7 @@ const apiHelp = (apis, invocation) => {
|
|
|
38
48
|
...execNames.map((command) => ` ${pad(command, commandWidth)} Declared by the API itself`),
|
|
39
49
|
` ${pad('help', commandWidth)} What one API accepts, and where its checkout is`,
|
|
40
50
|
'',
|
|
51
|
+
'Everything after -- goes to the command unchanged, and nothing else is written to stdout.',
|
|
41
52
|
`An exec entry named seed or fixtures in ethlete.apis.js runs instead of the built-in command.`,
|
|
42
53
|
'',
|
|
43
54
|
'APIs',
|
|
@@ -47,6 +58,8 @@ const apiHelp = (apis, invocation) => {
|
|
|
47
58
|
` ${pad('--host', commandWidth)} Also print the address another device on this network can use`,
|
|
48
59
|
` ${pad('--force', commandWidth)} With up: start even when a port is taken. With pull or clear: lose local work`,
|
|
49
60
|
` ${pad('--all', commandWidth)} With clear: every API at once`,
|
|
61
|
+
` ${pad('--profile', commandWidth)} With ready, snapshot and status: the profile to use`,
|
|
62
|
+
` ${pad('--wait', commandWidth)} With run, ready or snapshot restore: give up after this many seconds, with exit code 75`,
|
|
50
63
|
` ${pad('--clone', commandWidth)} Clone a missing checkout without asking first`,
|
|
51
64
|
` ${pad('--setup', commandWidth)} Run the setup command for a missing env file without asking first`,
|
|
52
65
|
` ${pad('--help', commandWidth)} Show this text`,
|
package/src/lib/api/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/help.ts"],"names":[],"mappings":";;;AAAA,6CAAqG;AACrG,mCAA4C;AAE5C,MAAM,qBAAqB,GAA2D;IACpF,EAAE,EAAE,iCAAiC;IACrC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,+DAA+D;IACrE,KAAK,EAAE,6DAA6D;IACpE,KAAK,EAAE,qDAAqD;IAC5D,KAAK,EAAE,gDAAgD;IACvD,QAAQ,EAAE,yDAAyD;IACnE,IAAI,EAAE,+CAA+C;IACrD,KAAK,EAAE,yDAAyD;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/help.ts"],"names":[],"mappings":"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"}
|
package/src/lib/api/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './api-command';
|
|
2
|
+
export * from './api-state';
|
|
2
3
|
export * from './compose';
|
|
3
4
|
export * from './auth-hint';
|
|
4
5
|
export * from './clear';
|
|
@@ -7,9 +8,11 @@ export * from './definition';
|
|
|
7
8
|
export * from './git';
|
|
8
9
|
export * from './help';
|
|
9
10
|
export * from './load-definitions';
|
|
11
|
+
export * from './lock';
|
|
10
12
|
export * from './ports';
|
|
11
13
|
export * from './resolve-checkout';
|
|
12
14
|
export * from './run';
|
|
15
|
+
export * from './run-locked';
|
|
13
16
|
export * from './seeds';
|
|
14
17
|
export * from './setup';
|
|
15
18
|
export * from './state';
|
package/src/lib/api/index.js
CHANGED
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
__exportStar(require("./api-command"), exports);
|
|
18
|
+
__exportStar(require("./api-state"), exports);
|
|
19
|
+
__exportStar(require("./compose"), exports);
|
|
20
|
+
__exportStar(require("./auth-hint"), exports);
|
|
21
|
+
__exportStar(require("./clear"), exports);
|
|
22
|
+
__exportStar(require("./clone"), exports);
|
|
23
|
+
__exportStar(require("./definition"), exports);
|
|
24
|
+
__exportStar(require("./git"), exports);
|
|
25
|
+
__exportStar(require("./help"), exports);
|
|
26
|
+
__exportStar(require("./load-definitions"), exports);
|
|
27
|
+
__exportStar(require("./lock"), exports);
|
|
28
|
+
__exportStar(require("./ports"), exports);
|
|
29
|
+
__exportStar(require("./resolve-checkout"), exports);
|
|
30
|
+
__exportStar(require("./run"), exports);
|
|
31
|
+
__exportStar(require("./run-locked"), exports);
|
|
32
|
+
__exportStar(require("./seeds"), exports);
|
|
33
|
+
__exportStar(require("./setup"), exports);
|
|
34
|
+
__exportStar(require("./state"), exports);
|
|
35
|
+
__exportStar(require("./suggest"), exports);
|
|
20
36
|
//# sourceMappingURL=index.js.map
|
package/src/lib/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAwB;AACxB,+CAA6B;AAC7B,wCAAsB;AACtB,yCAAuB;AACvB,qDAAmC;AACnC,yCAAuB;AACvB,0CAAwB;AACxB,qDAAmC;AACnC,wCAAsB;AACtB,+CAA6B;AAC7B,0CAAwB;AACxB,0CAAwB;AACxB,0CAAwB;AACxB,4CAA0B"}
|
|
@@ -5,6 +5,7 @@ const fs_1 = require("fs");
|
|
|
5
5
|
const module_1 = require("module");
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
const definition_1 = require("./definition");
|
|
8
|
+
const validate_definition_1 = require("./validate-definition");
|
|
8
9
|
exports.API_DEFINITIONS_FILE_NAMES = ['ethlete.apis.js', 'ethlete.apis.cjs'];
|
|
9
10
|
/**
|
|
10
11
|
* Loads the repo's API definitions from `ethlete.apis.js`. The file is a module rather than JSON
|
|
@@ -25,6 +26,8 @@ const loadApiDefinitions = (root) => {
|
|
|
25
26
|
`which ${shadowing.length === 1 ? 'is a built-in command' : 'are built-in commands'}. Rename the entry.`);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
29
|
+
for (const [name, api] of Object.entries(apis))
|
|
30
|
+
(0, validate_definition_1.validateApiDefinition)({ fileName, name, api });
|
|
28
31
|
return { found: true, apis, fileName };
|
|
29
32
|
};
|
|
30
33
|
exports.loadApiDefinitions = loadApiDefinitions;
|