@detergent-software/atk 8.9.2-dev.8 → 8.10.0-dev.1
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 +48 -0
- package/build/command-manifest.json +5 -0
- package/build/commands/info.d.ts.map +1 -1
- package/build/commands/info.js +5 -1
- package/build/commands/info.js.map +1 -1
- package/build/commands/install.d.ts +2 -1
- package/build/commands/install.d.ts.map +1 -1
- package/build/commands/install.js +169 -40
- package/build/commands/install.js.map +1 -1
- package/build/lib/api-client.d.ts +7 -2
- package/build/lib/api-client.d.ts.map +1 -1
- package/build/lib/api-client.js +22 -3
- package/build/lib/api-client.js.map +1 -1
- package/build/lib/atk-api/errors.d.ts +9 -0
- package/build/lib/atk-api/errors.d.ts.map +1 -1
- package/build/lib/atk-api/errors.js +36 -0
- package/build/lib/atk-api/errors.js.map +1 -1
- package/build/lib/atk-api/index.d.ts +1 -1
- package/build/lib/atk-api/index.d.ts.map +1 -1
- package/build/lib/atk-api/index.js +1 -1
- package/build/lib/atk-api/index.js.map +1 -1
- package/build/lib/atk-api/transport.d.ts +4 -0
- package/build/lib/atk-api/transport.d.ts.map +1 -1
- package/build/lib/atk-api/transport.js +6 -1
- package/build/lib/atk-api/transport.js.map +1 -1
- package/build/lib/installer.d.ts +5 -0
- package/build/lib/installer.d.ts.map +1 -1
- package/build/lib/installer.js +7 -3
- package/build/lib/installer.js.map +1 -1
- package/build/lib/pastel/index.d.ts +6 -5
- package/build/lib/pastel/index.d.ts.map +1 -1
- package/build/lib/pastel/index.js +40 -15
- package/build/lib/pastel/index.js.map +1 -1
- package/build/lib/publish-flow.js +1 -1
- package/build/lib/publish-flow.js.map +1 -1
- package/build/lib/publisher.d.ts +5 -3
- package/build/lib/publisher.d.ts.map +1 -1
- package/build/lib/publisher.js +9 -13
- package/build/lib/publisher.js.map +1 -1
- package/build/lib/sync.d.ts +2 -0
- package/build/lib/sync.d.ts.map +1 -1
- package/build/lib/sync.js +19 -5
- package/build/lib/sync.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,51 @@
|
|
|
1
|
+
## [8.10.0-dev.1](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.13&targetVersion=GTv8.10.0-dev.1) (2026-10-20)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **cli:** report bundle members kept outside it, and adopt them (ATK-674) ([bf3b656](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/bf3b6568e3738df1af8c9eb7b67b423e36fedf9a))
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **cli:** adopt an installed bundle's members in the lockfile alone (ATK-674) ([9ee62fb](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/9ee62fb000ce891fc5bf4d6d7c7ba7be2296d498))
|
|
10
|
+
* **cli:** report only the bundle members the run's tools place (ATK-674) ([9c8b957](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/9c8b957dbd9e988321bc054686cef919482fb432))
|
|
11
|
+
|
|
12
|
+
## [8.9.2-dev.13](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.12&targetVersion=GTv8.9.2-dev.13) (2026-10-20)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **cli:** keep an edited copy of a hook sync would remove (ATK-641) ([0005598](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/000559824b69ad2077b14a5657c5cfe0fad4ea4c))
|
|
17
|
+
|
|
18
|
+
### Refactoring
|
|
19
|
+
|
|
20
|
+
* **cli:** inline sync's edited-copy check for undeclared hooks (ATK-641) ([73896a3](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/73896a338ed510145aa520c83e2cb3d8f09fa6ca))
|
|
21
|
+
|
|
22
|
+
## [8.9.2-dev.12](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.11&targetVersion=GTv8.9.2-dev.12) (2026-10-20)
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* **cli:** drop only the version flag the command declares (ATK-645) ([88ef766](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/88ef7660496b080bcc5a66e991b71910b7ec0684))
|
|
27
|
+
* **cli:** let a command's own -v and --version reach it (ATK-645) ([86a71df](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/86a71df57ebf7a189c3a96c12df58ad37933d336))
|
|
28
|
+
|
|
29
|
+
## [8.9.2-dev.11](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.10&targetVersion=GTv8.9.2-dev.11) (2026-10-20)
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* **cli:** keep the run's flags on the org spec install names (ATK-647) ([af1f5ca](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/af1f5cad7f822005defeec7834330cecd33a40eb))
|
|
34
|
+
* **cli:** name the org spec for a bare name with only an org asset (ATK-647) ([440084d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/440084d025c2fa7084448058836f55fe367d4c2b))
|
|
35
|
+
|
|
36
|
+
## [8.9.2-dev.10](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.9&targetVersion=GTv8.9.2-dev.10) (2026-10-20)
|
|
37
|
+
|
|
38
|
+
### Bug Fixes
|
|
39
|
+
|
|
40
|
+
* **cli:** plan a publish once, not again before the submit ([167736d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/167736d482a9bd274917b145bd6fb7377549388c))
|
|
41
|
+
|
|
42
|
+
## [8.9.2-dev.9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.8&targetVersion=GTv8.9.2-dev.9) (2026-10-20)
|
|
43
|
+
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
46
|
+
* **cli:** fall back to the cache at once when the API is unreachable ([536eb93](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/536eb93b162824879ac3040300b1855bf79ae4c5))
|
|
47
|
+
* **cli:** let the unreachable-API memo expire, and classify more connect failures ([93f6bb3](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/93f6bb353aa75638638b01a2ab4db77f7da79a69))
|
|
48
|
+
|
|
1
49
|
## [8.9.2-dev.8](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.7&targetVersion=GTv8.9.2-dev.8) (2026-10-20)
|
|
2
50
|
|
|
3
51
|
### Bug Fixes
|
|
@@ -483,6 +483,11 @@
|
|
|
483
483
|
"description": "Install an asset or bundle (no args syncs from lockfile)",
|
|
484
484
|
"file": "install.js",
|
|
485
485
|
"options": [
|
|
486
|
+
{
|
|
487
|
+
"flags": "--adopt",
|
|
488
|
+
"description": "With a bundle: also record it as the owner of members installed on their own",
|
|
489
|
+
"defaultValue": false
|
|
490
|
+
},
|
|
486
491
|
{
|
|
487
492
|
"flags": "-a, --all",
|
|
488
493
|
"description": "Install every asset from an org scope without prompting (for `atk install @org`; required with --json or no terminal)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,WAAW,0CAA0C,CAAC;AAEnE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;iBA6DlB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAMf,CAAC;
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,WAAW,0CAA0C,CAAC;AAEnE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;iBA6DlB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAMf,CAAC;AAmCH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,EACf,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GACtE,EAAE,KAAK,2CA+QP"}
|
package/build/commands/info.js
CHANGED
|
@@ -102,6 +102,7 @@ export default function Info({ args: [rawName], options: { full, json, org: cliO
|
|
|
102
102
|
// project's org first, then the global asset.
|
|
103
103
|
const org = resolveActiveOrg(explicitOrg, lockfile?.org, config.org);
|
|
104
104
|
let resolved = findAsset(registry, name, type, effectiveVersion, org);
|
|
105
|
+
let installCommand;
|
|
105
106
|
if (!resolved) {
|
|
106
107
|
if (effectiveVersion) {
|
|
107
108
|
const assetExists = findAsset(registry, name, type, undefined, org);
|
|
@@ -165,6 +166,7 @@ export default function Info({ args: [rawName], options: { full, json, org: cliO
|
|
|
165
166
|
: { versions: [] };
|
|
166
167
|
return { availableVersions, name, outcome: 'version-not-found', version: effectiveVersion };
|
|
167
168
|
}
|
|
169
|
+
installCommand = `atk install ${formatOrgName(only.org, name)}${effectiveVersion ? `@${effectiveVersion}` : ''}`;
|
|
168
170
|
}
|
|
169
171
|
else if (orgMatches.length > 0) {
|
|
170
172
|
return { activeOrg: org, name, orgMatches, outcome: 'not-found-with-suggestions' };
|
|
@@ -193,6 +195,7 @@ export default function Info({ args: [rawName], options: { full, json, org: cliO
|
|
|
193
195
|
asset: resolved.asset,
|
|
194
196
|
availableVersions,
|
|
195
197
|
deprecation,
|
|
198
|
+
installCommand,
|
|
196
199
|
installedVersion,
|
|
197
200
|
isInstalled,
|
|
198
201
|
outcome: 'found',
|
|
@@ -241,7 +244,7 @@ export default function Info({ args: [rawName], options: { full, json, org: cliO
|
|
|
241
244
|
if (data.outcome === 'not-found') {
|
|
242
245
|
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'red', children: ["Asset or bundle ", _jsxs(Text, { bold: true, children: ["\"", displayName, "\""] }), " not found in the registry."] }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsxs(Text, { bold: true, children: ["atk search ", data.name] }), " to find similar assets."] })] }));
|
|
243
246
|
}
|
|
244
|
-
return (
|
|
247
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(AssetDetail, { asset: data.asset, availableVersions: data.availableVersions, deprecation: data.deprecation, full: full, installedVersion: data.installedVersion, isInstalled: data.isInstalled, readme: data.readme, verbose: verbose, version: data.version, versionData: data.versionData }), data.installCommand && !data.isInstalled && (_jsxs(Text, { dimColor: true, children: ["Org-scoped. Install it with: ", _jsx(Text, { bold: true, children: data.installCommand })] }))] }));
|
|
245
248
|
}
|
|
246
249
|
function buildJsonOutput(data) {
|
|
247
250
|
switch (data.outcome) {
|
|
@@ -266,6 +269,7 @@ function buildJsonOutput(data) {
|
|
|
266
269
|
availableVersions: data.availableVersions,
|
|
267
270
|
deprecation: data.deprecation,
|
|
268
271
|
description: data.versionData.description,
|
|
272
|
+
installCommand: data.installCommand,
|
|
269
273
|
installedVersion: data.installedVersion,
|
|
270
274
|
isInstalled: data.isInstalled,
|
|
271
275
|
name: data.asset.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const description = "Install an asset or bundle (no args syncs from lockfile)";
|
|
3
3
|
export declare const options: z.ZodObject<{
|
|
4
|
+
adopt: z.ZodOptional<z.ZodBoolean>;
|
|
4
5
|
all: z.ZodDefault<z.ZodBoolean>;
|
|
5
6
|
dryRun: z.ZodDefault<z.ZodBoolean>;
|
|
6
7
|
force: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -18,6 +19,6 @@ type Props = {
|
|
|
18
19
|
args: z.infer<typeof args>;
|
|
19
20
|
options: z.infer<typeof options>;
|
|
20
21
|
};
|
|
21
|
-
export default function Install({ args: [rawName], options: { all, dryRun, force, json, org, pin, projectRoot, refresh, tool, user, yes }, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export default function Install({ args: [rawName], options: { adopt, all, dryRun, force, json, org, pin, projectRoot, refresh, tool, user, yes }, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
22
23
|
export {};
|
|
23
24
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkExB,eAAO,MAAM,WAAW,6DAA6D,CAAC;AAEtF,eAAO,MAAM,OAAO;;;;;;;;;;;;;iBA8GlB,CAAC;AAEH,eAAO,MAAM,IAAI,gDAUf,CAAC;AAqFH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,IAAI,EAAE,CAAC,OAAO,CAAC,EACf,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAC9F,EAAE,KAAK,2CAsCP"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text, useApp } from 'ink';
|
|
3
3
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { z } from 'zod';
|
|
@@ -11,20 +11,26 @@ import { loadConfig } from '../lib/config.js';
|
|
|
11
11
|
import { crossScopeNotice, findCrossScopeInstalls } from '../lib/cross-scope.js';
|
|
12
12
|
import { errorGuidance, errorMessage } from '../lib/errors.js';
|
|
13
13
|
import { isInstalledForTool } from '../lib/installed-for-tool.js';
|
|
14
|
-
import { findInstalledAsset, identityKey, readLockfile, upgradeToDirectInstall, withLockfileErrorHandling, writeLockfile, } from '../lib/lockfile.js';
|
|
14
|
+
import { addAssetToLockfile, findInstalledAsset, identityKey, readLockfile, upgradeToDirectInstall, withLockfileErrorHandling, writeLockfile, } from '../lib/lockfile.js';
|
|
15
15
|
import { executeInstallPlanForTools, withoutKeptDependencies } from '../lib/multi-tool-install.js';
|
|
16
16
|
import { addNotice } from '../lib/notices.js';
|
|
17
17
|
import { formatOrgName, isBareOrgScope, parseBundleSpec, resolveActiveOrg } from '../lib/org.js';
|
|
18
18
|
import { renderJson, useNonInteractive } from '../lib/output.js';
|
|
19
19
|
import { argument, option } from '../lib/pastel/index.js';
|
|
20
|
-
import { fetchRegistry, findAsset, findBundle, getAssetsByOrg, isDeprecated, isLatestAlias } from '../lib/registry.js';
|
|
21
|
-
import { resolveBundleInstallPlan, resolveInstallPlan, resolveMultipleInstallPlans, } from '../lib/resolver.js';
|
|
20
|
+
import { fetchRegistry, findAsset, findAssetsByName, findBundle, getAssetsByOrg, isDeprecated, isLatestAlias, } from '../lib/registry.js';
|
|
21
|
+
import { resolveBundleInstallPlan, resolveInstallPlan, resolveMultipleInstallPlans, ResolverError, } from '../lib/resolver.js';
|
|
22
22
|
import { scopeLabel } from '../lib/scope.js';
|
|
23
23
|
import { resolvePlacingTools } from '../lib/tool-resolver.js';
|
|
24
24
|
import { parseNameVersion } from '../lib/version.js';
|
|
25
25
|
import Sync from './sync.js';
|
|
26
26
|
export const description = 'Install an asset or bundle (no args syncs from lockfile)';
|
|
27
27
|
export const options = z.object({
|
|
28
|
+
adopt: z
|
|
29
|
+
.boolean()
|
|
30
|
+
.optional()
|
|
31
|
+
.describe(option({
|
|
32
|
+
description: 'With a bundle: also record it as the owner of members installed on their own',
|
|
33
|
+
})),
|
|
28
34
|
all: z
|
|
29
35
|
.boolean()
|
|
30
36
|
.default(false)
|
|
@@ -111,10 +117,7 @@ export const args = z.tuple([
|
|
|
111
117
|
name: 'target',
|
|
112
118
|
})),
|
|
113
119
|
]);
|
|
114
|
-
|
|
115
|
-
// Org-install flow (atk install @orgname)
|
|
116
|
-
// ---------------------------------------------------------------------------
|
|
117
|
-
export default function Install({ args: [rawName], options: { all, dryRun, force, json, org, pin, projectRoot, refresh, tool, user, yes }, }) {
|
|
120
|
+
export default function Install({ args: [rawName], options: { adopt, all, dryRun, force, json, org, pin, projectRoot, refresh, tool, user, yes }, }) {
|
|
118
121
|
// No argument provided — delegate to sync behavior
|
|
119
122
|
if (!rawName) {
|
|
120
123
|
return _jsx(Sync, { options: { dryRun, force, json, projectRoot, refresh, tool, user } });
|
|
@@ -123,7 +126,7 @@ export default function Install({ args: [rawName], options: { all, dryRun, force
|
|
|
123
126
|
const orgName = rawName.slice(1);
|
|
124
127
|
return (_jsx(InstallOrg, { cliOrg: org, dryRun: dryRun, force: force, json: json, orgName: orgName, pin: pin, projectRoot: projectRoot, skipPicker: all || yes, tool: tool, user: user }));
|
|
125
128
|
}
|
|
126
|
-
return (_jsx(InstallAsset, { dryRun: dryRun, force: force, json: json, org: org, pin: pin, projectRoot: projectRoot, rawName: rawName, tool: tool, user: user }));
|
|
129
|
+
return (_jsx(InstallAsset, { adopt: adopt, dryRun: dryRun, force: force, json: json, org: org, pin: pin, projectRoot: projectRoot, rawName: rawName, tool: tool, user: user }));
|
|
127
130
|
}
|
|
128
131
|
/** The picker lists one org's assets, so type and name identify each. */
|
|
129
132
|
function assetKey(asset) {
|
|
@@ -138,6 +141,54 @@ async function bundleAtRequestedVersion(entry, requested, progress) {
|
|
|
138
141
|
}
|
|
139
142
|
return resolution.bundle;
|
|
140
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* The bundle's members that one of `tools` places, as the registry has them. A member none of them
|
|
146
|
+
* places is left out, since this run can't adopt it, and so is a ref the registry can't find, which
|
|
147
|
+
* the install reports.
|
|
148
|
+
*/
|
|
149
|
+
function bundleMembers(registry, bundle, tools) {
|
|
150
|
+
return (bundle.assets ?? []).flatMap((ref) => {
|
|
151
|
+
const found = findBundleMember(registry, bundle, ref);
|
|
152
|
+
if (!found || !tools.some((t) => placesAsset(t.adapter, found.asset.type, found.versionData.tools)))
|
|
153
|
+
return [];
|
|
154
|
+
const { name, org, type } = found.asset;
|
|
155
|
+
return [{ name, ...(org ? { org } : {}), type }];
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* What a bundle install says about its members outside the bundle (`kept`) and the members it
|
|
160
|
+
* `adopted`. A member with no origin can be adopted; another bundle's member stays with that bundle.
|
|
161
|
+
*/
|
|
162
|
+
function bundleReport(kept, adopted, { adoptCommand, bundle }) {
|
|
163
|
+
const spec = formatOrgName(bundle.org, bundle.name);
|
|
164
|
+
const unowned = kept.filter((member) => !member.bundle);
|
|
165
|
+
const owned = kept.filter((member) => member.bundle);
|
|
166
|
+
const warnings = [];
|
|
167
|
+
if (unowned.length > 0) {
|
|
168
|
+
const them = unowned.length === 1 ? 'it' : 'them';
|
|
169
|
+
warnings.push(`${unowned.map(memberLabel).join(', ')} ${unowned.length === 1 ? 'is' : 'are'} installed on ` +
|
|
170
|
+
`${unowned.length === 1 ? 'its' : 'their'} own, so ${spec} doesn't own ${them} and ` +
|
|
171
|
+
`\`atk uninstall ${spec}\` leaves ${them}. Run \`${adoptCommand}\` to record ${them} as the bundle's.`);
|
|
172
|
+
}
|
|
173
|
+
if (owned.length > 0) {
|
|
174
|
+
const labels = owned.map((member) => {
|
|
175
|
+
const { name, org } = member.bundle;
|
|
176
|
+
return `${memberLabel(member)} of ${formatOrgName(org, name)}`;
|
|
177
|
+
});
|
|
178
|
+
const them = owned.length === 1 ? 'it' : 'them';
|
|
179
|
+
warnings.push(`${labels.join(', ')} ${owned.length === 1 ? 'belongs' : 'belong'} to another bundle, so ${spec} doesn't ` +
|
|
180
|
+
`own ${them} and \`atk uninstall ${spec}\` leaves ${them}. --adopt never takes a member from another bundle.`);
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
...(adopted.length > 0 ? { adopted } : {}),
|
|
184
|
+
...(kept.length > 0 ? { keptOutsideBundle: kept } : {}),
|
|
185
|
+
...(warnings.length > 0 ? { warnings } : {}),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/** The members a bundle install adopted (or a dry run would), and what to do about the rest. */
|
|
189
|
+
function BundleReportLines({ bundleName, dryRun = false, report: { adopted = [], warnings = [] }, }) {
|
|
190
|
+
return (_jsxs(_Fragment, { children: [adopted.length > 0 && (_jsxs(Text, { children: [_jsx(Text, { color: 'green', children: "\u2713" }), " ", dryRun ? 'Would adopt' : 'Adopted', " into ", _jsx(Text, { bold: true, children: bundleName }), ":", ' ', adopted.map(memberLabel).join(', ')] })), warnings.map((warning) => (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", warning] }, warning)))] }));
|
|
191
|
+
}
|
|
141
192
|
/**
|
|
142
193
|
* The plan's assets (the asset, a bundle's members, their dependencies) that the other scope already
|
|
143
194
|
* has, as the outcome's `crossScope`. A dry run passes the whole resolved plan, so it warns about the
|
|
@@ -164,18 +215,20 @@ async function crossScopeOf(plan, { installedAt, json, scope, tools }) {
|
|
|
164
215
|
return {};
|
|
165
216
|
}
|
|
166
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* The registry asset a bundle's ref names, on the same (name, type, org) identity the resolver's
|
|
220
|
+
* install plan uses: a same-named asset in another scope is not this ref. An unqualified ref falls
|
|
221
|
+
* back to the bundle's own org, never the installer's active org.
|
|
222
|
+
*/
|
|
223
|
+
function findBundleMember(registry, bundle, ref) {
|
|
224
|
+
const found = findAsset(registry, ref.name, ref.type, ref.version, ref.org ?? bundle.org);
|
|
225
|
+
return found && (!ref.org || found.asset.org === ref.org) ? found : undefined;
|
|
226
|
+
}
|
|
167
227
|
/** The same org install with `--all`, for a run that can't show the picker. */
|
|
168
|
-
function installAllCommand({
|
|
169
|
-
return
|
|
170
|
-
`atk install @${orgName} --all`,
|
|
171
|
-
...(tool ? ['--tool', tool] : []),
|
|
172
|
-
...(projectRoot ? ['--project-root', JSON.stringify(projectRoot)] : []),
|
|
173
|
-
...(user ? ['--user'] : []),
|
|
174
|
-
...(force ? ['--force'] : []),
|
|
175
|
-
...(pin ? ['--pin'] : []),
|
|
176
|
-
].join(' ');
|
|
228
|
+
function installAllCommand({ orgName, ...flags }) {
|
|
229
|
+
return installCommandFor(`@${orgName} --all`, flags);
|
|
177
230
|
}
|
|
178
|
-
function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawName, tool, user, }) {
|
|
231
|
+
function InstallAsset({ adopt, dryRun, force, json, org: cliOrg, pin, projectRoot, rawName, tool, user, }) {
|
|
179
232
|
const { json: effectiveJson } = useNonInteractive(json);
|
|
180
233
|
const { name: parsedName, version: requestedVersion } = parseNameVersion(rawName);
|
|
181
234
|
// Extract org from @org/name syntax if present (shared spec parser — the
|
|
@@ -232,10 +285,39 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
|
|
|
232
285
|
(orgScopes.length > 0 ? ` Did you mean ${orgScopes.join(' or ')}?` : ''));
|
|
233
286
|
}
|
|
234
287
|
}
|
|
288
|
+
// With no active org, `info` opens the only org asset of a bare name, but install doesn't
|
|
289
|
+
// switch scopes on its own: it names the spec that installs that asset.
|
|
290
|
+
if (!org && !indexBundle && !asset) {
|
|
291
|
+
const orgs = new Set(findAssetsByName(registry, name).map((match) => match.org));
|
|
292
|
+
const [only] = orgs;
|
|
293
|
+
// A version the org asset doesn't have is left to the resolver's own error.
|
|
294
|
+
if (only && orgs.size === 1 && findAsset(registry, name, undefined, effectiveVersion, only)) {
|
|
295
|
+
const spec = formatOrgName(only, name);
|
|
296
|
+
const version = effectiveVersion ? `@${effectiveVersion}` : '';
|
|
297
|
+
throw new ResolverError(`Asset "${name}"${version ? ` ${version}` : ''} not found in the registry`, {
|
|
298
|
+
command: installCommandFor(`${spec}${version}`, { dryRun, force, pin, projectRoot, tool, user }),
|
|
299
|
+
hint: `The only asset of that name is org-scoped: ${spec}. Install it by that name.`,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (adopt && !indexBundle) {
|
|
304
|
+
throw new Error(`--adopt records a bundle as the owner of its members, and "${name}" is not a bundle.`);
|
|
305
|
+
}
|
|
235
306
|
const bundle = indexBundle ? await bundleAtRequestedVersion(indexBundle, effectiveVersion, progress) : undefined;
|
|
236
307
|
// With an explicit version, a member only counts as installed when the
|
|
237
308
|
// lockfile records it as part of this bundle at that version.
|
|
238
309
|
const requiredBundleVersion = bundle && effectiveVersion && !isLatestAlias(effectiveVersion) ? bundle.version : undefined;
|
|
310
|
+
const members = bundle ? bundleMembers(registry, bundle, tools) : [];
|
|
311
|
+
const adoptCommand = bundle
|
|
312
|
+
? installCommandFor(formatOrgName(bundle.org, bundle.name) + (effectiveVersion ? `@${effectiveVersion}` : ''), {
|
|
313
|
+
adopt: true,
|
|
314
|
+
force: false,
|
|
315
|
+
pin: false,
|
|
316
|
+
projectRoot,
|
|
317
|
+
tool,
|
|
318
|
+
user,
|
|
319
|
+
})
|
|
320
|
+
: '';
|
|
239
321
|
// Dry-run: resolve plan without acquiring lockfile lock or executing. The install leaves
|
|
240
322
|
// dependencies already in place alone and refuses to move a pinned one, and so does the plan.
|
|
241
323
|
if (dryRun) {
|
|
@@ -247,12 +329,15 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
|
|
|
247
329
|
if (bundle) {
|
|
248
330
|
progress('Resolving bundle assets...');
|
|
249
331
|
const resolved = resolveBundleInstallPlan(registry, bundle);
|
|
332
|
+
// Nothing is written, so the members an install would adopt are the ones with no origin now.
|
|
333
|
+
const outside = membersOutsideBundle(currentLockfile, members, bundle);
|
|
250
334
|
return {
|
|
251
335
|
bundleName: bundle.name,
|
|
252
336
|
outcome: 'dry-run-bundle',
|
|
253
337
|
plan: asInstalled(resolved),
|
|
254
338
|
tools: toolNames,
|
|
255
339
|
version: bundle.version,
|
|
340
|
+
...bundleReport(adopt ? outside.filter((m) => m.bundle) : outside, adopt ? outside.filter((m) => !m.bundle) : [], { adoptCommand, bundle }),
|
|
256
341
|
...(await crossScope(resolved)),
|
|
257
342
|
};
|
|
258
343
|
}
|
|
@@ -268,33 +353,26 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
|
|
|
268
353
|
}
|
|
269
354
|
return await withLockfileErrorHandling(projectDir, async () => {
|
|
270
355
|
if (bundle) {
|
|
356
|
+
const before = await readLockfile(projectDir);
|
|
357
|
+
const bundleOrigin = {
|
|
358
|
+
name: bundle.name,
|
|
359
|
+
...(bundle.org ? { org: bundle.org } : {}),
|
|
360
|
+
version: bundle.version,
|
|
361
|
+
};
|
|
271
362
|
// Bundle installation flow — check if already installed for ALL tools
|
|
272
363
|
if (!force) {
|
|
273
|
-
const lockfile = await readLockfile(projectDir);
|
|
274
364
|
const bundleAssets = bundle.assets ?? [];
|
|
275
|
-
// Key on the same (name, type, org) identity the resolver's install plan uses — a
|
|
276
|
-
// same-named asset in another scope is not this ref. Unqualified refs fall back to
|
|
277
|
-
// the bundle's own org, never the installer's active org.
|
|
278
|
-
const findMember = (ref) => {
|
|
279
|
-
const found = findAsset(registry, ref.name, ref.type, ref.version, ref.org ?? bundle.org);
|
|
280
|
-
return found && (!ref.org || found.asset.org === ref.org) ? found : undefined;
|
|
281
|
-
};
|
|
282
365
|
// When no configured tool takes any member, fall through so the installer says why.
|
|
283
|
-
const
|
|
284
|
-
const found = findMember(ref);
|
|
285
|
-
return (found !== undefined &&
|
|
286
|
-
tools.some((t) => placesAsset(t.adapter, found.asset.type, found.versionData.tools)));
|
|
287
|
-
});
|
|
288
|
-
const allInstalledForAllTools = tools.every(({ adapter: toolAdapter }) => anyMemberTaken &&
|
|
366
|
+
const allInstalledForAllTools = tools.every(({ adapter: toolAdapter }) => members.length > 0 &&
|
|
289
367
|
bundleAssets.every((ref) => {
|
|
290
|
-
const found =
|
|
368
|
+
const found = findBundleMember(registry, bundle, ref);
|
|
291
369
|
if (!found)
|
|
292
370
|
return false;
|
|
293
371
|
// A tool that doesn't take this member (its type, or a hook for other tools) has
|
|
294
372
|
// nothing to check.
|
|
295
373
|
if (!placesAsset(toolAdapter, found.asset.type, found.versionData.tools))
|
|
296
374
|
return true;
|
|
297
|
-
const installed = findInstalledAsset(
|
|
375
|
+
const installed = findInstalledAsset(before, ref.name, ref.type, found.asset.org);
|
|
298
376
|
if (!installed)
|
|
299
377
|
return false;
|
|
300
378
|
if (requiredBundleVersion && !isFromBundleVersion(installed, bundle, requiredBundleVersion)) {
|
|
@@ -303,17 +381,31 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
|
|
|
303
381
|
return isInstalledForTool(installed, toolAdapter, projectDir);
|
|
304
382
|
}));
|
|
305
383
|
if (allInstalledForAllTools) {
|
|
384
|
+
// Adopting a bundle that is in place only records its origin on the members with none:
|
|
385
|
+
// their files, versions and pins stay as they are. Another bundle's member stays its.
|
|
386
|
+
const outside = membersOutsideBundle(before, members, bundle);
|
|
387
|
+
const adopted = adopt ? outside.filter((member) => !member.bundle) : [];
|
|
388
|
+
if (adopted.length > 0) {
|
|
389
|
+
let lockfile = before;
|
|
390
|
+
for (const { name: memberName, org: memberOrg, type } of adopted) {
|
|
391
|
+
const installed = findInstalledAsset(lockfile, memberName, type, memberOrg);
|
|
392
|
+
lockfile = addAssetToLockfile(lockfile, { ...installed, bundleOrigin });
|
|
393
|
+
}
|
|
394
|
+
await writeLockfile(projectDir, lockfile);
|
|
395
|
+
}
|
|
306
396
|
return {
|
|
307
397
|
bundleName: bundle.name,
|
|
308
398
|
outcome: 'bundle-already-installed',
|
|
309
399
|
version: bundle.version,
|
|
400
|
+
...bundleReport(outside.filter((member) => !adopted.includes(member)), adopted, { adoptCommand, bundle }),
|
|
310
401
|
};
|
|
311
402
|
}
|
|
312
403
|
}
|
|
313
404
|
progress('Resolving bundle assets...');
|
|
314
405
|
const plan = resolveBundleInstallPlan(registry, bundle);
|
|
315
406
|
const toolResults = await executeInstallPlanForTools(plan, tools, {
|
|
316
|
-
|
|
407
|
+
adopt,
|
|
408
|
+
bundleOrigin,
|
|
317
409
|
force,
|
|
318
410
|
onProgress: progress,
|
|
319
411
|
onTool: (toolName) => progress(`Installing bundle for ${toolName}...`),
|
|
@@ -321,11 +413,16 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
|
|
|
321
413
|
projectDir: projectDir,
|
|
322
414
|
scope: installScope,
|
|
323
415
|
});
|
|
416
|
+
const kept = membersOutsideBundle(await readLockfile(projectDir), members, bundle);
|
|
417
|
+
const adopted = adopt
|
|
418
|
+
? membersOutsideBundle(before, members, bundle).filter((m) => !m.bundle && !kept.some((k) => identityKey(k) === identityKey(m)))
|
|
419
|
+
: [];
|
|
324
420
|
return {
|
|
325
421
|
bundleName: bundle.name,
|
|
326
422
|
outcome: 'bundle-installed',
|
|
327
423
|
toolResults,
|
|
328
424
|
version: bundle.version,
|
|
425
|
+
...bundleReport(kept, adopted, { adoptCommand, bundle }),
|
|
329
426
|
...(await crossScope(plan, projectDir)),
|
|
330
427
|
};
|
|
331
428
|
}
|
|
@@ -378,7 +475,7 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
|
|
|
378
475
|
});
|
|
379
476
|
return { outcome: 'installed', toolResults, ...(await crossScope(plan, projectDir)) };
|
|
380
477
|
});
|
|
381
|
-
}, [cliOrg, dryRun, force, inlineOrg, name, pin, requestedVersion, tool]);
|
|
478
|
+
}, [adopt, cliOrg, dryRun, force, inlineOrg, name, pin, requestedVersion, tool]);
|
|
382
479
|
if (state.status === 'loading') {
|
|
383
480
|
return _jsx(Spinner, { message: state.message });
|
|
384
481
|
}
|
|
@@ -402,10 +499,10 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
|
|
|
402
499
|
return renderJson({ ...data, ...fields });
|
|
403
500
|
}
|
|
404
501
|
if (data.outcome === 'bundle-already-installed') {
|
|
405
|
-
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " is already fully installed (v", data.version, ")", where, "."] }), _jsx(Text, { dimColor: true, children: "Use --force to reinstall." })] }));
|
|
502
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " is already fully installed (v", data.version, ")", where, "."] }), _jsx(Text, { dimColor: true, children: "Use --force to reinstall." }), _jsx(BundleReportLines, { bundleName: data.bundleName, report: data })] }));
|
|
406
503
|
}
|
|
407
504
|
if (data.outcome === 'bundle-installed') {
|
|
408
|
-
return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map(({ results, skipped, tool: toolName, warnings }) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'green', children: ["\u2713 Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " v", data.version, " \u2014 ", results.length, " asset", results.length !== 1 ? 's' : ''] }), _jsx(InstallSummary, { results: results, skipped: skipped, tools: [toolName], warnings: warnings, where: label })] }, toolName))), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
|
|
505
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map(({ results, skipped, tool: toolName, warnings }) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'green', children: ["\u2713 Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " v", data.version, " \u2014 ", results.length, " asset", results.length !== 1 ? 's' : ''] }), _jsx(InstallSummary, { results: results, skipped: skipped, tools: [toolName], warnings: warnings, where: label })] }, toolName))), _jsx(BundleReportLines, { bundleName: data.bundleName, report: data }), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
|
|
409
506
|
}
|
|
410
507
|
if (data.outcome === 'already-installed') {
|
|
411
508
|
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " is already installed (v", data.version, ")", where, "."] }), _jsx(Text, { dimColor: true, children: "Use --force to reinstall." })] }));
|
|
@@ -417,13 +514,26 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
|
|
|
417
514
|
return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunBanner, { action: 'install', count: data.plan.totalCount, tools: data.tools, where: label }), _jsx(Text, { children: " " }), data.plan.entries.map((entry) => (_jsxs(Text, { children: [' ', entry.reason === 'dependency' ? (_jsxs(Text, { color: 'cyan', children: [formatOrgName(entry.asset.org, entry.asset.name), ' ', _jsxs(Text, { dimColor: true, children: ["(", entry.asset.type, ") v", entry.version, " \u2014 dependency"] })] })) : (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: formatOrgName(entry.asset.org, entry.asset.name) }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.version] })] }))] }, identityKey(entry.asset)))), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
|
|
418
515
|
}
|
|
419
516
|
if (data.outcome === 'dry-run-bundle') {
|
|
420
|
-
return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunBanner, { action: 'install', count: data.plan.totalCount, tools: data.tools, where: label }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", data.bundleName] }), _jsxs(Text, { dimColor: true, children: [" v", data.version] })] }), _jsx(Text, { children: " " }), data.plan.entries.map((entry) => (_jsxs(Text, { children: [' ', entry.reason === 'dependency' ? (_jsxs(Text, { color: 'cyan', children: [formatOrgName(entry.asset.org, entry.asset.name), ' ', _jsxs(Text, { dimColor: true, children: ["(", entry.asset.type, ") v", entry.version, " \u2014 dependency"] })] })) : (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: formatOrgName(entry.asset.org, entry.asset.name) }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.version] })] }))] }, identityKey(entry.asset)))), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
|
|
517
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunBanner, { action: 'install', count: data.plan.totalCount, tools: data.tools, where: label }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", data.bundleName] }), _jsxs(Text, { dimColor: true, children: [" v", data.version] })] }), _jsx(Text, { children: " " }), data.plan.entries.map((entry) => (_jsxs(Text, { children: [' ', entry.reason === 'dependency' ? (_jsxs(Text, { color: 'cyan', children: [formatOrgName(entry.asset.org, entry.asset.name), ' ', _jsxs(Text, { dimColor: true, children: ["(", entry.asset.type, ") v", entry.version, " \u2014 dependency"] })] })) : (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: formatOrgName(entry.asset.org, entry.asset.name) }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.version] })] }))] }, identityKey(entry.asset)))), _jsx(BundleReportLines, { bundleName: data.bundleName, dryRun: true, report: data }), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
|
|
421
518
|
}
|
|
422
519
|
if (data.outcome === 'deprecated') {
|
|
423
520
|
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'yellow', children: ["Warning: \"", data.name, "\" is deprecated \u2014 ", data.reason] }), data.replacement && (_jsxs(Text, { children: ["Consider using", ' ', _jsx(Text, { bold: true, color: 'cyan', children: data.replacement }), ' ', "instead."] })), _jsx(Text, { dimColor: true, children: "Use --force to install anyway." })] }));
|
|
424
521
|
}
|
|
425
522
|
return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map(({ results, skipped, tool: toolName, warnings }) => (_jsx(InstallSummary, { results: results, skipped: skipped, tools: [toolName], warnings: warnings, where: label }, toolName))), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
|
|
426
523
|
}
|
|
524
|
+
/** `atk install <spec>` with the run's own flags, for a command an error suggests. */
|
|
525
|
+
function installCommandFor(spec, { adopt, dryRun, force, pin, projectRoot, tool, user }) {
|
|
526
|
+
return [
|
|
527
|
+
`atk install ${spec}`,
|
|
528
|
+
...(tool ? ['--tool', tool] : []),
|
|
529
|
+
...(projectRoot ? ['--project-root', JSON.stringify(projectRoot)] : []),
|
|
530
|
+
...(user ? ['--user'] : []),
|
|
531
|
+
...(adopt ? ['--adopt'] : []),
|
|
532
|
+
...(force ? ['--force'] : []),
|
|
533
|
+
...(pin ? ['--pin'] : []),
|
|
534
|
+
...(dryRun ? ['--dry-run'] : []),
|
|
535
|
+
].join(' ');
|
|
536
|
+
}
|
|
427
537
|
function InstallOrg({ cliOrg, dryRun, force, json, orgName, pin, projectRoot, skipPicker, tool, user, }) {
|
|
428
538
|
const { exit } = useApp();
|
|
429
539
|
const { isTTY, json: effectiveJson } = useNonInteractive(json);
|
|
@@ -678,4 +788,23 @@ function isFromBundleVersion(installed, bundle, version) {
|
|
|
678
788
|
const origin = installed.bundleOrigin;
|
|
679
789
|
return origin?.name === bundle.name && origin.org === bundle.org && origin.version === version;
|
|
680
790
|
}
|
|
791
|
+
/** A member as a report names it: its spec and type. */
|
|
792
|
+
function memberLabel({ name, org, type }) {
|
|
793
|
+
return `${formatOrgName(org, name)} (${type})`;
|
|
794
|
+
}
|
|
795
|
+
/**
|
|
796
|
+
* The members `lockfile` has installed without the bundle's origin, each with the bundle that owns
|
|
797
|
+
* it, if any. The origin's org matches as the bundle uninstall's does.
|
|
798
|
+
*/
|
|
799
|
+
function membersOutsideBundle(lockfile, members, bundle) {
|
|
800
|
+
return members.flatMap((member) => {
|
|
801
|
+
const installed = findInstalledAsset(lockfile, member.name, member.type, member.org);
|
|
802
|
+
if (!installed)
|
|
803
|
+
return [];
|
|
804
|
+
const origin = installed.bundleOrigin;
|
|
805
|
+
if (origin?.name === bundle.name && (origin.org ?? undefined) === (bundle.org ?? undefined))
|
|
806
|
+
return [];
|
|
807
|
+
return [{ ...(origin ? { bundle: origin } : {}), ...member }];
|
|
808
|
+
});
|
|
809
|
+
}
|
|
681
810
|
//# sourceMappingURL=install.js.map
|