@detergent-software/atk 9.2.0-dev.8 → 9.2.0

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 (40) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/README.md +4 -4
  3. package/build/command-manifest.json +19 -3
  4. package/build/commands/diff.d.ts +1 -1
  5. package/build/commands/diff.d.ts.map +1 -1
  6. package/build/commands/diff.js +38 -10
  7. package/build/commands/diff.js.map +1 -1
  8. package/build/commands/freeze.d.ts +2 -2
  9. package/build/commands/freeze.d.ts.map +1 -1
  10. package/build/commands/freeze.js +45 -22
  11. package/build/commands/freeze.js.map +1 -1
  12. package/build/commands/pin.d.ts +2 -2
  13. package/build/commands/pin.d.ts.map +1 -1
  14. package/build/commands/pin.js +77 -46
  15. package/build/commands/pin.js.map +1 -1
  16. package/build/commands/thaw.d.ts +2 -2
  17. package/build/commands/thaw.d.ts.map +1 -1
  18. package/build/commands/thaw.js +44 -21
  19. package/build/commands/thaw.js.map +1 -1
  20. package/build/commands/unpin.d.ts +2 -2
  21. package/build/commands/unpin.d.ts.map +1 -1
  22. package/build/commands/unpin.js +54 -25
  23. package/build/commands/unpin.js.map +1 -1
  24. package/build/components/DiffView.d.ts +24 -1
  25. package/build/components/DiffView.d.ts.map +1 -1
  26. package/build/components/DiffView.js +41 -4
  27. package/build/components/DiffView.js.map +1 -1
  28. package/build/components/index.d.ts +1 -1
  29. package/build/components/index.d.ts.map +1 -1
  30. package/build/components/index.js +1 -1
  31. package/build/components/index.js.map +1 -1
  32. package/build/lib/config.d.ts +18 -0
  33. package/build/lib/config.d.ts.map +1 -1
  34. package/build/lib/config.js +32 -9
  35. package/build/lib/config.js.map +1 -1
  36. package/build/lib/diff-command.d.ts +20 -5
  37. package/build/lib/diff-command.d.ts.map +1 -1
  38. package/build/lib/diff-command.js +68 -22
  39. package/build/lib/diff-command.js.map +1 -1
  40. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Text } from 'ink';
2
+ import { Box, Text } from 'ink';
3
3
  import { valid as semverValid } from 'semver';
4
4
  import { z } from 'zod';
5
5
  import { ErrorView, Spinner } from '../components/index.js';
6
6
  import { useCommand } from '../hooks/useCommand.js';
7
7
  import { useResolvedScope } from '../hooks/useResolvedScope.js';
8
- import { findInstalledAsset, isPinned, LockfileError, pinAssetVersion, readLockfile, withLockfileErrorHandling, writeLockfile, } from '../lib/lockfile.js';
9
- import { parseOrgFromName } from '../lib/org.js';
8
+ import { findInstalledAsset, identityKey, isPinned, LockfileError, pinAssetVersion, readLockfile, withLockfileErrorHandling, writeLockfile, } from '../lib/lockfile.js';
9
+ import { formatOrgName, parseOrgFromName } from '../lib/org.js';
10
10
  import { renderJson, useNonInteractive } from '../lib/output.js';
11
11
  import { argument, option } from '../lib/pastel/index.js';
12
12
  import { AssetType } from '../lib/schemas/index.js';
@@ -39,58 +39,83 @@ export const options = z.object({
39
39
  description: 'Use the user scope (the user root, ~ by default) instead of the project',
40
40
  })),
41
41
  });
42
- export const args = z.tuple([
42
+ export const args = z
43
+ .tuple([
43
44
  z.string().describe(argument({
44
45
  description: 'Asset name (supports @org/name); an @version suffix must be the installed version. To pin another version, run atk install <name>@<version> --pin',
45
46
  name: 'name',
46
47
  })),
47
- ]);
48
- export default function Pin({ args: [nameArg], options: { json, projectRoot, type, user } }) {
49
- const { name: parsedName, version } = parseNameVersion(nameArg);
50
- const { name, org } = parseOrgFromName(parsedName);
48
+ ])
49
+ .rest(z.string().describe(argument({
50
+ description: 'More assets to pin with the first, in one pass (each may carry @version)',
51
+ name: 'names',
52
+ })));
53
+ export default function Pin({ args: [nameArg, ...more], options: { json, projectRoot, type, user } }) {
51
54
  const { json: effectiveJson } = useNonInteractive(json);
52
55
  const { fields, resolve, resolved } = useResolvedScope({ projectRoot, user });
56
+ const specs = [nameArg, ...more];
53
57
  const state = useCommand(async (progress) => {
54
- // Validate explicit version is valid semver; compare its clean form (`v1.0.0` is `1.0.0`)
55
- const requestedVersion = version === undefined ? undefined : semverValid(version);
56
- if (requestedVersion === null) {
57
- throw new LockfileError(`Invalid version '${version}' -- expected a valid semver version`);
58
- }
58
+ const requests = specs.map((spec) => {
59
+ const { name: parsedName, version } = parseNameVersion(spec);
60
+ // Validate explicit version is valid semver; compare its clean form (`v1.0.0` is `1.0.0`)
61
+ const requestedVersion = version === undefined ? undefined : semverValid(version);
62
+ if (requestedVersion === null) {
63
+ throw new LockfileError(`Invalid version '${version}' -- expected a valid semver version`);
64
+ }
65
+ return { parsedName, requestedVersion, spec, ...parseOrgFromName(parsedName) };
66
+ });
59
67
  const where = await resolve();
60
68
  const { root: projectDir, scope } = where;
61
69
  return await withLockfileErrorHandling(projectDir, async () => {
62
70
  progress('Reading lockfile...');
63
- const lockfile = await readLockfile(projectDir);
64
- // Look up the installed asset to determine current version
65
- const installed = findInstalledAsset(lockfile, name, type, org);
66
- if (!installed) {
67
- throw new LockfileError(`Asset '${nameArg}' is not installed in ${scopeLabel(where)}`);
71
+ let lockfile = await readLockfile(projectDir);
72
+ // Check every name before the lockfile is written; a name naming an entry already named is dropped
73
+ const named = [];
74
+ const seen = new Set();
75
+ for (const { name, org, parsedName, requestedVersion, spec } of requests) {
76
+ // Look up the installed asset to determine current version
77
+ const installed = findInstalledAsset(lockfile, name, type, org);
78
+ if (!installed) {
79
+ throw new LockfileError(`Asset '${spec}' is not installed in ${scopeLabel(where)}`);
80
+ }
81
+ // A pin holds the installed version; installing another one (and checking that it
82
+ // exists in the registry) is `install --pin`'s job
83
+ if (requestedVersion && requestedVersion !== installed.version) {
84
+ throw new LockfileError(`'${parsedName}' is installed at v${installed.version}; atk pin holds the installed version.`, {
85
+ command: scopedCommand(`atk install ${parsedName}@${requestedVersion} --pin`, scope),
86
+ hint: 'Install that version with --pin to switch to it and pin it in one step.',
87
+ });
88
+ }
89
+ if (seen.has(identityKey(installed)))
90
+ continue;
91
+ seen.add(identityKey(installed));
92
+ const asset = { name, ...(org ? { org } : {}), type: installed.type };
93
+ const pinVersion = installed.version;
94
+ // Check if already pinned to the same version
95
+ if (isPinned(lockfile, name, type, org) && installed.pinnedVersion === pinVersion) {
96
+ named.push({ ...asset, outcome: 'already-pinned', version: pinVersion });
97
+ continue;
98
+ }
99
+ // Track previous pin for informational message
100
+ const previousPin = installed.pinnedVersion;
101
+ progress(more.length > 0 ? `Pinning ${parsedName}...` : 'Pinning asset version...');
102
+ lockfile = pinAssetVersion(lockfile, name, pinVersion, type, org);
103
+ named.push(previousPin
104
+ ? { ...asset, outcome: 'updated-pin', previousVersion: previousPin, version: pinVersion }
105
+ : { ...asset, outcome: 'pinned', version: pinVersion });
68
106
  }
69
- // A pin holds the installed version; installing another one (and checking that it
70
- // exists in the registry) is `install --pin`'s job
71
- if (requestedVersion && requestedVersion !== installed.version) {
72
- throw new LockfileError(`'${parsedName}' is installed at v${installed.version}; atk pin holds the installed version.`, {
73
- command: scopedCommand(`atk install ${parsedName}@${requestedVersion} --pin`, scope),
74
- hint: 'Install that version with --pin to switch to it and pin it in one step.',
75
- });
107
+ const changed = named.some((a) => a.outcome !== 'already-pinned');
108
+ if (changed) {
109
+ progress('Writing lockfile...');
110
+ await writeLockfile(projectDir, lockfile);
76
111
  }
77
- const pinVersion = installed.version;
78
- // Check if already pinned to the same version
79
- if (isPinned(lockfile, name, type, org) && installed.pinnedVersion === pinVersion) {
80
- return { name: nameArg, outcome: 'already-pinned', version: pinVersion };
112
+ if (more.length > 0) {
113
+ return { assets: named, outcome: changed ? 'pinned' : 'already-pinned' };
81
114
  }
82
- // Track previous pin for informational message
83
- const previousPin = installed.pinnedVersion;
84
- progress('Pinning asset version...');
85
- const updatedLockfile = pinAssetVersion(lockfile, name, pinVersion, type, org);
86
- progress('Writing lockfile...');
87
- await writeLockfile(projectDir, updatedLockfile);
88
- if (previousPin) {
89
- return { name: nameArg, outcome: 'updated-pin', previousVersion: previousPin, version: pinVersion };
90
- }
91
- return { name: nameArg, outcome: 'pinned', version: pinVersion };
115
+ const { name: _name, org: _org, type: _type, ...result } = named[0];
116
+ return { name: nameArg, ...result };
92
117
  });
93
- }, [name, org, version, projectRoot, type, user]);
118
+ }, [specs.join(' '), projectRoot, type, user]);
94
119
  if (state.status === 'loading') {
95
120
  return _jsx(Spinner, { message: state.message });
96
121
  }
@@ -112,13 +137,19 @@ export default function Pin({ args: [nameArg], options: { json, projectRoot, typ
112
137
  return renderJson({ ...data, ...fields });
113
138
  }
114
139
  const where = resolved ? _jsxs(Text, { dimColor: true, children: [" in ", scopeLabel(resolved)] }) : null;
115
- if (data.outcome === 'already-pinned') {
116
- return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " is already pinned to v", data.version, where] }));
140
+ if ('assets' in data) {
141
+ return (_jsx(Box, { flexDirection: 'column', children: data.assets.map((a) => (_jsx(PinLine, { name: formatOrgName(a.org, a.name), result: a, where: where }, identityKey(a)))) }));
142
+ }
143
+ return _jsx(PinLine, { name: data.name, result: data, where: where });
144
+ }
145
+ function PinLine({ name, result, where }) {
146
+ if (result.outcome === 'already-pinned') {
147
+ return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: name }), " is already pinned to v", result.version, where] }));
117
148
  }
118
- if (data.outcome === 'updated-pin') {
119
- return (_jsxs(Text, { color: 'green', children: ["Pinned ", _jsx(Text, { bold: true, children: data.name }), " to v", data.version, " ", _jsxs(Text, { dimColor: true, children: ["(was v", data.previousVersion, ")"] }), where] }));
149
+ if (result.outcome === 'updated-pin') {
150
+ return (_jsxs(Text, { color: 'green', children: ["Pinned ", _jsx(Text, { bold: true, children: name }), " to v", result.version, " ", _jsxs(Text, { dimColor: true, children: ["(was v", result.previousVersion, ")"] }), where] }));
120
151
  }
121
- // data.outcome === 'pinned'
122
- return (_jsxs(Text, { color: 'green', children: ["Pinned ", _jsx(Text, { bold: true, children: data.name }), " to v", data.version, where] }));
152
+ // result.outcome === 'pinned'
153
+ return (_jsxs(Text, { color: 'green', children: ["Pinned ", _jsx(Text, { bold: true, children: name }), " to v", result.version, where] }));
123
154
  }
124
155
  //# sourceMappingURL=pin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pin.js","sourceRoot":"","sources":["../../src/commands/pin.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pin.js","sourceRoot":"","sources":["../../src/commands/pin.tsx"],"names":[],"mappings":"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"}
@@ -13,11 +13,11 @@ export declare const options: z.ZodObject<{
13
13
  }>>;
14
14
  user: z.ZodOptional<z.ZodBoolean>;
15
15
  }, z.core.$strip>;
16
- export declare const args: z.ZodTuple<[z.ZodString], null>;
16
+ export declare const args: z.ZodTuple<[z.ZodString], z.ZodString>;
17
17
  type Props = {
18
18
  args: z.infer<typeof args>;
19
19
  options: z.infer<typeof options>;
20
20
  };
21
- export default function Thaw({ args: [rawName], options: { json, projectRoot, type, user } }: Props): import("react").JSX.Element;
21
+ export default function Thaw({ args: [rawName, ...more], options: { json, projectRoot, type, user } }: Props): import("react").JSX.Element;
22
22
  export {};
23
23
  //# sourceMappingURL=thaw.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thaw.d.ts","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,WAAW,uEAAuE,CAAC;AAEhG,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAiClB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAAgG,CAAC;AAElH,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;AAIF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,+BA0ElG"}
1
+ {"version":3,"file":"thaw.d.ts","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,WAAW,uEAAuE,CAAC;AAEhG,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAiClB,CAAC;AAEH,eAAO,MAAM,IAAI,wCAId,CAAC;AAUJ,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;AAMF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,+BAuF3G"}
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Text } from 'ink';
2
+ import { Box, Text } from 'ink';
3
3
  import { z } from 'zod';
4
4
  import { ErrorView, Spinner } from '../components/index.js';
5
5
  import { useCommand } from '../hooks/useCommand.js';
6
6
  import { useResolvedScope } from '../hooks/useResolvedScope.js';
7
- import { isAssetFrozen, thawAssetInConfig } from '../lib/config.js';
8
- import { readLockfile, requireDirectInstall } from '../lib/lockfile.js';
9
- import { parseOrgFromName } from '../lib/org.js';
7
+ import { isAssetFrozen, thawAssetsInConfig } from '../lib/config.js';
8
+ import { identityKey, readLockfile, requireDirectInstall } from '../lib/lockfile.js';
9
+ import { formatOrgName, parseOrgFromName } from '../lib/org.js';
10
10
  import { renderJson, useNonInteractive } from '../lib/output.js';
11
11
  import { argument, option } from '../lib/pastel/index.js';
12
12
  import { AssetType } from '../lib/schemas/index.js';
@@ -38,11 +38,13 @@ export const options = z.object({
38
38
  description: 'Use the user scope (the user root, ~ by default) instead of the project',
39
39
  })),
40
40
  });
41
- export const args = z.tuple([z.string().describe(argument({ description: 'Asset name to thaw', name: 'name' }))]);
42
- export default function Thaw({ args: [rawName], options: { json, projectRoot, type, user } }) {
43
- const { name, org } = parseOrgFromName(rawName);
41
+ export const args = z
42
+ .tuple([z.string().describe(argument({ description: 'Asset name to thaw', name: 'name' }))])
43
+ .rest(z.string().describe(argument({ description: 'More assets to thaw with the first, in one pass', name: 'names' })));
44
+ export default function Thaw({ args: [rawName, ...more], options: { json, projectRoot, type, user } }) {
44
45
  const { json: effectiveJson } = useNonInteractive(json);
45
46
  const { fields, resolve, resolved } = useResolvedScope({ projectRoot, user });
47
+ const specs = [rawName, ...more];
46
48
  const state = useCommand(async (progress) => {
47
49
  const where = await resolve();
48
50
  const projectDir = where.root;
@@ -50,17 +52,32 @@ export default function Thaw({ args: [rawName], options: { json, projectRoot, ty
50
52
  // frozen state in the project config and does not place or modify any files.
51
53
  progress('Reading lockfile...');
52
54
  const lockfile = await readLockfile(projectDir);
53
- // Verify the asset is installed and is a direct install
54
- requireDirectInstall(lockfile, name, 'thawed', type, org, scopeLabel(where));
55
- // Check if the asset is actually frozen (via project config)
56
- const frozen = await isAssetFrozen(projectDir, name, type, org);
57
- if (!frozen) {
58
- return { name: rawName, outcome: 'not-frozen' };
55
+ // Check every name before anything is written; a name naming an entry already named is dropped
56
+ const named = [];
57
+ const seen = new Set();
58
+ for (const spec of specs) {
59
+ const { name, org } = parseOrgFromName(spec);
60
+ // Verify the asset is installed and is a direct install
61
+ const installed = requireDirectInstall(lockfile, name, 'thawed', type, org, scopeLabel(where));
62
+ if (seen.has(identityKey(installed)))
63
+ continue;
64
+ seen.add(identityKey(installed));
65
+ // Check if the asset is actually frozen (via project config)
66
+ const frozen = await isAssetFrozen(projectDir, name, type, org);
67
+ const asset = { name, ...(org ? { org } : {}), type: installed.type };
68
+ named.push({ ...asset, outcome: frozen ? 'thawed' : 'not-frozen' });
59
69
  }
60
- progress('Thawing asset...');
61
- await thawAssetInConfig(projectDir, name, type, org);
62
- return { name: rawName, outcome: 'thawed' };
63
- }, [rawName, projectRoot, type, user]);
70
+ // Thaw in project config (.atkrc.json), in one write, matching on --type as given
71
+ const toThaw = named.filter((a) => a.outcome === 'thawed');
72
+ if (toThaw.length > 0) {
73
+ progress(more.length > 0 ? 'Thawing assets...' : 'Thawing asset...');
74
+ await thawAssetsInConfig(projectDir, toThaw.map(({ name, org }) => ({ name, org, type })));
75
+ }
76
+ if (more.length > 0) {
77
+ return { assets: named, outcome: toThaw.length > 0 ? 'thawed' : 'not-frozen' };
78
+ }
79
+ return { name: rawName, outcome: named[0].outcome };
80
+ }, [specs.join(' '), projectRoot, type, user]);
64
81
  if (state.status === 'loading') {
65
82
  return _jsx(Spinner, { message: state.message });
66
83
  }
@@ -82,10 +99,16 @@ export default function Thaw({ args: [rawName], options: { json, projectRoot, ty
82
99
  return renderJson({ ...data, ...fields });
83
100
  }
84
101
  const where = resolved ? _jsxs(Text, { dimColor: true, children: [" in ", scopeLabel(resolved)] }) : null;
85
- if (data.outcome === 'not-frozen') {
86
- return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " is not currently frozen", where] }));
102
+ if ('assets' in data) {
103
+ return (_jsx(Box, { flexDirection: 'column', children: data.assets.map((a) => (_jsx(ThawLine, { name: formatOrgName(a.org, a.name), outcome: a.outcome, where: where }, identityKey(a)))) }));
104
+ }
105
+ return _jsx(ThawLine, { name: data.name, outcome: data.outcome, where: where });
106
+ }
107
+ function ThawLine({ name, outcome, where }) {
108
+ if (outcome === 'not-frozen') {
109
+ return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: name }), " is not currently frozen", where] }));
87
110
  }
88
- // data.outcome === 'thawed'
89
- return (_jsxs(Text, { color: 'green', children: ["Thawed ", _jsx(Text, { bold: true, children: data.name }), where] }));
111
+ // outcome === 'thawed'
112
+ return (_jsxs(Text, { color: 'green', children: ["Thawed ", _jsx(Text, { bold: true, children: name }), where] }));
90
113
  }
91
114
  //# sourceMappingURL=thaw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thaw.js","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thaw.js","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":"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"}
@@ -13,11 +13,11 @@ export declare const options: z.ZodObject<{
13
13
  }>>;
14
14
  user: z.ZodOptional<z.ZodBoolean>;
15
15
  }, z.core.$strip>;
16
- export declare const args: z.ZodTuple<[z.ZodString], null>;
16
+ export declare const args: z.ZodTuple<[z.ZodString], z.ZodString>;
17
17
  type Props = {
18
18
  args: z.infer<typeof args>;
19
19
  options: z.infer<typeof options>;
20
20
  };
21
- export default function Unpin({ args: [rawName], options: { json, projectRoot, type, user } }: Props): import("react").JSX.Element;
21
+ export default function Unpin({ args: [rawName, ...more], options: { json, projectRoot, type, user } }: Props): import("react").JSX.Element;
22
22
  export {};
23
23
  //# sourceMappingURL=unpin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unpin.d.ts","sourceRoot":"","sources":["../../src/commands/unpin.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAE1E,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAiClB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAAiG,CAAC;AAEnH,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;AAIF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,+BAiFnG"}
1
+ {"version":3,"file":"unpin.d.ts","sourceRoot":"","sources":["../../src/commands/unpin.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAE1E,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAiClB,CAAC;AAEH,eAAO,MAAM,IAAI,wCAId,CAAC;AAKJ,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;AAQF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,+BAkG5G"}
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Text } from 'ink';
2
+ import { Box, Text } from 'ink';
3
3
  import { z } from 'zod';
4
4
  import { ErrorView, Spinner } from '../components/index.js';
5
5
  import { useCommand } from '../hooks/useCommand.js';
6
6
  import { useResolvedScope } from '../hooks/useResolvedScope.js';
7
- import { findInstalledAsset, isPinned, LockfileError, readLockfile, unpinAssetVersion, withLockfileErrorHandling, writeLockfile, } from '../lib/lockfile.js';
8
- import { parseOrgFromName } from '../lib/org.js';
7
+ import { findInstalledAsset, identityKey, isPinned, LockfileError, readLockfile, unpinAssetVersion, withLockfileErrorHandling, writeLockfile, } from '../lib/lockfile.js';
8
+ import { formatOrgName, parseOrgFromName } from '../lib/org.js';
9
9
  import { renderJson, useNonInteractive } from '../lib/output.js';
10
10
  import { argument, option } from '../lib/pastel/index.js';
11
11
  import { AssetType } from '../lib/schemas/index.js';
@@ -37,34 +37,57 @@ export const options = z.object({
37
37
  description: 'Use the user scope (the user root, ~ by default) instead of the project',
38
38
  })),
39
39
  });
40
- export const args = z.tuple([z.string().describe(argument({ description: 'Asset name to unpin', name: 'name' }))]);
41
- export default function Unpin({ args: [rawName], options: { json, projectRoot, type, user } }) {
42
- const { name, org } = parseOrgFromName(rawName);
40
+ export const args = z
41
+ .tuple([z.string().describe(argument({ description: 'Asset name to unpin', name: 'name' }))])
42
+ .rest(z.string().describe(argument({ description: 'More assets to unpin with the first, in one pass', name: 'names' })));
43
+ export default function Unpin({ args: [rawName, ...more], options: { json, projectRoot, type, user } }) {
43
44
  const { json: effectiveJson } = useNonInteractive(json);
44
45
  const { fields, resolve, resolved } = useResolvedScope({ projectRoot, user });
46
+ const specs = [rawName, ...more];
45
47
  const state = useCommand(async (progress) => {
46
48
  const where = await resolve();
47
49
  const projectDir = where.root;
48
50
  return await withLockfileErrorHandling(projectDir, async () => {
49
51
  progress('Reading lockfile...');
50
- const lockfile = await readLockfile(projectDir);
51
- // Verify the asset is installed
52
- const installed = findInstalledAsset(lockfile, name, type, org);
53
- if (!installed) {
54
- throw new LockfileError(`Asset '${rawName}' is not installed in ${scopeLabel(where)}`);
52
+ let lockfile = await readLockfile(projectDir);
53
+ // Check every name before the lockfile is written; a name naming an entry already named is dropped
54
+ const named = [];
55
+ const seen = new Set();
56
+ for (const spec of specs) {
57
+ const { name, org } = parseOrgFromName(spec);
58
+ // Verify the asset is installed
59
+ const installed = findInstalledAsset(lockfile, name, type, org);
60
+ if (!installed) {
61
+ throw new LockfileError(`Asset '${spec}' is not installed in ${scopeLabel(where)}`);
62
+ }
63
+ if (seen.has(identityKey(installed)))
64
+ continue;
65
+ seen.add(identityKey(installed));
66
+ const asset = { name, ...(org ? { org } : {}), type: installed.type };
67
+ // Check if the asset is actually pinned
68
+ if (!isPinned(lockfile, name, type, org)) {
69
+ named.push({ ...asset, outcome: 'not-pinned' });
70
+ continue;
71
+ }
72
+ const previousVersion = installed.pinnedVersion;
73
+ progress(more.length > 0 ? `Removing version pin from ${spec}...` : 'Removing version pin...');
74
+ lockfile = unpinAssetVersion(lockfile, name, type, org);
75
+ named.push({ ...asset, outcome: 'unpinned', version: previousVersion });
55
76
  }
56
- // Check if the asset is actually pinned
57
- if (!isPinned(lockfile, name, type, org)) {
58
- return { name: rawName, outcome: 'not-pinned' };
77
+ const unpinned = named.some((a) => a.outcome === 'unpinned');
78
+ if (unpinned) {
79
+ progress('Writing lockfile...');
80
+ await writeLockfile(projectDir, lockfile);
59
81
  }
60
- const previousVersion = installed.pinnedVersion;
61
- progress('Removing version pin...');
62
- const updatedLockfile = unpinAssetVersion(lockfile, name, type, org);
63
- progress('Writing lockfile...');
64
- await writeLockfile(projectDir, updatedLockfile);
65
- return { name: rawName, outcome: 'unpinned', version: previousVersion };
82
+ if (more.length > 0) {
83
+ return { assets: named, outcome: unpinned ? 'unpinned' : 'not-pinned' };
84
+ }
85
+ const only = named[0];
86
+ return only.outcome === 'unpinned'
87
+ ? { name: rawName, outcome: 'unpinned', version: only.version }
88
+ : { name: rawName, outcome: 'not-pinned' };
66
89
  });
67
- }, [rawName, projectRoot, type, user]);
90
+ }, [specs.join(' '), projectRoot, type, user]);
68
91
  if (state.status === 'loading') {
69
92
  return _jsx(Spinner, { message: state.message });
70
93
  }
@@ -86,10 +109,16 @@ export default function Unpin({ args: [rawName], options: { json, projectRoot, t
86
109
  return renderJson({ ...data, ...fields });
87
110
  }
88
111
  const where = resolved ? _jsxs(Text, { dimColor: true, children: [" in ", scopeLabel(resolved)] }) : null;
89
- if (data.outcome === 'not-pinned') {
90
- return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " is not currently pinned", where] }));
112
+ if ('assets' in data) {
113
+ return (_jsx(Box, { flexDirection: 'column', children: data.assets.map((a) => (_jsx(UnpinLine, { name: formatOrgName(a.org, a.name), result: a, where: where }, identityKey(a)))) }));
114
+ }
115
+ return _jsx(UnpinLine, { name: data.name, result: data, where: where });
116
+ }
117
+ function UnpinLine({ name, result, where }) {
118
+ if (result.outcome === 'not-pinned') {
119
+ return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: name }), " is not currently pinned", where] }));
91
120
  }
92
- // data.outcome === 'unpinned'
93
- return (_jsxs(Text, { color: 'green', children: ["Unpinned ", _jsx(Text, { bold: true, children: data.name }), " ", _jsxs(Text, { dimColor: true, children: ["(was pinned to v", data.version, ")"] }), where] }));
121
+ // result.outcome === 'unpinned'
122
+ return (_jsxs(Text, { color: 'green', children: ["Unpinned ", _jsx(Text, { bold: true, children: name }), " ", _jsxs(Text, { dimColor: true, children: ["(was pinned to v", result.version, ")"] }), where] }));
94
123
  }
95
124
  //# sourceMappingURL=unpin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unpin.js","sourceRoot":"","sources":["../../src/commands/unpin.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unpin.js","sourceRoot":"","sources":["../../src/commands/unpin.tsx"],"names":[],"mappings":"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"}
@@ -8,6 +8,14 @@ export interface FileDiffEntry {
8
8
  remoteLines?: number;
9
9
  status: 'added' | 'missing-local' | 'modified' | 'removed' | 'unchanged';
10
10
  }
11
+ /** A file's diff between two registry versions: `-` lines from the first, `+` lines from the second. */
12
+ export interface VersionFileDiff {
13
+ diffLines?: DiffLine[];
14
+ fileName: string;
15
+ fromLines?: number;
16
+ status: 'added' | 'modified' | 'removed' | 'unchanged';
17
+ toLines?: number;
18
+ }
11
19
  interface DiffViewProps {
12
20
  /** The registry version the installed files were compared with */
13
21
  comparedVersion: string;
@@ -24,7 +32,16 @@ interface DiffViewProps {
24
32
  /** The scope the asset is installed in, for the update command */
25
33
  scope?: Scope;
26
34
  /** What was asked for: the latest, a chosen version, or the installed (locked) version */
27
- target: DiffTarget['kind'];
35
+ target: Exclude<DiffTarget['kind'], 'range'>;
36
+ }
37
+ interface VersionDiffViewProps {
38
+ diffs: VersionFileDiff[];
39
+ /** The version the `-` lines come from */
40
+ fromVersion: string;
41
+ /** Asset name being diffed */
42
+ name: string;
43
+ /** The version the `+` lines come from */
44
+ toVersion: string;
28
45
  }
29
46
  /**
30
47
  * Diff display for `atk diff` — shows file-level changes between the
@@ -33,5 +50,11 @@ interface DiffViewProps {
33
50
  * added, and removed files.
34
51
  */
35
52
  export default function DiffView({ comparedVersion, diffs, installedVersion, latestVersion, name, sameVersion, scope, target, }: DiffViewProps): import("react").JSX.Element;
53
+ /**
54
+ * Diff display for `atk diff <name>@<from>..<to>`: the file-level changes
55
+ * between two registry versions of an asset, with `-` lines from `from` and
56
+ * `+` lines from `to`.
57
+ */
58
+ export declare function VersionDiffView({ diffs, fromVersion, name, toVersion }: VersionDiffViewProps): import("react").JSX.Element;
36
59
  export {};
37
60
  //# sourceMappingURL=DiffView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,iBAAiB,CAAC;AAG5D,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;CAC1E;AAED,UAAU,aAAa;IACrB,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,0FAA0F;IAC1F,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,eAAe,EACf,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,IAAI,EACJ,WAAW,EACX,KAAK,EACL,MAAM,GACP,EAAE,aAAa,+BAuDf"}
1
+ {"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,iBAAiB,CAAC;AAG5D,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;CAC1E;AAED,wGAAwG;AACxG,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,aAAa;IACrB,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,0FAA0F;IAC1F,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,eAAe,EACf,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,IAAI,EACJ,WAAW,EACX,KAAK,EACL,MAAM,GACP,EAAE,aAAa,+BA4Df;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BA+B5F"}