@ethlete/cli 2.1.0-next.7 → 2.1.0-next.8
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 +9 -0
- package/README.md +35 -0
- package/package.json +1 -1
- package/src/index.js +11 -0
- package/src/index.js.map +1 -1
- package/src/lib/config/diagnose.js +9 -0
- package/src/lib/config/diagnose.js.map +1 -1
- package/src/lib/config/local-config.d.ts +2 -0
- package/src/lib/config/local-config.js +6 -1
- package/src/lib/config/local-config.js.map +1 -1
- package/src/lib/doctor/doctor-command.d.ts +3 -1
- package/src/lib/doctor/doctor-command.js +5 -5
- package/src/lib/doctor/doctor-command.js.map +1 -1
- package/src/lib/index.d.ts +1 -0
- package/src/lib/index.js +1 -0
- package/src/lib/index.js.map +1 -1
- package/src/lib/update/ai.d.ts +30 -0
- package/src/lib/update/ai.js +44 -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/index.d.ts +12 -0
- package/src/lib/update/index.js +16 -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 +23 -0
- package/src/lib/update/package-manager.js +47 -0
- package/src/lib/update/package-manager.js.map +1 -0
- package/src/lib/update/packages.d.ts +45 -0
- package/src/lib/update/packages.js +88 -0
- package/src/lib/update/packages.js.map +1 -0
- package/src/lib/update/pending.d.ts +21 -0
- package/src/lib/update/pending.js +41 -0
- package/src/lib/update/pending.js.map +1 -0
- package/src/lib/update/plan.d.ts +52 -0
- package/src/lib/update/plan.js +83 -0
- package/src/lib/update/plan.js.map +1 -0
- package/src/lib/update/registry.d.ts +31 -0
- package/src/lib/update/registry.js +54 -0
- package/src/lib/update/registry.js.map +1 -0
- package/src/lib/update/run-migrations.d.ts +44 -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 +58 -0
- package/src/lib/update/tasks.js +174 -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 +299 -0
- package/src/lib/update/update-command.js.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @ethlete/cli
|
|
2
2
|
|
|
3
|
+
## 2.1.0-next.8
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#3075](https://github.com/ethlete-io/ethdk/pull/3075) [`004c32d`](https://github.com/ethlete-io/ethdk/commit/004c32d0ada3d7862947843dd6e8b204876160fe) Thanks [@github-actions](https://github.com/apps/github-actions)! - `doctorCommand` accepts an optional `composeTools` override for the container-engine check.
|
|
8
|
+
|
|
9
|
+
- [#3075](https://github.com/ethlete-io/ethdk/pull/3075) [`1d38e7e`](https://github.com/ethlete-io/ethdk/commit/1d38e7e0a025769f065d8ca7d506cb75ad89139a) Thanks [@github-actions](https://github.com/apps/github-actions)! - `et update` moves the `@ethlete/*` packages to a newer version, runs the codemods those versions
|
|
10
|
+
declare in their own `migrations.json`, and reports what needs a decision or an agent.
|
|
11
|
+
|
|
3
12
|
## 2.1.0-next.7
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -34,6 +34,40 @@ The token is checked against the host first: once for the token itself, and once
|
|
|
34
34
|
`403` there, and nothing is written. A token the file already holds for that host is replaced only
|
|
35
35
|
after a question. `--force` skips both.
|
|
36
36
|
|
|
37
|
+
## `et update`
|
|
38
|
+
|
|
39
|
+
Moves this repo's `@ethlete/*` dependencies to a newer version and runs the migrations those versions
|
|
40
|
+
ship.
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
yarn et update --check # what would change; exits 1 while an update is pending
|
|
44
|
+
yarn et update # bump, install, run the codemods, report the rest
|
|
45
|
+
yarn et update core # only @ethlete/core
|
|
46
|
+
yarn et update --tag latest # leave the prerelease line
|
|
47
|
+
yarn et update core --to 5.0.0-next.55 # an exact version for the package you name
|
|
48
|
+
yarn et update --continue # finish a run that stopped
|
|
49
|
+
yarn et update --ai # hand every agent-assisted task to an agent
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The target follows the dist tag the installed version is on, so a repo on a `-next` prerelease stays
|
|
53
|
+
on `next`. The working tree must be clean, because the codemods rewrite files; `--force` skips that
|
|
54
|
+
check.
|
|
55
|
+
|
|
56
|
+
The install runs before the migrations are read, because the migrations of a version ship inside that
|
|
57
|
+
version. A run that stops leaves `.ethlete/update/pending.json` behind, and `--continue` picks it up -
|
|
58
|
+
starting over would skip every migration the stopped run had not reached.
|
|
59
|
+
|
|
60
|
+
Everything a codemod cannot decide is written to `.ethlete/update`: `tasks.md` for you, `tasks.json`
|
|
61
|
+
for an agent, and one file per task holding the instructions the package ships. A task is `manual` (it
|
|
62
|
+
needs a decision), `assisted` (written as a prompt for an agent) or `unsupported` (a codemod this repo
|
|
63
|
+
has no Nx to run, with the command to run it by hand).
|
|
64
|
+
|
|
65
|
+
`--ai` hands each assisted task to the command in `updateAgentCommand` in
|
|
66
|
+
`ethlete.config.local.json`, one run per task. No agent is detected automatically.
|
|
67
|
+
|
|
68
|
+
A package declares its migrations in `migrations.json` at its own root, pointed at from `package.json`
|
|
69
|
+
with `"ethlete": { "migrations": "./migrations.json" }`. The full format is on the docs site.
|
|
70
|
+
|
|
37
71
|
## `et api`
|
|
38
72
|
|
|
39
73
|
Runs the API an app in this repo talks to, from a checkout on your own machine.
|
|
@@ -141,3 +175,4 @@ fallback with a warning. Add `ethlete.config.local.json` to your `.gitignore`.
|
|
|
141
175
|
Full command reference on the docs site:
|
|
142
176
|
|
|
143
177
|
- [Overview & usage](https://ethlete-sdk-docs.web.app/cli/)
|
|
178
|
+
- [Updating the SDK](https://ethlete-sdk-docs.web.app/cli/update)
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -25,6 +25,11 @@ const USAGE_ROWS = [
|
|
|
25
25
|
args: '',
|
|
26
26
|
lines: ["Check this machine's ethlete.config.local.json, container engine", 'and every API checkout'],
|
|
27
27
|
},
|
|
28
|
+
{
|
|
29
|
+
subcommand: 'update',
|
|
30
|
+
args: ' [packages...]',
|
|
31
|
+
lines: ['Move the @ethlete/* packages to a newer version and run the', 'migrations those versions ship'],
|
|
32
|
+
},
|
|
28
33
|
];
|
|
29
34
|
const usage = (root) => {
|
|
30
35
|
const rows = USAGE_ROWS.map((row) => (Object.assign(Object.assign({}, row), { command: `${(0, lib_1.repoInvocation)({ root, subcommand: row.subcommand })}${row.args}` })));
|
|
@@ -55,6 +60,12 @@ const cli = (args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
|
55
60
|
argv: args.slice(1),
|
|
56
61
|
invocation: (0, lib_1.repoInvocation)({ root: process.cwd(), subcommand: 'auth' }),
|
|
57
62
|
});
|
|
63
|
+
case 'update':
|
|
64
|
+
return (0, lib_1.updateCommand)({
|
|
65
|
+
root: process.cwd(),
|
|
66
|
+
argv: args.slice(1),
|
|
67
|
+
invocation: (0, lib_1.repoInvocation)({ root: process.cwd(), subcommand: 'update' }),
|
|
68
|
+
});
|
|
58
69
|
case 'doctor':
|
|
59
70
|
// Every fix it names is an `et api` command, so it needs that script rather than its own.
|
|
60
71
|
return (0, lib_1.doctorCommand)({
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/cli/src/index.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/cli/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,12 +59,21 @@ const describeApiRepoBranches = (options) => {
|
|
|
59
59
|
? []
|
|
60
60
|
: [`${fileName} has an invalid "apiRepoBranches.${app}" value — use a non-empty branch name.`]);
|
|
61
61
|
};
|
|
62
|
+
const describeUpdateAgentCommand = (options) => {
|
|
63
|
+
const { value, fileName } = options;
|
|
64
|
+
if (value === undefined)
|
|
65
|
+
return [];
|
|
66
|
+
return typeof value === 'string' && value.trim().length > 0
|
|
67
|
+
? []
|
|
68
|
+
: [`${fileName} has an invalid "updateAgentCommand" value — use the command that hands a prompt to an agent.`];
|
|
69
|
+
};
|
|
62
70
|
const describeValues = (options) => {
|
|
63
71
|
const { root, config, fileName } = options;
|
|
64
72
|
return [
|
|
65
73
|
...describeSdkSourcePath({ root, value: config.sdkSourcePath, fileName }),
|
|
66
74
|
...describeApiRepoPaths({ root, value: config.apiRepoPaths, fileName }),
|
|
67
75
|
...describeApiRepoBranches({ value: config.apiRepoBranches, fileName }),
|
|
76
|
+
...describeUpdateAgentCommand({ value: config.updateAgentCommand, fileName }),
|
|
68
77
|
];
|
|
69
78
|
};
|
|
70
79
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/config/diagnose.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/config/diagnose.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export type LocalConfig = {
|
|
|
15
15
|
apiRepoPaths?: Record<string, string>;
|
|
16
16
|
/** Branch that represents each API's deployed state, keyed by app name. `"*"` matches any app. */
|
|
17
17
|
apiRepoBranches?: Record<string, string>;
|
|
18
|
+
/** Command `et update --ai` hands an assisted migration task to, for example `claude -p`. */
|
|
19
|
+
updateAgentCommand?: string;
|
|
18
20
|
};
|
|
19
21
|
export declare const LOCAL_CONFIG_KEYS: (keyof LocalConfig)[];
|
|
20
22
|
export type LocalConfigFileState = {
|
|
@@ -9,7 +9,12 @@ exports.LOCAL_CONFIG_FILE_NAME = 'ethlete.config.local.json';
|
|
|
9
9
|
* fallback so an existing checkout keeps working, and reported so the developer can move them.
|
|
10
10
|
*/
|
|
11
11
|
exports.LEGACY_LOCAL_CONFIG_FILE_NAME = 'ethlete-agents.config.local.json';
|
|
12
|
-
exports.LOCAL_CONFIG_KEYS = [
|
|
12
|
+
exports.LOCAL_CONFIG_KEYS = [
|
|
13
|
+
'sdkSourcePath',
|
|
14
|
+
'apiRepoPaths',
|
|
15
|
+
'apiRepoBranches',
|
|
16
|
+
'updateAgentCommand',
|
|
17
|
+
];
|
|
13
18
|
/** Reads one config file, keeping "not there" apart from "there but broken" for `et doctor`. */
|
|
14
19
|
const readLocalConfigFile = (path) => {
|
|
15
20
|
if (!(0, fs_1.existsSync)(path))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-config.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/config/local-config.ts"],"names":[],"mappings":";;;AAAA,2BAA8C;AAC9C,+BAAiD;AAEpC,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AAElE;;;GAGG;AACU,QAAA,6BAA6B,GAAG,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"local-config.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/config/local-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { ComposeTool } from '../api/compose';
|
|
1
2
|
/** Reports every problem with this machine's setup, so `et api` does not have to find them one at a time. */
|
|
2
|
-
export declare const doctorCommand: ({ root, apiInvocation }: {
|
|
3
|
+
export declare const doctorCommand: ({ root, apiInvocation, composeTools, }: {
|
|
3
4
|
root: string;
|
|
4
5
|
apiInvocation?: string;
|
|
6
|
+
composeTools?: ComposeTool[];
|
|
5
7
|
}) => 0 | 1;
|
|
@@ -8,11 +8,11 @@ const resolve_checkout_1 = require("../api/resolve-checkout");
|
|
|
8
8
|
const diagnose_1 = require("../config/diagnose");
|
|
9
9
|
const local_config_1 = require("../config/local-config");
|
|
10
10
|
const indent = (text) => text.replace(/\n/g, '\n ');
|
|
11
|
-
const describeComposeTool = () => {
|
|
12
|
-
const tool = (0, compose_1.resolveComposeTool)();
|
|
11
|
+
const describeComposeTool = (composeTools) => {
|
|
12
|
+
const tool = (0, compose_1.resolveComposeTool)(composeTools);
|
|
13
13
|
return tool
|
|
14
14
|
? { line: `container engine: ${(0, compose_1.composeBinary)(tool.compose).join(' ')}`, problems: [] }
|
|
15
|
-
: { line: undefined, problems: [`No compose tool found. Tried: ${(0, compose_1.composeToolNames)().join(', ')}.`] };
|
|
15
|
+
: { line: undefined, problems: [`No compose tool found. Tried: ${(0, compose_1.composeToolNames)(composeTools).join(', ')}.`] };
|
|
16
16
|
};
|
|
17
17
|
const describeApis = (root, apiInvocation) => {
|
|
18
18
|
const { found, apis, fileName } = (0, load_definitions_1.loadApiDefinitions)(root);
|
|
@@ -32,7 +32,7 @@ const describeApis = (root, apiInvocation) => {
|
|
|
32
32
|
return { lines, problems };
|
|
33
33
|
};
|
|
34
34
|
/** Reports every problem with this machine's setup, so `et api` does not have to find them one at a time. */
|
|
35
|
-
const doctorCommand = ({ root, apiInvocation = 'et api' }) => {
|
|
35
|
+
const doctorCommand = ({ root, apiInvocation = 'et api', composeTools, }) => {
|
|
36
36
|
// A file that exists but cannot be parsed still has to be reported, so this asks whether the file
|
|
37
37
|
// is there rather than whether it could be read.
|
|
38
38
|
const hasConfig = [local_config_1.LOCAL_CONFIG_FILE_NAME, local_config_1.LEGACY_LOCAL_CONFIG_FILE_NAME].some((fileName) => (0, local_config_1.readLocalConfigFile)((0, path_1.join)(root, fileName)).status !== 'absent');
|
|
@@ -42,7 +42,7 @@ const doctorCommand = ({ root, apiInvocation = 'et api' }) => {
|
|
|
42
42
|
return 0;
|
|
43
43
|
}
|
|
44
44
|
const configProblems = (0, diagnose_1.diagnoseLocalConfig)({ root });
|
|
45
|
-
const compose = describeComposeTool();
|
|
45
|
+
const compose = describeComposeTool(composeTools);
|
|
46
46
|
const apis = describeApis(root, apiInvocation);
|
|
47
47
|
const problems = [...configProblems, ...compose.problems, ...apis.problems];
|
|
48
48
|
for (const line of [compose.line, ...apis.lines].filter(Boolean)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-command.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/doctor/doctor-command.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"doctor-command.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/doctor/doctor-command.ts"],"names":[],"mappings":"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"}
|
package/src/lib/index.d.ts
CHANGED
package/src/lib/index.js
CHANGED
|
@@ -7,4 +7,5 @@ tslib_1.__exportStar(require("./config"), exports);
|
|
|
7
7
|
tslib_1.__exportStar(require("./doctor"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./invocation"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./release"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./update"), exports);
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/src/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,iDAAuB;AACvB,mDAAyB;AACzB,mDAAyB;AACzB,uDAA6B;AAC7B,oDAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,iDAAuB;AACvB,mDAAyB;AACzB,mDAAyB;AACzB,uDAA6B;AAC7B,oDAA0B;AAC1B,mDAAyB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { UpdateTask } from './tasks';
|
|
2
|
+
/** Where the agent command sits in `ethlete.config.local.json`. */
|
|
3
|
+
export declare const AGENT_COMMAND_KEY = "updateAgentCommand";
|
|
4
|
+
/** What the command template is asked to hold, so the prompt can go anywhere in it. */
|
|
5
|
+
export declare const PROMPT_PLACEHOLDER = "<prompt>";
|
|
6
|
+
/**
|
|
7
|
+
* The command that hands one task to an agent. `<prompt>` becomes the path of the task file; a template
|
|
8
|
+
* without it gets the path appended, which is what a plain `claude -p` needs.
|
|
9
|
+
*/
|
|
10
|
+
export declare const agentCommand: (options: {
|
|
11
|
+
template: string;
|
|
12
|
+
promptPath: string;
|
|
13
|
+
}) => string;
|
|
14
|
+
export type AgentRun = {
|
|
15
|
+
task: UpdateTask;
|
|
16
|
+
command: string;
|
|
17
|
+
ok: boolean;
|
|
18
|
+
reason?: string;
|
|
19
|
+
};
|
|
20
|
+
/** The tasks an agent can work on: the ones whose instructions were written as a prompt. */
|
|
21
|
+
export declare const assistedTasks: (tasks: readonly UpdateTask[]) => UpdateTask[];
|
|
22
|
+
/**
|
|
23
|
+
* Runs the configured agent once per assisted task, in order, so each run has one change to make. The
|
|
24
|
+
* command is a user-written string, so it runs through a shell.
|
|
25
|
+
*/
|
|
26
|
+
export declare const runAgentTasks: (options: {
|
|
27
|
+
root: string;
|
|
28
|
+
template: string;
|
|
29
|
+
tasks: readonly UpdateTask[];
|
|
30
|
+
}) => AgentRun[];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runAgentTasks = exports.assistedTasks = exports.agentCommand = exports.PROMPT_PLACEHOLDER = exports.AGENT_COMMAND_KEY = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
/** Where the agent command sits in `ethlete.config.local.json`. */
|
|
7
|
+
exports.AGENT_COMMAND_KEY = 'updateAgentCommand';
|
|
8
|
+
/** What the command template is asked to hold, so the prompt can go anywhere in it. */
|
|
9
|
+
exports.PROMPT_PLACEHOLDER = '<prompt>';
|
|
10
|
+
/**
|
|
11
|
+
* The command that hands one task to an agent. `<prompt>` becomes the path of the task file; a template
|
|
12
|
+
* without it gets the path appended, which is what a plain `claude -p` needs.
|
|
13
|
+
*/
|
|
14
|
+
const agentCommand = (options) => {
|
|
15
|
+
const { template, promptPath } = options;
|
|
16
|
+
const quoted = /\s/.test(promptPath) ? `"${promptPath}"` : promptPath;
|
|
17
|
+
return template.includes(exports.PROMPT_PLACEHOLDER)
|
|
18
|
+
? template.split(exports.PROMPT_PLACEHOLDER).join(quoted)
|
|
19
|
+
: `${template} ${quoted}`;
|
|
20
|
+
};
|
|
21
|
+
exports.agentCommand = agentCommand;
|
|
22
|
+
/** The tasks an agent can work on: the ones whose instructions were written as a prompt. */
|
|
23
|
+
const assistedTasks = (tasks) => tasks.filter((task) => task.kind === 'assisted' && task.instructionsFile !== undefined);
|
|
24
|
+
exports.assistedTasks = assistedTasks;
|
|
25
|
+
/**
|
|
26
|
+
* Runs the configured agent once per assisted task, in order, so each run has one change to make. The
|
|
27
|
+
* command is a user-written string, so it runs through a shell.
|
|
28
|
+
*/
|
|
29
|
+
const runAgentTasks = (options) => {
|
|
30
|
+
const { root, template, tasks } = options;
|
|
31
|
+
return (0, exports.assistedTasks)(tasks).map((task) => {
|
|
32
|
+
var _a;
|
|
33
|
+
const command = (0, exports.agentCommand)({ template, promptPath: (0, path_1.join)(root, (_a = task.instructionsFile) !== null && _a !== void 0 ? _a : '') });
|
|
34
|
+
console.log(`\n ${command}`);
|
|
35
|
+
const result = (0, child_process_1.spawnSync)(command, { cwd: root, stdio: 'inherit', shell: true });
|
|
36
|
+
if (result.error)
|
|
37
|
+
return { task, command, ok: false, reason: result.error.message };
|
|
38
|
+
if (result.status !== 0)
|
|
39
|
+
return { task, command, ok: false, reason: `exited with ${result.status}` };
|
|
40
|
+
return { task, command, ok: true };
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.runAgentTasks = runAgentTasks;
|
|
44
|
+
//# sourceMappingURL=ai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/ai.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAC1C,+BAA4B;AAG5B,mEAAmE;AACtD,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD,uFAAuF;AAC1E,QAAA,kBAAkB,GAAG,UAAU,CAAC;AAE7C;;;GAGG;AACI,MAAM,YAAY,GAAG,CAAC,OAAiD,EAAE,EAAE;IAChF,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;IAEtE,OAAO,QAAQ,CAAC,QAAQ,CAAC,0BAAkB,CAAC;QAC1C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,0BAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACjD,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;AAC9B,CAAC,CAAC;AAPW,QAAA,YAAY,gBAOvB;AASF,4FAA4F;AACrF,MAAM,aAAa,GAAG,CAAC,KAA4B,EAAE,EAAE,CAC5D,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC;AAD7E,QAAA,aAAa,iBACgE;AAE1F;;;GAGG;AACI,MAAM,aAAa,GAAG,CAAC,OAI7B,EAAc,EAAE;IACf,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1C,OAAO,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;;QACvC,MAAM,OAAO,GAAG,IAAA,oBAAY,EAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,MAAA,IAAI,CAAC,gBAAgB,mCAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAEhG,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhF,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAEpF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAErG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AApBW,QAAA,aAAa,iBAoBxB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type UpdateArgs = {
|
|
2
|
+
/** Full package names the run is limited to. Empty means every `@ethlete/*` the manifest declares. */
|
|
3
|
+
packages: string[];
|
|
4
|
+
tag?: string;
|
|
5
|
+
/** A single version named with `--to`. */
|
|
6
|
+
version?: string;
|
|
7
|
+
/** The version the migrations of a package run from, keyed by full package name. */
|
|
8
|
+
from: Record<string, string>;
|
|
9
|
+
check: boolean;
|
|
10
|
+
dryRun: boolean;
|
|
11
|
+
install: boolean;
|
|
12
|
+
resume: boolean;
|
|
13
|
+
ai: boolean;
|
|
14
|
+
force: boolean;
|
|
15
|
+
help: boolean;
|
|
16
|
+
problems: string[];
|
|
17
|
+
};
|
|
18
|
+
/** `core` and `@ethlete/core` both name the same package on the command line. */
|
|
19
|
+
export declare const fullPackageName: (name: string) => string;
|
|
20
|
+
/** Reads the flags of `et update`, collecting every problem so one run reports them all. */
|
|
21
|
+
export declare const parseUpdateArgs: (argv: readonly string[]) => UpdateArgs;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseUpdateArgs = exports.fullPackageName = void 0;
|
|
4
|
+
const packages_1 = require("./packages");
|
|
5
|
+
const VALUE_FLAGS = ['--tag', '--to', '--from'];
|
|
6
|
+
const BOOLEAN_FLAGS = ['--check', '--dry-run', '--no-install', '--continue', '--ai', '--force', '--help', '-h'];
|
|
7
|
+
/** `core` and `@ethlete/core` both name the same package on the command line. */
|
|
8
|
+
const fullPackageName = (name) => (name.includes('/') ? name : `${packages_1.ETHLETE_SCOPE}${name}`);
|
|
9
|
+
exports.fullPackageName = fullPackageName;
|
|
10
|
+
const splitFlag = (argument) => {
|
|
11
|
+
const separator = argument.indexOf('=');
|
|
12
|
+
return separator === -1
|
|
13
|
+
? { flag: argument, inline: undefined }
|
|
14
|
+
: { flag: argument.slice(0, separator), inline: argument.slice(separator + 1) };
|
|
15
|
+
};
|
|
16
|
+
/** Reads the flags of `et update`, collecting every problem so one run reports them all. */
|
|
17
|
+
const parseUpdateArgs = (argv) => {
|
|
18
|
+
var _a;
|
|
19
|
+
const args = {
|
|
20
|
+
packages: [],
|
|
21
|
+
from: {},
|
|
22
|
+
check: false,
|
|
23
|
+
dryRun: false,
|
|
24
|
+
install: true,
|
|
25
|
+
resume: false,
|
|
26
|
+
ai: false,
|
|
27
|
+
force: false,
|
|
28
|
+
help: false,
|
|
29
|
+
problems: [],
|
|
30
|
+
};
|
|
31
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
32
|
+
const argument = (_a = argv[index]) !== null && _a !== void 0 ? _a : '';
|
|
33
|
+
if (!argument.startsWith('-')) {
|
|
34
|
+
args.packages.push((0, exports.fullPackageName)(argument));
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const { flag, inline } = splitFlag(argument);
|
|
38
|
+
if (VALUE_FLAGS.includes(flag)) {
|
|
39
|
+
const value = inline !== null && inline !== void 0 ? inline : argv[index + 1];
|
|
40
|
+
if (inline === undefined)
|
|
41
|
+
index += 1;
|
|
42
|
+
if (value === undefined || value.startsWith('-')) {
|
|
43
|
+
args.problems.push(`${flag} needs a value.`);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (flag === '--tag')
|
|
47
|
+
args.tag = value;
|
|
48
|
+
if (flag === '--to')
|
|
49
|
+
args.version = value;
|
|
50
|
+
if (flag === '--from') {
|
|
51
|
+
const separator = value.lastIndexOf('@');
|
|
52
|
+
const name = separator > 0 ? value.slice(0, separator) : undefined;
|
|
53
|
+
const version = separator > 0 ? value.slice(separator + 1) : undefined;
|
|
54
|
+
if (!name || !version)
|
|
55
|
+
args.problems.push(`--from needs <package>@<version>, not "${value}".`);
|
|
56
|
+
else
|
|
57
|
+
args.from[(0, exports.fullPackageName)(name)] = version;
|
|
58
|
+
}
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (!BOOLEAN_FLAGS.includes(flag)) {
|
|
62
|
+
args.problems.push(`Unknown flag "${flag}".`);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (flag === '--check')
|
|
66
|
+
args.check = true;
|
|
67
|
+
if (flag === '--dry-run')
|
|
68
|
+
args.dryRun = true;
|
|
69
|
+
if (flag === '--no-install')
|
|
70
|
+
args.install = false;
|
|
71
|
+
if (flag === '--continue')
|
|
72
|
+
args.resume = true;
|
|
73
|
+
if (flag === '--ai')
|
|
74
|
+
args.ai = true;
|
|
75
|
+
if (flag === '--force')
|
|
76
|
+
args.force = true;
|
|
77
|
+
if (flag === '--help' || flag === '-h')
|
|
78
|
+
args.help = true;
|
|
79
|
+
}
|
|
80
|
+
if (args.version !== undefined && args.tag !== undefined) {
|
|
81
|
+
args.problems.push('--to and --tag ask for different targets. Pass one of them.');
|
|
82
|
+
}
|
|
83
|
+
if (args.version !== undefined && args.packages.length !== 1) {
|
|
84
|
+
args.problems.push('--to sets the version of one package, so name that package.');
|
|
85
|
+
}
|
|
86
|
+
return args;
|
|
87
|
+
};
|
|
88
|
+
exports.parseUpdateArgs = parseUpdateArgs;
|
|
89
|
+
//# sourceMappingURL=args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/args.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAoB3C,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEhD,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEhH,iFAAiF;AAC1E,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,wBAAa,GAAG,IAAI,EAAE,CAAC,CAAC;AAA5F,QAAA,eAAe,mBAA6E;AAEzG,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAExC,OAAO,SAAS,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;QACvC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AACpF,CAAC,CAAC;AAEF,4FAA4F;AACrF,MAAM,eAAe,GAAG,CAAC,IAAuB,EAAc,EAAE;;IACrE,MAAM,IAAI,GAAe;QACvB,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,KAAK;QACb,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAExC,IAAI,MAAM,KAAK,SAAS;gBAAE,KAAK,IAAI,CAAC,CAAC;YAErC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC;gBAC7C,SAAS;YACX,CAAC;YAED,IAAI,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;YACvC,IAAI,IAAI,KAAK,MAAM;gBAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAE1C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnE,MAAM,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEvE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;oBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,0CAA0C,KAAK,IAAI,CAAC,CAAC;;oBAC1F,IAAI,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;YAClD,CAAC;YAED,SAAS;QACX,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAC1C,IAAI,IAAI,KAAK,WAAW;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAC7C,IAAI,IAAI,KAAK,cAAc;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAClD,IAAI,IAAI,KAAK,YAAY;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAC9C,IAAI,IAAI,KAAK,MAAM;YAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAC1C,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAC3D,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAxEW,QAAA,eAAe,mBAwE1B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './ai';
|
|
2
|
+
export * from './args';
|
|
3
|
+
export * from './migration-manifest';
|
|
4
|
+
export * from './package-manager';
|
|
5
|
+
export * from './packages';
|
|
6
|
+
export * from './pending';
|
|
7
|
+
export * from './plan';
|
|
8
|
+
export * from './registry';
|
|
9
|
+
export * from './run-migrations';
|
|
10
|
+
export * from './semver';
|
|
11
|
+
export * from './tasks';
|
|
12
|
+
export * from './update-command';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./ai"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./args"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./migration-manifest"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./package-manager"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./packages"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./pending"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./plan"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./registry"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./run-migrations"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./semver"), exports);
|
|
14
|
+
tslib_1.__exportStar(require("./tasks"), exports);
|
|
15
|
+
tslib_1.__exportStar(require("./update-command"), exports);
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqB;AACrB,iDAAuB;AACvB,+DAAqC;AACrC,4DAAkC;AAClC,qDAA2B;AAC3B,oDAA0B;AAC1B,iDAAuB;AACvB,qDAA2B;AAC3B,2DAAiC;AACjC,mDAAyB;AACzB,kDAAwB;AACxB,2DAAiC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** The `package.json` field a package points at its own migration manifest with. */
|
|
2
|
+
export declare const MIGRATIONS_MANIFEST_KEY = "ethlete";
|
|
3
|
+
export declare const MIGRATION_KINDS: readonly ["auto", "manual", "assisted"];
|
|
4
|
+
export type MigrationKind = (typeof MIGRATION_KINDS)[number];
|
|
5
|
+
export type Migration = {
|
|
6
|
+
/** Unique inside its package, and stable: it names the migration in every report. */
|
|
7
|
+
name: string;
|
|
8
|
+
/** The version the change landed in. The migration is pending for an update that crosses it. */
|
|
9
|
+
version: string;
|
|
10
|
+
kind: MigrationKind;
|
|
11
|
+
description: string;
|
|
12
|
+
/** `auto` only: the Nx generator that rewrites the code, as `@ethlete/core:migrate-x`. */
|
|
13
|
+
generator?: string;
|
|
14
|
+
/** `auto` only: flags handed to the generator, for example `{ skipFormat: true }`. */
|
|
15
|
+
options?: Record<string, string | number | boolean>;
|
|
16
|
+
/** Markdown next to the manifest: the recommendation for `manual`, the prompt for `assisted`. */
|
|
17
|
+
instructions?: string;
|
|
18
|
+
/** Path on the docs site, for example `/components/button`. */
|
|
19
|
+
docs?: string;
|
|
20
|
+
};
|
|
21
|
+
export type PackageMigrations = {
|
|
22
|
+
packageName: string;
|
|
23
|
+
migrations: Migration[];
|
|
24
|
+
/** Where the manifest was read from, so an instructions path can be resolved against it. */
|
|
25
|
+
manifestPath?: string;
|
|
26
|
+
problems: string[];
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The migrations an installed package ships, read from the manifest its `package.json` points at.
|
|
30
|
+
* A package that declares none is not a problem — most versions need no migration.
|
|
31
|
+
*/
|
|
32
|
+
export declare const readPackageMigrations: (options: {
|
|
33
|
+
root: string;
|
|
34
|
+
packageName: string;
|
|
35
|
+
}) => PackageMigrations;
|
|
36
|
+
/** The absolute path of a migration's instructions file, or `undefined` when it names none. */
|
|
37
|
+
export declare const instructionsPath: (options: {
|
|
38
|
+
manifestPath?: string;
|
|
39
|
+
migration: Migration;
|
|
40
|
+
}) => string | undefined;
|