@ethlete/cli 2.0.1-next.2 → 2.1.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +173 -6
  3. package/design/define-call.ts +92 -0
  4. package/design/web/env.d.ts +11 -0
  5. package/design/web/frame.html +17 -0
  6. package/design/web/frame.ts +38 -0
  7. package/design/web/host.css +494 -0
  8. package/design/web/host.ts +445 -0
  9. package/design/web/index.html +11 -0
  10. package/package.json +12 -1
  11. package/src/index.d.ts +1 -1
  12. package/src/index.js +96 -10
  13. package/src/index.js.map +1 -1
  14. package/src/lib/api/api-command.d.ts +5 -0
  15. package/src/lib/api/api-command.js +27 -0
  16. package/src/lib/api/api-command.js.map +1 -0
  17. package/src/lib/api/auth-hint.d.ts +16 -0
  18. package/src/lib/api/auth-hint.js +59 -0
  19. package/src/lib/api/auth-hint.js.map +1 -0
  20. package/src/lib/api/clear.d.ts +36 -0
  21. package/src/lib/api/clear.js +121 -0
  22. package/src/lib/api/clear.js.map +1 -0
  23. package/src/lib/api/clone.d.ts +12 -0
  24. package/src/lib/api/clone.js +24 -0
  25. package/src/lib/api/clone.js.map +1 -0
  26. package/src/lib/api/compose.d.ts +46 -0
  27. package/src/lib/api/compose.js +101 -0
  28. package/src/lib/api/compose.js.map +1 -0
  29. package/src/lib/api/definition.d.ts +37 -0
  30. package/src/lib/api/definition.js +33 -0
  31. package/src/lib/api/definition.js.map +1 -0
  32. package/src/lib/api/git.d.ts +25 -0
  33. package/src/lib/api/git.js +71 -0
  34. package/src/lib/api/git.js.map +1 -0
  35. package/src/lib/api/help.d.ts +11 -0
  36. package/src/lib/api/help.js +72 -0
  37. package/src/lib/api/help.js.map +1 -0
  38. package/src/lib/api/index.d.ts +15 -0
  39. package/src/lib/api/index.js +19 -0
  40. package/src/lib/api/index.js.map +1 -0
  41. package/src/lib/api/load-definitions.d.ts +16 -0
  42. package/src/lib/api/load-definitions.js +22 -0
  43. package/src/lib/api/load-definitions.js.map +1 -0
  44. package/src/lib/api/ports.d.ts +13 -0
  45. package/src/lib/api/ports.js +98 -0
  46. package/src/lib/api/ports.js.map +1 -0
  47. package/src/lib/api/resolve-checkout.d.ts +45 -0
  48. package/src/lib/api/resolve-checkout.js +91 -0
  49. package/src/lib/api/resolve-checkout.js.map +1 -0
  50. package/src/lib/api/run.d.ts +10 -0
  51. package/src/lib/api/run.js +332 -0
  52. package/src/lib/api/run.js.map +1 -0
  53. package/src/lib/api/setup.d.ts +15 -0
  54. package/src/lib/api/setup.js +41 -0
  55. package/src/lib/api/setup.js.map +1 -0
  56. package/src/lib/api/state.d.ts +20 -0
  57. package/src/lib/api/state.js +33 -0
  58. package/src/lib/api/state.js.map +1 -0
  59. package/src/lib/api/suggest.d.ts +7 -0
  60. package/src/lib/api/suggest.js +35 -0
  61. package/src/lib/api/suggest.js.map +1 -0
  62. package/src/lib/auth/auth-command.d.ts +11 -0
  63. package/src/lib/auth/auth-command.js +165 -0
  64. package/src/lib/auth/auth-command.js.map +1 -0
  65. package/src/lib/auth/composer-auth.d.ts +30 -0
  66. package/src/lib/auth/composer-auth.js +70 -0
  67. package/src/lib/auth/composer-auth.js.map +1 -0
  68. package/src/lib/auth/composer-repositories.d.ts +5 -0
  69. package/src/lib/auth/composer-repositories.js +33 -0
  70. package/src/lib/auth/composer-repositories.js.map +1 -0
  71. package/src/lib/auth/gitlab-token.d.ts +43 -0
  72. package/src/lib/auth/gitlab-token.js +72 -0
  73. package/src/lib/auth/gitlab-token.js.map +1 -0
  74. package/src/lib/auth/index.d.ts +4 -0
  75. package/src/lib/auth/index.js +8 -0
  76. package/src/lib/auth/index.js.map +1 -0
  77. package/src/lib/config/diagnose.d.ts +7 -0
  78. package/src/lib/config/diagnose.js +112 -0
  79. package/src/lib/config/diagnose.js.map +1 -0
  80. package/src/lib/config/index.d.ts +2 -0
  81. package/src/lib/config/index.js +6 -0
  82. package/src/lib/config/index.js.map +1 -0
  83. package/src/lib/config/local-config.d.ts +46 -0
  84. package/src/lib/config/local-config.js +57 -0
  85. package/src/lib/config/local-config.js.map +1 -0
  86. package/src/lib/design/calls-tsconfig.d.ts +6 -0
  87. package/src/lib/design/calls-tsconfig.js +37 -0
  88. package/src/lib/design/calls-tsconfig.js.map +1 -0
  89. package/src/lib/design/check.d.ts +11 -0
  90. package/src/lib/design/check.js +192 -0
  91. package/src/lib/design/check.js.map +1 -0
  92. package/src/lib/design/design-command.d.ts +10 -0
  93. package/src/lib/design/design-command.js +32 -0
  94. package/src/lib/design/design-command.js.map +1 -0
  95. package/src/lib/design/index.d.ts +5 -0
  96. package/src/lib/design/index.js +9 -0
  97. package/src/lib/design/index.js.map +1 -0
  98. package/src/lib/design/paths.d.ts +24 -0
  99. package/src/lib/design/paths.js +31 -0
  100. package/src/lib/design/paths.js.map +1 -0
  101. package/src/lib/design/serve.d.ts +7 -0
  102. package/src/lib/design/serve.js +144 -0
  103. package/src/lib/design/serve.js.map +1 -0
  104. package/src/lib/doctor/doctor-command.d.ts +7 -0
  105. package/src/lib/doctor/doctor-command.js +62 -0
  106. package/src/lib/doctor/doctor-command.js.map +1 -0
  107. package/src/lib/doctor/index.d.ts +1 -0
  108. package/src/lib/doctor/index.js +5 -0
  109. package/src/lib/doctor/index.js.map +1 -0
  110. package/src/lib/index.d.ts +7 -0
  111. package/src/lib/index.js +7 -0
  112. package/src/lib/index.js.map +1 -1
  113. package/src/lib/invocation.d.ts +9 -0
  114. package/src/lib/invocation.js +47 -0
  115. package/src/lib/invocation.js.map +1 -0
  116. package/src/lib/release.js +21 -3
  117. package/src/lib/release.js.map +1 -1
  118. package/src/lib/update/ai.d.ts +30 -0
  119. package/src/lib/update/ai.js +44 -0
  120. package/src/lib/update/ai.js.map +1 -0
  121. package/src/lib/update/args.d.ts +21 -0
  122. package/src/lib/update/args.js +89 -0
  123. package/src/lib/update/args.js.map +1 -0
  124. package/src/lib/update/index.d.ts +12 -0
  125. package/src/lib/update/index.js +16 -0
  126. package/src/lib/update/index.js.map +1 -0
  127. package/src/lib/update/migration-manifest.d.ts +40 -0
  128. package/src/lib/update/migration-manifest.js +137 -0
  129. package/src/lib/update/migration-manifest.js.map +1 -0
  130. package/src/lib/update/package-manager.d.ts +23 -0
  131. package/src/lib/update/package-manager.js +47 -0
  132. package/src/lib/update/package-manager.js.map +1 -0
  133. package/src/lib/update/packages.d.ts +65 -0
  134. package/src/lib/update/packages.js +147 -0
  135. package/src/lib/update/packages.js.map +1 -0
  136. package/src/lib/update/pending.d.ts +21 -0
  137. package/src/lib/update/pending.js +41 -0
  138. package/src/lib/update/pending.js.map +1 -0
  139. package/src/lib/update/plan.d.ts +51 -0
  140. package/src/lib/update/plan.js +101 -0
  141. package/src/lib/update/plan.js.map +1 -0
  142. package/src/lib/update/registry.d.ts +31 -0
  143. package/src/lib/update/registry.js +54 -0
  144. package/src/lib/update/registry.js.map +1 -0
  145. package/src/lib/update/run-migrations.d.ts +44 -0
  146. package/src/lib/update/run-migrations.js +73 -0
  147. package/src/lib/update/run-migrations.js.map +1 -0
  148. package/src/lib/update/semver.d.ts +19 -0
  149. package/src/lib/update/semver.js +79 -0
  150. package/src/lib/update/semver.js.map +1 -0
  151. package/src/lib/update/tasks.d.ts +58 -0
  152. package/src/lib/update/tasks.js +174 -0
  153. package/src/lib/update/tasks.js.map +1 -0
  154. package/src/lib/update/update-command.d.ts +12 -0
  155. package/src/lib/update/update-command.js +304 -0
  156. package/src/lib/update/update-command.js.map +1 -0
  157. package/src/lib/utils.d.ts +14 -0
  158. package/src/lib/utils.js +14 -1
  159. package/src/lib/utils.js.map +1 -1
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serveDesign = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ const calls_tsconfig_1 = require("./calls-tsconfig");
8
+ const paths_1 = require("./paths");
9
+ const VIRTUAL = 'virtual:design-explore';
10
+ /** What a slug says about which project drew it: its first segment. */
11
+ const projectOf = (slug) => { var _a; return (_a = slug.split('/')[0]) !== null && _a !== void 0 ? _a : ''; };
12
+ const fsUrl = (target, path) => `/@fs/${(0, path_1.resolve)(target, path).replace(/^\//, '')}`;
13
+ const registry = (target, config) => {
14
+ var _a;
15
+ const root = (0, paths_1.callsRootOf)(target);
16
+ const entries = (0, fs_1.globSync)('**/call.ts', { cwd: root })
17
+ .sort()
18
+ .map((file) => [(0, path_1.dirname)(file), fsUrl(target, (0, path_1.resolve)(root, file))]);
19
+ return `export const calls = {\n${entries
20
+ .map(([slug, url]) => ` ${JSON.stringify(slug)}: () => import(${JSON.stringify(url)}),`)
21
+ .join('\n')}\n};\nexport const defaultCall = ${JSON.stringify((_a = config.defaultCall) !== null && _a !== void 0 ? _a : null)};\n`;
22
+ };
23
+ /**
24
+ * Vite's own tsconfigPaths resolves against the tsconfig nearest the importing file, which is not
25
+ * the one that carries the workspace paths. The aliases are read from the base config instead.
26
+ */
27
+ const workspaceAliases = (target) => {
28
+ var _a, _b;
29
+ const basePath = (0, path_1.resolve)(target, 'tsconfig.base.json');
30
+ if (!(0, fs_1.existsSync)(basePath))
31
+ return [];
32
+ const base = JSON.parse((0, fs_1.readFileSync)(basePath, 'utf8'));
33
+ const paths = (_b = (_a = base.compilerOptions) === null || _a === void 0 ? void 0 : _a.paths) !== null && _b !== void 0 ? _b : {};
34
+ return Object.entries(paths).flatMap(([key, [mapped]]) => {
35
+ if (!mapped)
36
+ return [];
37
+ return [
38
+ {
39
+ find: key.endsWith('/*') ? new RegExp(`^${key.slice(0, -2)}/`) : new RegExp(`^${key}$`),
40
+ replacement: key.endsWith('/*') ? `${(0, path_1.resolve)(target, mapped.slice(0, -2))}/` : (0, path_1.resolve)(target, mapped),
41
+ },
42
+ ];
43
+ });
44
+ };
45
+ /**
46
+ * The stylesheet of every project, each behind its own loader. A frame loads the one its call
47
+ * belongs to: two projects define the same theme variables, so a frame that loaded both would
48
+ * draw under whichever stylesheet came last.
49
+ */
50
+ const env = (target, config) => {
51
+ var _a;
52
+ const loaders = Object.entries((_a = config.projects) !== null && _a !== void 0 ? _a : {}).map(([name, project]) => {
53
+ var _a;
54
+ return ` ${JSON.stringify(name)}: () => Promise.all([${((_a = project.styles) !== null && _a !== void 0 ? _a : [])
55
+ .map((style) => `import(${JSON.stringify(fsUrl(target, style))})`)
56
+ .join(', ')}]),`;
57
+ });
58
+ return (`const envs = {\n${loaders.join('\n')}\n};\n` +
59
+ `export const loadEnv = (project) => (envs[project] ?? (() => Promise.resolve()))();\n`);
60
+ };
61
+ /** Serves the call registry and each project's global stylesheet to the web pages. */
62
+ const designExplore = (target, config) => ({
63
+ name: 'design-explore',
64
+ resolveId: (id) => (id === VIRTUAL || id === `${VIRTUAL}/env` ? `\0${id}` : null),
65
+ load: (id) => {
66
+ if (id === `\0${VIRTUAL}`)
67
+ return registry(target, config);
68
+ if (id === `\0${VIRTUAL}/env`)
69
+ return env(target, config);
70
+ return null;
71
+ },
72
+ transformIndexHtml: {
73
+ order: 'pre',
74
+ handler: (html, ctx) => {
75
+ var _a, _b, _c, _d;
76
+ if (!ctx.path.includes('frame'))
77
+ return html;
78
+ const asked = new URL((_a = ctx.originalUrl) !== null && _a !== void 0 ? _a : ctx.path, 'http://localhost');
79
+ const head = (_d = (_b = config.projects) === null || _b === void 0 ? void 0 : _b[projectOf((_c = asked.searchParams.get('call')) !== null && _c !== void 0 ? _c : '')]) === null || _d === void 0 ? void 0 : _d.head;
80
+ if (!head)
81
+ return html;
82
+ return html.replace('<!--head-->', (0, fs_1.readFileSync)((0, path_1.resolve)(target, head), 'utf8'));
83
+ },
84
+ },
85
+ /** The registry is built once per load, so a new call folder is invisible until it is invalidated. */
86
+ configureServer: (vite) => {
87
+ const callsRoot = (0, paths_1.callsRootOf)(target);
88
+ const refresh = (file) => {
89
+ if (!file.startsWith(callsRoot) || !file.endsWith('/call.ts'))
90
+ return;
91
+ const module = vite.moduleGraph.getModuleById(`\0${VIRTUAL}`);
92
+ if (module)
93
+ vite.moduleGraph.invalidateModule(module);
94
+ vite.ws.send({ type: 'full-reload' });
95
+ };
96
+ vite.watcher.add(callsRoot);
97
+ vite.watcher.on('add', refresh);
98
+ vite.watcher.on('unlink', refresh);
99
+ },
100
+ });
101
+ /**
102
+ * Starts the design page for a checkout and keeps it running. The returned exit code is the
103
+ * command's, not the server's: a listening server holds the process open on its own.
104
+ */
105
+ const serveDesign = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
106
+ const { target } = options;
107
+ const config = (0, paths_1.readConfig)(target);
108
+ if (!config) {
109
+ console.error(`design-explore: no config at ${(0, paths_1.configPathOf)(target)}`);
110
+ return 1;
111
+ }
112
+ (0, calls_tsconfig_1.writeCallsTsconfig)(target);
113
+ // Vite reads a tsconfig out of the working directory to transpile a call, and the calls sit
114
+ // outside its root. From a directory that holds none, every call compiles to an empty module.
115
+ process.chdir(target);
116
+ const { createServer } = yield import('vite');
117
+ const { default: tailwind } = yield import('@tailwindcss/postcss');
118
+ const here = (0, paths_1.assetRoot)();
119
+ const server = yield createServer({
120
+ configFile: false,
121
+ root: (0, path_1.resolve)(here, 'web'),
122
+ // Every drawing is ruled under Tailwind 4, whatever the checkout installs. The tool brings its
123
+ // own pipeline so no checkout's postcss config reaches a drawing.
124
+ css: { postcss: { plugins: [tailwind()] } },
125
+ cacheDir: (0, path_1.resolve)((0, paths_1.workRootOf)(target), 'vite'),
126
+ resolve: {
127
+ alias: [{ find: /^@design-explore$/, replacement: (0, path_1.resolve)(here, 'define-call.ts') }, ...workspaceAliases(target)],
128
+ },
129
+ plugins: [designExplore(target, config)],
130
+ server: {
131
+ port: (0, paths_1.portOf)(config),
132
+ strictPort: true,
133
+ // The web pages live inside this package, which is outside the checkout it draws. Vite
134
+ // serves neither root unless both are allowed.
135
+ fs: { allow: [target, here] },
136
+ },
137
+ });
138
+ yield server.listen();
139
+ console.log(`design-explore: drawing ${target}`);
140
+ server.printUrls();
141
+ return 0;
142
+ });
143
+ exports.serveDesign = serveDesign;
144
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ComposeTool } from '../api/compose';
2
+ /** Reports every problem with this machine's setup, so `et api` does not have to find them one at a time. */
3
+ export declare const doctorCommand: ({ root, apiInvocation, composeTools, }: {
4
+ root: string;
5
+ apiInvocation?: string;
6
+ composeTools?: ComposeTool[];
7
+ }) => 0 | 1;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.doctorCommand = void 0;
4
+ const compose_1 = require("../api/compose");
5
+ const path_1 = require("path");
6
+ const load_definitions_1 = require("../api/load-definitions");
7
+ const resolve_checkout_1 = require("../api/resolve-checkout");
8
+ const diagnose_1 = require("../config/diagnose");
9
+ const local_config_1 = require("../config/local-config");
10
+ const indent = (text) => text.replace(/\n/g, '\n ');
11
+ const describeComposeTool = (composeTools) => {
12
+ const tool = (0, compose_1.resolveComposeTool)(composeTools);
13
+ return tool
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)(composeTools).join(', ')}.`] };
16
+ };
17
+ const describeApis = (root, apiInvocation) => {
18
+ const { found, apis, fileName } = (0, load_definitions_1.loadApiDefinitions)(root);
19
+ if (!found)
20
+ return { lines: [], problems: [] };
21
+ const lines = [];
22
+ const problems = [];
23
+ for (const [name, api] of Object.entries(apis)) {
24
+ const checkout = (0, resolve_checkout_1.resolveApiCheckout)({ root, name, api });
25
+ if (checkout.ok) {
26
+ lines.push(`${fileName}: ${name} → ${checkout.checkout.composePath}`);
27
+ }
28
+ else {
29
+ problems.push((0, resolve_checkout_1.checkoutProblem)({ failure: checkout, name, invocation: apiInvocation }));
30
+ }
31
+ }
32
+ return { lines, problems };
33
+ };
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', composeTools, }) => {
36
+ // A file that exists but cannot be parsed still has to be reported, so this asks whether the file
37
+ // is there rather than whether it could be read.
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');
39
+ const hasApis = (0, load_definitions_1.loadApiDefinitions)(root).found;
40
+ if (!hasConfig && !hasApis) {
41
+ console.log(`Nothing to check: ${root} has no ${local_config_1.LOCAL_CONFIG_FILE_NAME} and no ${load_definitions_1.API_DEFINITIONS_FILE_NAMES[0]}.`);
42
+ return 0;
43
+ }
44
+ const configProblems = (0, diagnose_1.diagnoseLocalConfig)({ root });
45
+ const compose = describeComposeTool(composeTools);
46
+ const apis = describeApis(root, apiInvocation);
47
+ const problems = [...configProblems, ...compose.problems, ...apis.problems];
48
+ for (const line of [compose.line, ...apis.lines].filter(Boolean)) {
49
+ console.log(` ${line}`);
50
+ }
51
+ if (problems.length === 0) {
52
+ console.log('\nNo problems found.');
53
+ return 0;
54
+ }
55
+ console.error(`\n${problems.length} problem(s):\n`);
56
+ for (const problem of problems) {
57
+ console.error(` - ${indent(problem)}`);
58
+ }
59
+ return 1;
60
+ };
61
+ exports.doctorCommand = doctorCommand;
62
+ //# sourceMappingURL=doctor-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-command.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/doctor/doctor-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './doctor-command';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./doctor-command"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/doctor/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC"}
@@ -1 +1,8 @@
1
+ export * from './api';
2
+ export * from './auth';
3
+ export * from './config';
4
+ export * from './design';
5
+ export * from './doctor';
6
+ export * from './invocation';
1
7
  export * from './release';
8
+ export * from './update';
package/src/lib/index.js CHANGED
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./api"), exports);
5
+ tslib_1.__exportStar(require("./auth"), exports);
6
+ tslib_1.__exportStar(require("./config"), exports);
7
+ tslib_1.__exportStar(require("./design"), exports);
8
+ tslib_1.__exportStar(require("./doctor"), exports);
9
+ tslib_1.__exportStar(require("./invocation"), exports);
4
10
  tslib_1.__exportStar(require("./release"), exports);
11
+ tslib_1.__exportStar(require("./update"), exports);
5
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,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,mDAAyB;AACzB,uDAA6B;AAC7B,oDAA0B;AAC1B,mDAAyB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * What the reader of a message can type to reach `et <subcommand>` in this repo, because `et` itself
3
+ * is rarely on the PATH: the package script that wraps it, or the package manager's own way to run
4
+ * the binary, for example `npx et api`.
5
+ */
6
+ export declare const repoInvocation: (options: {
7
+ root: string;
8
+ subcommand: string;
9
+ }) => string;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.repoInvocation = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ /**
7
+ * How each package manager runs a script, and how it runs a binary from `node_modules` when no
8
+ * script wraps it.
9
+ */
10
+ const RUNNERS = [
11
+ { name: 'yarn', script: 'yarn', binary: 'yarn et' },
12
+ { name: 'pnpm', script: 'pnpm', binary: 'pnpm exec et' },
13
+ { name: 'bun', script: 'bun run', binary: 'bunx et' },
14
+ { name: 'npm', script: 'npm run', binary: 'npx et' },
15
+ ];
16
+ const readManifest = (root) => {
17
+ let parsed;
18
+ try {
19
+ parsed = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(root, 'package.json'), 'utf8'));
20
+ }
21
+ catch (_a) {
22
+ return {};
23
+ }
24
+ return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed) ? parsed : {};
25
+ };
26
+ const runnerFor = (manifest) => {
27
+ var _a;
28
+ const declared = (_a = manifest.packageManager) !== null && _a !== void 0 ? _a : process.env['npm_config_user_agent'];
29
+ return declared ? RUNNERS.find((runner) => declared.startsWith(runner.name)) : undefined;
30
+ };
31
+ const scriptFor = (manifest, command) => { var _a, _b; return (_b = Object.entries((_a = manifest.scripts) !== null && _a !== void 0 ? _a : {}).find(([, value]) => value.trim() === command)) === null || _b === void 0 ? void 0 : _b[0]; };
32
+ /**
33
+ * What the reader of a message can type to reach `et <subcommand>` in this repo, because `et` itself
34
+ * is rarely on the PATH: the package script that wraps it, or the package manager's own way to run
35
+ * the binary, for example `npx et api`.
36
+ */
37
+ const repoInvocation = (options) => {
38
+ const { root, subcommand } = options;
39
+ const manifest = readManifest(root);
40
+ const runner = runnerFor(manifest);
41
+ if (!runner)
42
+ return `et ${subcommand}`;
43
+ const script = scriptFor(manifest, `et ${subcommand}`);
44
+ return script ? `${runner.script} ${script}` : `${runner.binary} ${subcommand}`;
45
+ };
46
+ exports.repoInvocation = repoInvocation;
47
+ //# sourceMappingURL=invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/invocation.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,+BAA4B;AAI5B;;;GAGG;AACH,MAAM,OAAO,GAAG;IACd,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;IACnD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;IACxD,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IACrD,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;CACrD,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAY,EAAE;IAC9C,IAAI,MAAe,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7G,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,EAAE;;IACvC,MAAM,QAAQ,GAAG,MAAA,QAAQ,CAAC,cAAc,mCAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAEjF,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,OAAe,EAAE,EAAE,eACxD,OAAA,MAAA,MAAM,CAAC,OAAO,CAAC,MAAA,QAAQ,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,0CAAG,CAAC,CAAC,CAAA,EAAA,CAAC;AAE5F;;;;GAIG;AACI,MAAM,cAAc,GAAG,CAAC,OAA6C,EAAE,EAAE;IAC9E,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,UAAU,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,UAAU,EAAE,CAAC,CAAC;IAEvD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;AAClF,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB"}
@@ -4,6 +4,25 @@ exports.release = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const child_process_1 = require("child_process");
6
6
  const utils_1 = require("./utils");
7
+ const NO_CHANGESETS_MESSAGE = 'No unreleased changesets found';
8
+ const changesetMajorVersion = () => {
9
+ var _a, _b;
10
+ const version = (0, child_process_1.execSync)('yarn changeset --version').toString();
11
+ return Number((_b = (_a = /(\d+)\.\d+\.\d+/.exec(version)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : 0);
12
+ };
13
+ const runChangesetVersion = () => {
14
+ try {
15
+ return (0, child_process_1.execSync)('yarn changeset version', { stdio: 'pipe' }).toString();
16
+ }
17
+ catch (error) {
18
+ const { stdout, stderr } = error;
19
+ const output = `${stdout !== null && stdout !== void 0 ? stdout : ''}${stderr !== null && stderr !== void 0 ? stderr : ''}`;
20
+ if (!output.includes(NO_CHANGESETS_MESSAGE))
21
+ throw error;
22
+ console.error(`${NO_CHANGESETS_MESSAGE}, aborting...\n`);
23
+ process.exit(1);
24
+ }
25
+ };
7
26
  const release = (args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
8
27
  const shouldForce = args.findIndex((arg) => arg.includes('--force') || arg.includes('-f')) !== -1;
9
28
  const skipPush = args.findIndex((arg) => arg.includes('--skip-push') || arg.includes('-sp')) !== -1;
@@ -22,9 +41,8 @@ const release = (args) => tslib_1.__awaiter(void 0, void 0, void 0, function* ()
22
41
  console.error('Aborting...');
23
42
  process.exit(1);
24
43
  }
25
- const changesetVersion = (0, child_process_1.execSync)('yarn changeset version').toString();
26
- console.log(changesetVersion);
27
- const changesetTag = (0, child_process_1.execSync)('yarn changeset tag').toString();
44
+ console.log(runChangesetVersion());
45
+ const changesetTag = (0, child_process_1.execSync)(`yarn changeset ${changesetMajorVersion() >= 3 ? 'git-tag' : 'tag'}`).toString();
28
46
  console.log(changesetTag);
29
47
  (0, child_process_1.execSync)('git add .');
30
48
  console.log('Committing release... 🚀 \n(This may take a while depending on your pre-commit hooks) \n');
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/release.ts"],"names":[],"mappings":";;;;AAAA,iDAAyC;AACzC,mCAAsC;AAE/B,MAAM,OAAO,GAAG,CAAO,IAAc,EAAE,EAAE;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpG,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,wBAAwB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE7D,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAW,EAC9B,2KAA2K,CAC5K,CAAC;IAEF,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAA,wBAAQ,EAAC,wBAAwB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAEvE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE9B,MAAM,YAAY,GAAG,IAAA,wBAAQ,EAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE/D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE1B,IAAA,wBAAQ,EAAC,WAAW,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;IAExG,IAAA,wBAAQ,EAAC,kCAAkC,CAAC,CAAC;IAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAA,wBAAQ,EAAC,wBAAwB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC,CAAA,CAAC;AA5CW,QAAA,OAAO,WA4ClB"}
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/release.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
@@ -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"}