@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.
- package/CHANGELOG.md +77 -0
- package/README.md +4 -4
- package/build/command-manifest.json +19 -3
- package/build/commands/diff.d.ts +1 -1
- package/build/commands/diff.d.ts.map +1 -1
- package/build/commands/diff.js +38 -10
- package/build/commands/diff.js.map +1 -1
- package/build/commands/freeze.d.ts +2 -2
- package/build/commands/freeze.d.ts.map +1 -1
- package/build/commands/freeze.js +45 -22
- package/build/commands/freeze.js.map +1 -1
- package/build/commands/pin.d.ts +2 -2
- package/build/commands/pin.d.ts.map +1 -1
- package/build/commands/pin.js +77 -46
- package/build/commands/pin.js.map +1 -1
- package/build/commands/thaw.d.ts +2 -2
- package/build/commands/thaw.d.ts.map +1 -1
- package/build/commands/thaw.js +44 -21
- package/build/commands/thaw.js.map +1 -1
- package/build/commands/unpin.d.ts +2 -2
- package/build/commands/unpin.d.ts.map +1 -1
- package/build/commands/unpin.js +54 -25
- package/build/commands/unpin.js.map +1 -1
- package/build/components/DiffView.d.ts +24 -1
- package/build/components/DiffView.d.ts.map +1 -1
- package/build/components/DiffView.js +41 -4
- package/build/components/DiffView.js.map +1 -1
- package/build/components/index.d.ts +1 -1
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +1 -1
- package/build/components/index.js.map +1 -1
- package/build/lib/config.d.ts +18 -0
- package/build/lib/config.d.ts.map +1 -1
- package/build/lib/config.js +32 -9
- package/build/lib/config.js.map +1 -1
- package/build/lib/diff-command.d.ts +20 -5
- package/build/lib/diff-command.d.ts.map +1 -1
- package/build/lib/diff-command.js +68 -22
- package/build/lib/diff-command.js.map +1 -1
- package/package.json +1 -1
package/build/commands/pin.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
64
|
-
//
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
78
|
-
|
|
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
|
-
|
|
83
|
-
|
|
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
|
-
}, [
|
|
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 (
|
|
116
|
-
return (
|
|
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 (
|
|
119
|
-
return (_jsxs(Text, { color: 'green', children: ["Pinned ", _jsx(Text, { bold: true, children:
|
|
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
|
-
//
|
|
122
|
-
return (_jsxs(Text, { color: 'green', children: ["Pinned ", _jsx(Text, { bold: true, children:
|
|
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":";
|
|
1
|
+
{"version":3,"file":"pin.js","sourceRoot":"","sources":["../../src/commands/pin.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,yBAAyB,EACzB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,iDAAiD,CAAC;AAE7E,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC;SACJ,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,MAAM,CAAC;QACL,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,wCAAwC;KACtD,CAAC,CACH;IACH,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,MAAM,CAAC;QACL,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,iCAAiC;KAC/C,CAAC,CACH;IACH,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACjC,MAAM,CAAC;QACL,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,8EAA8E;KAC5F,CAAC,CACH;IACD,IAAI,EAAE,CAAC;SACJ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,MAAM,CAAC;QACL,WAAW,EAAE,yEAAyE;KACvF,CAAC,CACH;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;KAClB,KAAK,CAAC;IACL,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACjB,QAAQ,CAAC;QACP,WAAW,EACT,mJAAmJ;QACrJ,IAAI,EAAE,MAAM;KACb,CAAC,CACH;CACF,CAAC;KACD,IAAI,CACH,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACjB,QAAQ,CAAC;IACP,WAAW,EAAE,0EAA0E;IACvF,IAAI,EAAE,OAAO;CACd,CAAC,CACH,CACF,CAAC;AAmBJ,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAS;IACzG,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAG,UAAU,CACtB,KAAK,EAAE,QAAQ,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7D,0FAA0F;YAC1F,MAAM,gBAAgB,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAClF,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,IAAI,aAAa,CAAC,oBAAoB,OAAO,sCAAsC,CAAC,CAAC;YAC7F,CAAC;YACD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QAE1C,OAAO,MAAM,yBAAyB,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;YAC5D,QAAQ,CAAC,qBAAqB,CAAC,CAAC;YAChC,IAAI,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;YAE9C,mGAAmG;YACnG,MAAM,KAAK,GAAe,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;gBACzE,2DAA2D;gBAC3D,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAChE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,aAAa,CAAC,UAAU,IAAI,yBAAyB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtF,CAAC;gBAED,kFAAkF;gBAClF,mDAAmD;gBACnD,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC/D,MAAM,IAAI,aAAa,CACrB,IAAI,UAAU,sBAAsB,SAAS,CAAC,OAAO,wCAAwC,EAC7F;wBACE,OAAO,EAAE,aAAa,CAAC,eAAe,UAAU,IAAI,gBAAgB,QAAQ,EAAE,KAAK,CAAC;wBACpF,IAAI,EAAE,yEAAyE;qBAChF,CACF,CAAC;gBACJ,CAAC;gBAED,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBAAE,SAAS;gBAC/C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;gBAEjC,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;gBACtE,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;gBAErC,8CAA8C;gBAC9C,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;oBAClF,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;oBACzE,SAAS;gBACX,CAAC;gBAED,+CAA+C;gBAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC;gBAE5C,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,UAAU,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;gBACpF,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAElE,KAAK,CAAC,IAAI,CACR,WAAW;oBACT,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE;oBACzF,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CACzD,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC;YAClE,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,qBAAqB,CAAC,CAAC;gBAChC,MAAM,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC3E,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAC3C,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAC,OAAO,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,UAAU,CAAC;gBAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,OAAO;gBAChB,GAAG,MAAM;aACV,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IACzF,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvB,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAC,IAAI,IAAC,QAAQ,2BAAM,UAAU,CAAC,QAAQ,CAAC,IAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjF,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACtB,KAAC,OAAO,IAAsB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,IAA3E,WAAW,CAAC,CAAC,CAAC,CAAiE,CAC9F,CAAC,GACE,CACP,CAAC;IACJ,CAAC;IAED,OAAO,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AAClE,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAyD;IAC7F,IAAI,MAAM,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;QACxC,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,kBAAS,OAAC,KAAC,IAAI,IAAC,IAAI,kBAAE,IAAI,GAAQ,6BAAwB,MAAM,CAAC,OAAO,EAC3F,KAAK,IACD,CACR,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,wBACV,KAAC,IAAI,IAAC,IAAI,kBAAE,IAAI,GAAQ,WAAM,MAAM,CAAC,OAAO,OAAE,MAAC,IAAI,IAAC,QAAQ,6BAAQ,MAAM,CAAC,eAAe,SAAS,EACzG,KAAK,IACD,CACR,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,wBACV,KAAC,IAAI,IAAC,IAAI,kBAAE,IAAI,GAAQ,WAAM,MAAM,CAAC,OAAO,EAClD,KAAK,IACD,CACR,CAAC;AACJ,CAAC"}
|
package/build/commands/thaw.d.ts
CHANGED
|
@@ -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],
|
|
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":"
|
|
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"}
|
package/build/commands/thaw.js
CHANGED
|
@@ -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,
|
|
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
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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 (
|
|
86
|
-
return (
|
|
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
|
-
//
|
|
89
|
-
return (_jsxs(Text, { color: 'green', children: ["Thawed ", _jsx(Text, { bold: true, children:
|
|
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":";
|
|
1
|
+
{"version":3,"file":"thaw.js","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,oEAAoE,CAAC;AAEhG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC;SACJ,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,MAAM,CAAC;QACL,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,wCAAwC;KACtD,CAAC,CACH;IACH,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,MAAM,CAAC;QACL,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,iCAAiC;KAC/C,CAAC,CACH;IACH,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACjC,MAAM,CAAC;QACL,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,8EAA8E;KAC5F,CAAC,CACH;IACD,IAAI,EAAE,CAAC;SACJ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,MAAM,CAAC;QACL,WAAW,EAAE,yEAAyE;KACvF,CAAC,CACH;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;KAClB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;KAC3F,IAAI,CACH,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,iDAAiD,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CACjH,CAAC;AAmBJ,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,EAAS;IAC1G,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAG,UAAU,CACtB,KAAK,EAAE,QAAQ,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;QAE9B,qEAAqE;QACrE,6EAA6E;QAC7E,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;QAEhD,+FAA+F;QAC/F,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE7C,wDAAwD;YACxD,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/F,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAAE,SAAS;YAC/C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAEjC,6DAA6D;YAC7D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,kFAAkF;QAClF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;YACrE,MAAM,kBAAkB,CACtB,UAAU,EACV,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CACrD,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC,EACD,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAC3C,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAC,OAAO,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,UAAU,CAAC;gBAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,OAAO;gBAChB,GAAG,MAAM;aACV,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IACzF,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvB,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAC,IAAI,IAAC,QAAQ,2BAAM,UAAU,CAAC,QAAQ,CAAC,IAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjF,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACtB,KAAC,QAAQ,IAAsB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,IAApF,WAAW,CAAC,CAAC,CAAC,CAA0E,CACxG,CAAC,GACE,CACP,CAAC;IACJ,CAAC;IAED,OAAO,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AAC5E,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAuE;IAC7G,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,kBAAS,OAAC,KAAC,IAAI,IAAC,IAAI,kBAAE,IAAI,GAAQ,8BACrD,KAAK,IACD,CACR,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,wBACV,KAAC,IAAI,IAAC,IAAI,kBAAE,IAAI,GAAQ,EAC9B,KAAK,IACD,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -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],
|
|
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":"
|
|
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"}
|
package/build/commands/unpin.js
CHANGED
|
@@ -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
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
51
|
-
//
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
57
|
-
if (
|
|
58
|
-
|
|
77
|
+
const unpinned = named.some((a) => a.outcome === 'unpinned');
|
|
78
|
+
if (unpinned) {
|
|
79
|
+
progress('Writing lockfile...');
|
|
80
|
+
await writeLockfile(projectDir, lockfile);
|
|
59
81
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
}, [
|
|
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 (
|
|
90
|
-
return (
|
|
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
|
-
//
|
|
93
|
-
return (_jsxs(Text, { color: 'green', children: ["Unpinned ", _jsx(Text, { bold: true, children:
|
|
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":";
|
|
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;
|
|
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"}
|