@ethlete/cli 2.0.1-next.2 → 2.1.0-next.11
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 +109 -0
- package/README.md +178 -6
- package/design/define-call.ts +92 -0
- package/design/web/env.d.ts +11 -0
- package/design/web/frame.html +17 -0
- package/design/web/frame.ts +38 -0
- package/design/web/host.css +494 -0
- package/design/web/host.ts +445 -0
- package/design/web/index.html +11 -0
- package/package.json +12 -1
- package/src/index.d.ts +2 -1
- package/src/index.js +97 -10
- package/src/index.js.map +1 -1
- package/src/lib/api/api-command.d.ts +5 -0
- package/src/lib/api/api-command.js +27 -0
- package/src/lib/api/api-command.js.map +1 -0
- package/src/lib/api/auth-hint.d.ts +16 -0
- package/src/lib/api/auth-hint.js +59 -0
- package/src/lib/api/auth-hint.js.map +1 -0
- package/src/lib/api/clear.d.ts +36 -0
- package/src/lib/api/clear.js +121 -0
- package/src/lib/api/clear.js.map +1 -0
- package/src/lib/api/clone.d.ts +12 -0
- package/src/lib/api/clone.js +24 -0
- package/src/lib/api/clone.js.map +1 -0
- package/src/lib/api/compose.d.ts +46 -0
- package/src/lib/api/compose.js +101 -0
- package/src/lib/api/compose.js.map +1 -0
- package/src/lib/api/definition.d.ts +37 -0
- package/src/lib/api/definition.js +33 -0
- package/src/lib/api/definition.js.map +1 -0
- package/src/lib/api/git.d.ts +27 -0
- package/src/lib/api/git.js +79 -0
- package/src/lib/api/git.js.map +1 -0
- package/src/lib/api/help.d.ts +11 -0
- package/src/lib/api/help.js +72 -0
- package/src/lib/api/help.js.map +1 -0
- package/src/lib/api/index.d.ts +15 -0
- package/src/lib/api/index.js +19 -0
- package/src/lib/api/index.js.map +1 -0
- package/src/lib/api/load-definitions.d.ts +16 -0
- package/src/lib/api/load-definitions.js +22 -0
- package/src/lib/api/load-definitions.js.map +1 -0
- package/src/lib/api/ports.d.ts +13 -0
- package/src/lib/api/ports.js +98 -0
- package/src/lib/api/ports.js.map +1 -0
- package/src/lib/api/resolve-checkout.d.ts +45 -0
- package/src/lib/api/resolve-checkout.js +91 -0
- package/src/lib/api/resolve-checkout.js.map +1 -0
- package/src/lib/api/run.d.ts +10 -0
- package/src/lib/api/run.js +332 -0
- package/src/lib/api/run.js.map +1 -0
- package/src/lib/api/setup.d.ts +15 -0
- package/src/lib/api/setup.js +41 -0
- package/src/lib/api/setup.js.map +1 -0
- package/src/lib/api/state.d.ts +20 -0
- package/src/lib/api/state.js +33 -0
- package/src/lib/api/state.js.map +1 -0
- package/src/lib/api/suggest.d.ts +7 -0
- package/src/lib/api/suggest.js +35 -0
- package/src/lib/api/suggest.js.map +1 -0
- package/src/lib/auth/auth-command.d.ts +11 -0
- package/src/lib/auth/auth-command.js +165 -0
- package/src/lib/auth/auth-command.js.map +1 -0
- package/src/lib/auth/composer-auth.d.ts +30 -0
- package/src/lib/auth/composer-auth.js +70 -0
- package/src/lib/auth/composer-auth.js.map +1 -0
- package/src/lib/auth/composer-repositories.d.ts +5 -0
- package/src/lib/auth/composer-repositories.js +33 -0
- package/src/lib/auth/composer-repositories.js.map +1 -0
- package/src/lib/auth/gitlab-token.d.ts +43 -0
- package/src/lib/auth/gitlab-token.js +72 -0
- package/src/lib/auth/gitlab-token.js.map +1 -0
- package/src/lib/auth/index.d.ts +4 -0
- package/src/lib/auth/index.js +8 -0
- package/src/lib/auth/index.js.map +1 -0
- package/src/lib/config/diagnose.d.ts +7 -0
- package/src/lib/config/diagnose.js +112 -0
- package/src/lib/config/diagnose.js.map +1 -0
- package/src/lib/config/index.d.ts +2 -0
- package/src/lib/config/index.js +6 -0
- package/src/lib/config/index.js.map +1 -0
- package/src/lib/config/local-config.d.ts +46 -0
- package/src/lib/config/local-config.js +57 -0
- package/src/lib/config/local-config.js.map +1 -0
- package/src/lib/design/calls-tsconfig.d.ts +6 -0
- package/src/lib/design/calls-tsconfig.js +37 -0
- package/src/lib/design/calls-tsconfig.js.map +1 -0
- package/src/lib/design/check.d.ts +11 -0
- package/src/lib/design/check.js +192 -0
- package/src/lib/design/check.js.map +1 -0
- package/src/lib/design/design-command.d.ts +10 -0
- package/src/lib/design/design-command.js +32 -0
- package/src/lib/design/design-command.js.map +1 -0
- package/src/lib/design/index.d.ts +5 -0
- package/src/lib/design/index.js +9 -0
- package/src/lib/design/index.js.map +1 -0
- package/src/lib/design/paths.d.ts +24 -0
- package/src/lib/design/paths.js +31 -0
- package/src/lib/design/paths.js.map +1 -0
- package/src/lib/design/serve.d.ts +7 -0
- package/src/lib/design/serve.js +144 -0
- package/src/lib/design/serve.js.map +1 -0
- package/src/lib/doctor/doctor-command.d.ts +7 -0
- package/src/lib/doctor/doctor-command.js +62 -0
- package/src/lib/doctor/doctor-command.js.map +1 -0
- package/src/lib/doctor/index.d.ts +1 -0
- package/src/lib/doctor/index.js +5 -0
- package/src/lib/doctor/index.js.map +1 -0
- package/src/lib/index.d.ts +7 -0
- package/src/lib/index.js +7 -0
- package/src/lib/index.js.map +1 -1
- package/src/lib/invocation.d.ts +9 -0
- package/src/lib/invocation.js +47 -0
- package/src/lib/invocation.js.map +1 -0
- package/src/lib/release.js +21 -3
- package/src/lib/release.js.map +1 -1
- package/src/lib/update/agent-rules-sync.d.ts +37 -0
- package/src/lib/update/agent-rules-sync.js +40 -0
- package/src/lib/update/agent-rules-sync.js.map +1 -0
- package/src/lib/update/ai.d.ts +37 -0
- package/src/lib/update/ai.js +71 -0
- package/src/lib/update/ai.js.map +1 -0
- package/src/lib/update/args.d.ts +21 -0
- package/src/lib/update/args.js +89 -0
- package/src/lib/update/args.js.map +1 -0
- package/src/lib/update/gitignore.d.ts +2 -0
- package/src/lib/update/gitignore.js +18 -0
- package/src/lib/update/gitignore.js.map +1 -0
- package/src/lib/update/index.d.ts +13 -0
- package/src/lib/update/index.js +17 -0
- package/src/lib/update/index.js.map +1 -0
- package/src/lib/update/migration-manifest.d.ts +40 -0
- package/src/lib/update/migration-manifest.js +137 -0
- package/src/lib/update/migration-manifest.js.map +1 -0
- package/src/lib/update/package-manager.d.ts +30 -0
- package/src/lib/update/package-manager.js +60 -0
- package/src/lib/update/package-manager.js.map +1 -0
- package/src/lib/update/packages.d.ts +65 -0
- package/src/lib/update/packages.js +147 -0
- package/src/lib/update/packages.js.map +1 -0
- package/src/lib/update/pending.d.ts +34 -0
- package/src/lib/update/pending.js +46 -0
- package/src/lib/update/pending.js.map +1 -0
- package/src/lib/update/plan.d.ts +51 -0
- package/src/lib/update/plan.js +101 -0
- package/src/lib/update/plan.js.map +1 -0
- package/src/lib/update/registry.d.ts +40 -0
- package/src/lib/update/registry.js +140 -0
- package/src/lib/update/registry.js.map +1 -0
- package/src/lib/update/run-migrations.d.ts +45 -0
- package/src/lib/update/run-migrations.js +73 -0
- package/src/lib/update/run-migrations.js.map +1 -0
- package/src/lib/update/semver.d.ts +19 -0
- package/src/lib/update/semver.js +79 -0
- package/src/lib/update/semver.js.map +1 -0
- package/src/lib/update/tasks.d.ts +75 -0
- package/src/lib/update/tasks.js +241 -0
- package/src/lib/update/tasks.js.map +1 -0
- package/src/lib/update/update-command.d.ts +12 -0
- package/src/lib/update/update-command.js +411 -0
- package/src/lib/update/update-command.js.map +1 -0
- package/src/lib/utils.d.ts +14 -0
- package/src/lib/utils.js +14 -1
- package/src/lib/utils.js.map +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runPendingMigrations = exports.manualGeneratorCommand = exports.runInstall = exports.runAutoMigration = exports.generatorArgs = exports.hasNx = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const package_manager_1 = require("./package-manager");
|
|
8
|
+
/** Nx runs the auto migrations, so a repo without it gets the command printed instead. */
|
|
9
|
+
const hasNx = (root) => (0, fs_1.existsSync)((0, path_1.join)(root, 'node_modules', 'nx', 'package.json')) && (0, fs_1.existsSync)((0, path_1.join)(root, 'nx.json'));
|
|
10
|
+
exports.hasNx = hasNx;
|
|
11
|
+
/** The `nx generate` arguments for one auto migration. Non-interactive: an update must not stop to ask. */
|
|
12
|
+
const generatorArgs = (options) => {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const { migration, dryRun } = options;
|
|
15
|
+
return [
|
|
16
|
+
'generate',
|
|
17
|
+
(_a = migration.generator) !== null && _a !== void 0 ? _a : '',
|
|
18
|
+
'--interactive=false',
|
|
19
|
+
...Object.entries((_b = migration.options) !== null && _b !== void 0 ? _b : {}).map(([key, value]) => `--${key}=${String(value)}`),
|
|
20
|
+
...(dryRun ? ['--dry-run'] : []),
|
|
21
|
+
];
|
|
22
|
+
};
|
|
23
|
+
exports.generatorArgs = generatorArgs;
|
|
24
|
+
const runAutoMigration = (options) => {
|
|
25
|
+
const { root, manager, pending, dryRun } = options;
|
|
26
|
+
const [binary, ...args] = (0, package_manager_1.nxCommand)({
|
|
27
|
+
manager,
|
|
28
|
+
args: (0, exports.generatorArgs)({ migration: pending.migration, dryRun }),
|
|
29
|
+
});
|
|
30
|
+
if (binary === undefined)
|
|
31
|
+
return { pending, state: 'failed', reason: 'no command to run the generator with' };
|
|
32
|
+
const result = (0, child_process_1.spawnSync)(binary, args, { cwd: root, stdio: 'inherit' });
|
|
33
|
+
if (result.error)
|
|
34
|
+
return { pending, state: 'failed', reason: result.error.message };
|
|
35
|
+
if (result.status !== 0)
|
|
36
|
+
return { pending, state: 'failed', reason: `${binary} exited with ${result.status}` };
|
|
37
|
+
return { pending, state: dryRun ? 'planned' : 'applied' };
|
|
38
|
+
};
|
|
39
|
+
exports.runAutoMigration = runAutoMigration;
|
|
40
|
+
const runInstall = (options) => {
|
|
41
|
+
const { root, manager, env } = options;
|
|
42
|
+
const [binary, ...args] = manager.install;
|
|
43
|
+
if (binary === undefined)
|
|
44
|
+
return { ok: false, reason: 'no install command' };
|
|
45
|
+
const result = (0, child_process_1.spawnSync)(binary, args, { cwd: root, stdio: 'inherit', env: (0, package_manager_1.installEnv)(env) });
|
|
46
|
+
if (result.error)
|
|
47
|
+
return { ok: false, reason: result.error.message };
|
|
48
|
+
if (result.status !== 0)
|
|
49
|
+
return { ok: false, reason: `${manager.install.join(' ')} exited with ${result.status}` };
|
|
50
|
+
return { ok: true };
|
|
51
|
+
};
|
|
52
|
+
exports.runInstall = runInstall;
|
|
53
|
+
/** The command a developer runs by hand when this repo has no Nx to run the generator with. */
|
|
54
|
+
const manualGeneratorCommand = (options) => (0, package_manager_1.nxCommand)({ manager: options.manager, args: (0, exports.generatorArgs)({ migration: options.migration, dryRun: false }) }).join(' ');
|
|
55
|
+
exports.manualGeneratorCommand = manualGeneratorCommand;
|
|
56
|
+
const runPendingMigrations = (options) => {
|
|
57
|
+
const { root, manager, pending, dryRun } = options;
|
|
58
|
+
const nxAvailable = (0, exports.hasNx)(root);
|
|
59
|
+
return pending.map((entry) => {
|
|
60
|
+
if (entry.migration.kind !== 'auto')
|
|
61
|
+
return { pending: entry, state: 'task' };
|
|
62
|
+
if (!nxAvailable) {
|
|
63
|
+
return {
|
|
64
|
+
pending: entry,
|
|
65
|
+
state: 'unsupported',
|
|
66
|
+
reason: 'this repo has no Nx, so the generator has to be run by hand',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return (0, exports.runAutoMigration)({ root, manager, pending: entry, dryRun });
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
exports.runPendingMigrations = runPendingMigrations;
|
|
73
|
+
//# sourceMappingURL=run-migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-migrations.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/run-migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** `-1`, `0` or `1`, prerelease-aware for the `x.y.z-next.N` versions this repo publishes. */
|
|
2
|
+
export declare const compareVersions: (left: string, right: string) => 0 | 1 | -1;
|
|
3
|
+
export declare const isNewer: (candidate: string, than: string) => boolean;
|
|
4
|
+
/** True when `version` sits inside `(after, upTo]`, the range a pending migration is selected by. */
|
|
5
|
+
export declare const isInUpdateRange: (options: {
|
|
6
|
+
version: string;
|
|
7
|
+
after: string;
|
|
8
|
+
upTo: string;
|
|
9
|
+
}) => boolean;
|
|
10
|
+
export declare const isValidVersion: (version: string) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* The dist tag a prerelease belongs to, for example `next` for `5.0.0-next.46`. A stable version has
|
|
13
|
+
* none, and neither has a prerelease that only numbers its identifiers.
|
|
14
|
+
*/
|
|
15
|
+
export declare const prereleaseTag: (version: string) => string | undefined;
|
|
16
|
+
/** The `^` or `~` a range keeps, or `''` for an exact one. `undefined` for a range with no single version. */
|
|
17
|
+
export declare const rangePrefix: (range: string) => string | undefined;
|
|
18
|
+
/** The version a range points at, for example `5.0.0-next.46` for `^5.0.0-next.46`. */
|
|
19
|
+
export declare const versionOfRange: (range: string) => string | undefined;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.versionOfRange = exports.rangePrefix = exports.prereleaseTag = exports.isValidVersion = exports.isInUpdateRange = exports.isNewer = exports.compareVersions = void 0;
|
|
4
|
+
const NUMERIC = /^\d+$/;
|
|
5
|
+
const parseVersion = (version) => {
|
|
6
|
+
const [core = '', ...prereleaseParts] = version.split('-');
|
|
7
|
+
const prerelease = prereleaseParts.join('-');
|
|
8
|
+
return {
|
|
9
|
+
numbers: core.split('.').map((part) => Number.parseInt(part, 10) || 0),
|
|
10
|
+
prerelease: prerelease === '' ? [] : prerelease.split('.'),
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
const comparePrerelease = (left, right) => {
|
|
14
|
+
// Semver: a version without a prerelease outranks the same version with one.
|
|
15
|
+
if (left.length === 0 && right.length === 0)
|
|
16
|
+
return 0;
|
|
17
|
+
if (left.length === 0)
|
|
18
|
+
return 1;
|
|
19
|
+
if (right.length === 0)
|
|
20
|
+
return -1;
|
|
21
|
+
for (let index = 0; index < Math.max(left.length, right.length); index += 1) {
|
|
22
|
+
const leftPart = left[index];
|
|
23
|
+
const rightPart = right[index];
|
|
24
|
+
if (leftPart === undefined)
|
|
25
|
+
return -1;
|
|
26
|
+
if (rightPart === undefined)
|
|
27
|
+
return 1;
|
|
28
|
+
if (NUMERIC.test(leftPart) && NUMERIC.test(rightPart)) {
|
|
29
|
+
const leftNumber = Number.parseInt(leftPart, 10);
|
|
30
|
+
const rightNumber = Number.parseInt(rightPart, 10);
|
|
31
|
+
if (leftNumber !== rightNumber)
|
|
32
|
+
return leftNumber < rightNumber ? -1 : 1;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (leftPart !== rightPart)
|
|
36
|
+
return leftPart < rightPart ? -1 : 1;
|
|
37
|
+
}
|
|
38
|
+
return 0;
|
|
39
|
+
};
|
|
40
|
+
/** `-1`, `0` or `1`, prerelease-aware for the `x.y.z-next.N` versions this repo publishes. */
|
|
41
|
+
const compareVersions = (left, right) => {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
const parsedLeft = parseVersion(left);
|
|
44
|
+
const parsedRight = parseVersion(right);
|
|
45
|
+
for (let index = 0; index < Math.max(parsedLeft.numbers.length, parsedRight.numbers.length); index += 1) {
|
|
46
|
+
const leftNumber = (_a = parsedLeft.numbers[index]) !== null && _a !== void 0 ? _a : 0;
|
|
47
|
+
const rightNumber = (_b = parsedRight.numbers[index]) !== null && _b !== void 0 ? _b : 0;
|
|
48
|
+
if (leftNumber !== rightNumber)
|
|
49
|
+
return leftNumber < rightNumber ? -1 : 1;
|
|
50
|
+
}
|
|
51
|
+
return comparePrerelease(parsedLeft.prerelease, parsedRight.prerelease);
|
|
52
|
+
};
|
|
53
|
+
exports.compareVersions = compareVersions;
|
|
54
|
+
const isNewer = (candidate, than) => (0, exports.compareVersions)(candidate, than) > 0;
|
|
55
|
+
exports.isNewer = isNewer;
|
|
56
|
+
/** True when `version` sits inside `(after, upTo]`, the range a pending migration is selected by. */
|
|
57
|
+
const isInUpdateRange = (options) => (0, exports.compareVersions)(options.version, options.after) > 0 && (0, exports.compareVersions)(options.version, options.upTo) <= 0;
|
|
58
|
+
exports.isInUpdateRange = isInUpdateRange;
|
|
59
|
+
const isValidVersion = (version) => /^\d+\.\d+\.\d+(?:[-+].*)?$/.test(version);
|
|
60
|
+
exports.isValidVersion = isValidVersion;
|
|
61
|
+
/**
|
|
62
|
+
* The dist tag a prerelease belongs to, for example `next` for `5.0.0-next.46`. A stable version has
|
|
63
|
+
* none, and neither has a prerelease that only numbers its identifiers.
|
|
64
|
+
*/
|
|
65
|
+
const prereleaseTag = (version) => parseVersion(version).prerelease.find((part) => !NUMERIC.test(part));
|
|
66
|
+
exports.prereleaseTag = prereleaseTag;
|
|
67
|
+
/** The `^` or `~` a range keeps, or `''` for an exact one. `undefined` for a range with no single version. */
|
|
68
|
+
const rangePrefix = (range) => {
|
|
69
|
+
const match = /^([\^~]?)(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)$/.exec(range.trim());
|
|
70
|
+
return match ? match[1] : undefined;
|
|
71
|
+
};
|
|
72
|
+
exports.rangePrefix = rangePrefix;
|
|
73
|
+
/** The version a range points at, for example `5.0.0-next.46` for `^5.0.0-next.46`. */
|
|
74
|
+
const versionOfRange = (range) => {
|
|
75
|
+
const match = /^[\^~]?(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)$/.exec(range.trim());
|
|
76
|
+
return match === null || match === void 0 ? void 0 : match[1];
|
|
77
|
+
};
|
|
78
|
+
exports.versionOfRange = versionOfRange;
|
|
79
|
+
//# sourceMappingURL=semver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/semver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { PackageManager } from './package-manager';
|
|
2
|
+
import { UpdatedPackage } from './plan';
|
|
3
|
+
import { MigrationOutcome } from './run-migrations';
|
|
4
|
+
export declare const UPDATE_DIR: string;
|
|
5
|
+
export declare const TASKS_FILE = "tasks.md";
|
|
6
|
+
export declare const TASKS_DATA_FILE = "tasks.json";
|
|
7
|
+
export declare const DOCS_BASE_URL = "https://ethlete-sdk-docs.web.app";
|
|
8
|
+
export declare const NEXT_DOCS_BASE_URL = "https://ethlete-sdk-docs-next.web.app";
|
|
9
|
+
/** The docs site of a version's release line: `main` deploys the stable site, `next` the prerelease one. */
|
|
10
|
+
export declare const docsBaseUrl: (version: string) => "https://ethlete-sdk-docs.web.app" | "https://ethlete-sdk-docs-next.web.app";
|
|
11
|
+
/** The agent rules sync of an update that failed, with the command to run again by hand. */
|
|
12
|
+
export type SyncFailure = {
|
|
13
|
+
command: string;
|
|
14
|
+
reason: string;
|
|
15
|
+
};
|
|
16
|
+
export type UpdateTask = {
|
|
17
|
+
packageName: string;
|
|
18
|
+
name: string;
|
|
19
|
+
version: string;
|
|
20
|
+
kind: 'manual' | 'assisted' | 'unsupported';
|
|
21
|
+
description: string;
|
|
22
|
+
/** Repo-relative path of the copied instructions, when the migration ships any. */
|
|
23
|
+
instructionsFile?: string;
|
|
24
|
+
docsUrl?: string;
|
|
25
|
+
/** For an `unsupported` auto migration: the generator command to run by hand. */
|
|
26
|
+
command?: string;
|
|
27
|
+
};
|
|
28
|
+
export declare const taskFileName: (options: {
|
|
29
|
+
packageName: string;
|
|
30
|
+
name: string;
|
|
31
|
+
}) => string;
|
|
32
|
+
/** The tasks an update leaves behind: what needs a decision, a prompt, or a command Nx could not run. */
|
|
33
|
+
export declare const collectTasks: (options: {
|
|
34
|
+
outcomes: readonly MigrationOutcome[];
|
|
35
|
+
manager: PackageManager;
|
|
36
|
+
updates?: readonly UpdatedPackage[];
|
|
37
|
+
}) => UpdateTask[];
|
|
38
|
+
export declare const renderTasks: (options: {
|
|
39
|
+
updates: readonly UpdatedPackage[];
|
|
40
|
+
outcomes: readonly MigrationOutcome[];
|
|
41
|
+
tasks: readonly UpdateTask[];
|
|
42
|
+
syncFailure?: SyncFailure;
|
|
43
|
+
}) => string;
|
|
44
|
+
/**
|
|
45
|
+
* One task as its own file: what moved and where to read more, then the instructions the package ships.
|
|
46
|
+
* The header is what makes the file readable on its own once the update is over.
|
|
47
|
+
*/
|
|
48
|
+
export declare const renderTaskFile: (options: {
|
|
49
|
+
task: UpdateTask;
|
|
50
|
+
instructions: string;
|
|
51
|
+
}) => string;
|
|
52
|
+
export type WrittenTasks = {
|
|
53
|
+
/** Repo-relative path of the report. */
|
|
54
|
+
reportPath: string;
|
|
55
|
+
dataPath: string;
|
|
56
|
+
tasks: UpdateTask[];
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Writes the report, the machine-readable task list an agent reads, and a copy of every instructions
|
|
60
|
+
* file, so the whole task list stands on its own once `node_modules` changes again. A task an earlier
|
|
61
|
+
* run left is kept while its file is still there.
|
|
62
|
+
*/
|
|
63
|
+
export declare const writeUpdateTasks: (options: {
|
|
64
|
+
root: string;
|
|
65
|
+
updates: readonly UpdatedPackage[];
|
|
66
|
+
outcomes: readonly MigrationOutcome[];
|
|
67
|
+
manager: PackageManager;
|
|
68
|
+
generatedAt: string;
|
|
69
|
+
syncFailure?: SyncFailure;
|
|
70
|
+
}) => WrittenTasks;
|
|
71
|
+
/**
|
|
72
|
+
* Rewrites the task list of an earlier run without the tasks whose file was deleted, and returns the
|
|
73
|
+
* tasks still open. `undefined` when no run has written a task list.
|
|
74
|
+
*/
|
|
75
|
+
export declare const refreshUpdateTasks: (root: string) => UpdateTask[] | undefined;
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.refreshUpdateTasks = exports.writeUpdateTasks = exports.renderTaskFile = exports.renderTasks = exports.collectTasks = exports.taskFileName = exports.docsBaseUrl = exports.NEXT_DOCS_BASE_URL = exports.DOCS_BASE_URL = exports.TASKS_DATA_FILE = exports.TASKS_FILE = exports.UPDATE_DIR = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const migration_manifest_1 = require("./migration-manifest");
|
|
7
|
+
const run_migrations_1 = require("./run-migrations");
|
|
8
|
+
const semver_1 = require("./semver");
|
|
9
|
+
exports.UPDATE_DIR = (0, path_1.join)('.ethlete', 'update');
|
|
10
|
+
exports.TASKS_FILE = 'tasks.md';
|
|
11
|
+
exports.TASKS_DATA_FILE = 'tasks.json';
|
|
12
|
+
exports.DOCS_BASE_URL = 'https://ethlete-sdk-docs.web.app';
|
|
13
|
+
exports.NEXT_DOCS_BASE_URL = 'https://ethlete-sdk-docs-next.web.app';
|
|
14
|
+
/** The docs site of a version's release line: `main` deploys the stable site, `next` the prerelease one. */
|
|
15
|
+
const docsBaseUrl = (version) => ((0, semver_1.prereleaseTag)(version) ? exports.NEXT_DOCS_BASE_URL : exports.DOCS_BASE_URL);
|
|
16
|
+
exports.docsBaseUrl = docsBaseUrl;
|
|
17
|
+
const withoutScope = (packageName) => packageName.replace('@ethlete/', '');
|
|
18
|
+
const taskFileName = (options) => `${withoutScope(options.packageName)}-${options.name}.md`;
|
|
19
|
+
exports.taskFileName = taskFileName;
|
|
20
|
+
/** The tasks an update leaves behind: what needs a decision, a prompt, or a command Nx could not run. */
|
|
21
|
+
const collectTasks = (options) => {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
const { outcomes, manager, updates = [] } = options;
|
|
24
|
+
const tasks = [];
|
|
25
|
+
for (const outcome of outcomes) {
|
|
26
|
+
const { migration, packageName, manifestPath } = outcome.pending;
|
|
27
|
+
const source = (0, migration_manifest_1.instructionsPath)({ manifestPath, migration });
|
|
28
|
+
const target = (_b = (_a = updates.find((update) => update.name === packageName)) === null || _a === void 0 ? void 0 : _a.to) !== null && _b !== void 0 ? _b : migration.version;
|
|
29
|
+
const shared = {
|
|
30
|
+
packageName,
|
|
31
|
+
name: migration.name,
|
|
32
|
+
version: migration.version,
|
|
33
|
+
description: migration.description,
|
|
34
|
+
instructionsFile: source ? (0, path_1.join)(exports.UPDATE_DIR, (0, exports.taskFileName)({ packageName, name: migration.name })) : undefined,
|
|
35
|
+
docsUrl: migration.docs ? `${(0, exports.docsBaseUrl)(target)}${migration.docs}` : undefined,
|
|
36
|
+
};
|
|
37
|
+
if (outcome.state === 'unsupported') {
|
|
38
|
+
tasks.push(Object.assign(Object.assign({}, shared), { kind: 'unsupported', command: (0, run_migrations_1.manualGeneratorCommand)({ manager, migration }) }));
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (outcome.state !== 'task')
|
|
42
|
+
continue;
|
|
43
|
+
if (migration.kind === 'manual' || migration.kind === 'assisted')
|
|
44
|
+
tasks.push(Object.assign(Object.assign({}, shared), { kind: migration.kind }));
|
|
45
|
+
}
|
|
46
|
+
return tasks;
|
|
47
|
+
};
|
|
48
|
+
exports.collectTasks = collectTasks;
|
|
49
|
+
const KIND_HEADINGS = {
|
|
50
|
+
unsupported: 'Codemods to run by hand',
|
|
51
|
+
manual: 'Changes that need a decision',
|
|
52
|
+
assisted: 'Changes an agent can make',
|
|
53
|
+
};
|
|
54
|
+
const renderTask = (task) => [
|
|
55
|
+
`### ${task.packageName} — ${task.name}`,
|
|
56
|
+
'',
|
|
57
|
+
`Landed in ${task.version}. ${task.description}`,
|
|
58
|
+
...(task.command ? ['', `Run: \`${task.command}\``] : []),
|
|
59
|
+
...(task.instructionsFile ? ['', `Instructions: \`${task.instructionsFile}\``] : []),
|
|
60
|
+
...(task.docsUrl ? ['', `Docs: ${task.docsUrl}`] : []),
|
|
61
|
+
'',
|
|
62
|
+
].join('\n');
|
|
63
|
+
const renderGroup = (kind, tasks) => {
|
|
64
|
+
const group = tasks.filter((task) => task.kind === kind);
|
|
65
|
+
if (group.length === 0)
|
|
66
|
+
return [];
|
|
67
|
+
return [`## ${KIND_HEADINGS[kind]}`, '', ...group.map(renderTask)];
|
|
68
|
+
};
|
|
69
|
+
const appliedOf = (outcomes) => outcomes
|
|
70
|
+
.filter((outcome) => outcome.state === 'applied')
|
|
71
|
+
.map((outcome) => {
|
|
72
|
+
var _a;
|
|
73
|
+
return ({
|
|
74
|
+
package: outcome.pending.packageName,
|
|
75
|
+
name: outcome.pending.migration.name,
|
|
76
|
+
generator: (_a = outcome.pending.migration.generator) !== null && _a !== void 0 ? _a : null,
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
const failedOf = (outcomes) => outcomes
|
|
80
|
+
.filter((outcome) => outcome.state === 'failed')
|
|
81
|
+
.map((outcome) => {
|
|
82
|
+
var _a;
|
|
83
|
+
return ({
|
|
84
|
+
package: outcome.pending.packageName,
|
|
85
|
+
name: outcome.pending.migration.name,
|
|
86
|
+
reason: (_a = outcome.reason) !== null && _a !== void 0 ? _a : null,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
const renderReport = (options) => {
|
|
90
|
+
const { updates, applied, failed, tasks, syncFailure } = options;
|
|
91
|
+
return [
|
|
92
|
+
'# Ethlete update: what is left to do',
|
|
93
|
+
'',
|
|
94
|
+
'`et update` moved these packages:',
|
|
95
|
+
'',
|
|
96
|
+
...updates.map((update) => { var _a; return `- \`${update.name}\`: ${(_a = update.from) !== null && _a !== void 0 ? _a : 'not installed'} → ${update.to}`; }),
|
|
97
|
+
'',
|
|
98
|
+
...(applied.length > 0
|
|
99
|
+
? [
|
|
100
|
+
'It applied these codemods:',
|
|
101
|
+
'',
|
|
102
|
+
...applied.map((codemod) => `- \`${codemod.package}\` ${codemod.name} (${codemod.generator})`),
|
|
103
|
+
'',
|
|
104
|
+
]
|
|
105
|
+
: []),
|
|
106
|
+
...(failed.length > 0
|
|
107
|
+
? [
|
|
108
|
+
'These codemods failed. Run each one again by hand and read its output:',
|
|
109
|
+
'',
|
|
110
|
+
...failed.map((codemod) => `- \`${codemod.package}\` ${codemod.name} — ${codemod.reason}`),
|
|
111
|
+
'',
|
|
112
|
+
]
|
|
113
|
+
: []),
|
|
114
|
+
...(syncFailure
|
|
115
|
+
? [
|
|
116
|
+
`The agent rules sync failed — ${syncFailure.reason}. Run \`${syncFailure.command}\` again by hand and read its output.`,
|
|
117
|
+
'',
|
|
118
|
+
]
|
|
119
|
+
: []),
|
|
120
|
+
...(tasks.length === 0
|
|
121
|
+
? ['Nothing else needs a decision.', '']
|
|
122
|
+
: [
|
|
123
|
+
'Everything below needs a decision the codemods cannot make.',
|
|
124
|
+
'',
|
|
125
|
+
...renderGroup('unsupported', tasks),
|
|
126
|
+
...renderGroup('manual', tasks),
|
|
127
|
+
...renderGroup('assisted', tasks),
|
|
128
|
+
]),
|
|
129
|
+
].join('\n');
|
|
130
|
+
};
|
|
131
|
+
const renderTasks = (options) => renderReport({
|
|
132
|
+
updates: options.updates,
|
|
133
|
+
applied: appliedOf(options.outcomes),
|
|
134
|
+
failed: failedOf(options.outcomes),
|
|
135
|
+
tasks: options.tasks,
|
|
136
|
+
syncFailure: options.syncFailure,
|
|
137
|
+
});
|
|
138
|
+
exports.renderTasks = renderTasks;
|
|
139
|
+
/**
|
|
140
|
+
* One task as its own file: what moved and where to read more, then the instructions the package ships.
|
|
141
|
+
* The header is what makes the file readable on its own once the update is over.
|
|
142
|
+
*/
|
|
143
|
+
const renderTaskFile = (options) => {
|
|
144
|
+
const { task, instructions } = options;
|
|
145
|
+
return [
|
|
146
|
+
`<!-- Written by et update. ${task.packageName} ${task.version}, migration "${task.name}". -->`,
|
|
147
|
+
'',
|
|
148
|
+
...(task.kind === 'assisted'
|
|
149
|
+
? ['> Hand this file to an agent. It describes one change to apply across this repository.', '']
|
|
150
|
+
: []),
|
|
151
|
+
`- Package: \`${task.packageName}\``,
|
|
152
|
+
`- Landed in: ${task.version}`,
|
|
153
|
+
`- Summary: ${task.description}`,
|
|
154
|
+
...(task.docsUrl ? [`- Docs: ${task.docsUrl}`] : []),
|
|
155
|
+
'',
|
|
156
|
+
'---',
|
|
157
|
+
'',
|
|
158
|
+
instructions.trim(),
|
|
159
|
+
].join('\n');
|
|
160
|
+
};
|
|
161
|
+
exports.renderTaskFile = renderTaskFile;
|
|
162
|
+
const TASK_KINDS = ['manual', 'assisted', 'unsupported'];
|
|
163
|
+
const isTask = (value) => {
|
|
164
|
+
if (typeof value !== 'object' || value === null)
|
|
165
|
+
return false;
|
|
166
|
+
const record = value;
|
|
167
|
+
return (['packageName', 'name', 'version', 'description'].every((key) => typeof record[key] === 'string') &&
|
|
168
|
+
typeof record['kind'] === 'string' &&
|
|
169
|
+
TASK_KINDS.includes(record['kind']));
|
|
170
|
+
};
|
|
171
|
+
const arrayOf = (value) => (Array.isArray(value) ? value : []);
|
|
172
|
+
const readTaskData = (root) => {
|
|
173
|
+
const path = (0, path_1.join)(root, exports.UPDATE_DIR, exports.TASKS_DATA_FILE);
|
|
174
|
+
if (!(0, fs_1.existsSync)(path))
|
|
175
|
+
return undefined;
|
|
176
|
+
let parsed;
|
|
177
|
+
try {
|
|
178
|
+
parsed = JSON.parse((0, fs_1.readFileSync)(path, 'utf8'));
|
|
179
|
+
}
|
|
180
|
+
catch (_a) {
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
184
|
+
return undefined;
|
|
185
|
+
const record = parsed;
|
|
186
|
+
return Object.assign(Object.assign({}, record), { updates: arrayOf(record['updates']), applied: arrayOf(record['applied']), failed: arrayOf(record['failed']), tasks: arrayOf(record['tasks']).filter(isTask) });
|
|
187
|
+
};
|
|
188
|
+
/** Deleting a task file is how a task is done, so a task is open while its file is still there. */
|
|
189
|
+
const openTasksOf = (root, tasks) => tasks.filter((task) => task.instructionsFile && (0, fs_1.existsSync)((0, path_1.join)(root, task.instructionsFile)));
|
|
190
|
+
const unfinishedEarlierTasks = (root) => { var _a, _b; return openTasksOf(root, (_b = (_a = readTaskData(root)) === null || _a === void 0 ? void 0 : _a.tasks) !== null && _b !== void 0 ? _b : []); };
|
|
191
|
+
const sameTask = (left, right) => left.packageName === right.packageName && left.name === right.name;
|
|
192
|
+
/**
|
|
193
|
+
* Writes the report, the machine-readable task list an agent reads, and a copy of every instructions
|
|
194
|
+
* file, so the whole task list stands on its own once `node_modules` changes again. A task an earlier
|
|
195
|
+
* run left is kept while its file is still there.
|
|
196
|
+
*/
|
|
197
|
+
const writeUpdateTasks = (options) => {
|
|
198
|
+
const { root, updates, outcomes, manager, generatedAt, syncFailure } = options;
|
|
199
|
+
const collected = (0, exports.collectTasks)({ outcomes, manager, updates });
|
|
200
|
+
const earlier = unfinishedEarlierTasks(root).filter((task) => !collected.some((next) => sameTask(task, next)));
|
|
201
|
+
const tasks = [...earlier, ...collected];
|
|
202
|
+
const directory = (0, path_1.join)(root, exports.UPDATE_DIR);
|
|
203
|
+
(0, fs_1.mkdirSync)(directory, { recursive: true });
|
|
204
|
+
for (const outcome of outcomes) {
|
|
205
|
+
const source = (0, migration_manifest_1.instructionsPath)({
|
|
206
|
+
manifestPath: outcome.pending.manifestPath,
|
|
207
|
+
migration: outcome.pending.migration,
|
|
208
|
+
});
|
|
209
|
+
const task = collected.find((candidate) => candidate.packageName === outcome.pending.packageName && candidate.name === outcome.pending.migration.name);
|
|
210
|
+
if (!source || !task)
|
|
211
|
+
continue;
|
|
212
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(directory, (0, exports.taskFileName)({ packageName: task.packageName, name: task.name })), `${(0, exports.renderTaskFile)({ task, instructions: (0, fs_1.readFileSync)(source, 'utf8') })}\n`, 'utf8');
|
|
213
|
+
}
|
|
214
|
+
const reportPath = (0, path_1.join)(exports.UPDATE_DIR, exports.TASKS_FILE);
|
|
215
|
+
const dataPath = (0, path_1.join)(exports.UPDATE_DIR, exports.TASKS_DATA_FILE);
|
|
216
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(root, reportPath), `${(0, exports.renderTasks)({ updates, outcomes, tasks, syncFailure }).trimEnd()}\n`, 'utf8');
|
|
217
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(root, dataPath), `${JSON.stringify(Object.assign(Object.assign({ generatedAt, updates: updates.map((update) => { var _a; return ({ package: update.name, from: (_a = update.from) !== null && _a !== void 0 ? _a : null, to: update.to }); }), applied: appliedOf(outcomes), failed: failedOf(outcomes) }, (syncFailure ? { syncFailed: syncFailure } : {})), { tasks }), null, 2)}\n`, 'utf8');
|
|
218
|
+
return { reportPath, dataPath, tasks };
|
|
219
|
+
};
|
|
220
|
+
exports.writeUpdateTasks = writeUpdateTasks;
|
|
221
|
+
/**
|
|
222
|
+
* Rewrites the task list of an earlier run without the tasks whose file was deleted, and returns the
|
|
223
|
+
* tasks still open. `undefined` when no run has written a task list.
|
|
224
|
+
*/
|
|
225
|
+
const refreshUpdateTasks = (root) => {
|
|
226
|
+
const data = readTaskData(root);
|
|
227
|
+
if (!data)
|
|
228
|
+
return undefined;
|
|
229
|
+
const tasks = openTasksOf(root, data.tasks);
|
|
230
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(root, exports.UPDATE_DIR, exports.TASKS_FILE), `${renderReport({
|
|
231
|
+
updates: data.updates.map((update) => { var _a; return ({ name: update.package, from: (_a = update.from) !== null && _a !== void 0 ? _a : undefined, to: update.to }); }),
|
|
232
|
+
applied: data.applied,
|
|
233
|
+
failed: data.failed,
|
|
234
|
+
tasks,
|
|
235
|
+
syncFailure: data.syncFailed,
|
|
236
|
+
}).trimEnd()}\n`, 'utf8');
|
|
237
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(root, exports.UPDATE_DIR, exports.TASKS_DATA_FILE), `${JSON.stringify(Object.assign(Object.assign({}, data), { tasks }), null, 2)}\n`, 'utf8');
|
|
238
|
+
return tasks;
|
|
239
|
+
};
|
|
240
|
+
exports.refreshUpdateTasks = refreshUpdateTasks;
|
|
241
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type UpdateCommandOptions = {
|
|
2
|
+
/** Arguments after `update`, for example `['core', '--tag', 'next']`. */
|
|
3
|
+
argv: string[];
|
|
4
|
+
root?: string;
|
|
5
|
+
/** How the caller is invoked, used in the usage line. */
|
|
6
|
+
invocation?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Moves this repo's `@ethlete/*` dependencies to a newer version and runs the migrations those versions
|
|
10
|
+
* ship. Everything the codemods cannot decide is written to a task list under `.ethlete/update`.
|
|
11
|
+
*/
|
|
12
|
+
export declare const updateCommand: ({ argv, root, invocation, }: UpdateCommandOptions) => Promise<number>;
|