@microwiseai/snapshot 0.5.1 → 0.6.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/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +37 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +34 -11
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/setup.d.ts +5 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +52 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/index.js +18 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/config.js +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/gitlab.d.ts.map +1 -1
- package/dist/lib/gitlab.js +8 -6
- package/dist/lib/gitlab.js.map +1 -1
- package/dist/lib/prerequisites.d.ts +33 -0
- package/dist/lib/prerequisites.d.ts.map +1 -0
- package/dist/lib/prerequisites.js +123 -0
- package/dist/lib/prerequisites.js.map +1 -0
- package/package.json +3 -14
- package/dist/commands/clone-all.d.ts +0 -21
- package/dist/commands/clone-all.d.ts.map +0 -1
- package/dist/commands/clone-all.js +0 -57
- package/dist/commands/clone-all.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/README.md +0 -117
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts +0 -9
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js +0 -154
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/clone.d.ts +0 -21
- package/node_modules/@gitdot/clone-lib/dist/clone.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/clone.js +0 -228
- package/node_modules/@gitdot/clone-lib/dist/clone.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts +0 -10
- package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/dotpath.js +0 -27
- package/node_modules/@gitdot/clone-lib/dist/dotpath.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/git.d.ts +0 -23
- package/node_modules/@gitdot/clone-lib/dist/git.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/git.js +0 -134
- package/node_modules/@gitdot/clone-lib/dist/git.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/index.d.ts +0 -17
- package/node_modules/@gitdot/clone-lib/dist/index.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/index.js +0 -35
- package/node_modules/@gitdot/clone-lib/dist/index.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/lock.d.ts +0 -24
- package/node_modules/@gitdot/clone-lib/dist/lock.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/lock.js +0 -97
- package/node_modules/@gitdot/clone-lib/dist/lock.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts +0 -15
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js +0 -124
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts +0 -12
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.js +0 -31
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts +0 -32
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js +0 -159
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts +0 -44
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.js +0 -163
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts +0 -18
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js +0 -155
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/types.d.ts +0 -225
- package/node_modules/@gitdot/clone-lib/dist/types.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/types.js +0 -9
- package/node_modules/@gitdot/clone-lib/dist/types.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/package.json +0 -53
package/dist/lib/gitlab.js
CHANGED
|
@@ -129,18 +129,19 @@ async function fetchSnapshotFromProxy(snapshotSpec, authToken) {
|
|
|
129
129
|
if (!response.ok) {
|
|
130
130
|
if (response.status === 401) {
|
|
131
131
|
if (resolvedToken) {
|
|
132
|
-
throw new Error('
|
|
132
|
+
throw new Error('Session expired or invalid. Please re-authenticate:\n' +
|
|
133
|
+
' Login: npm i -g @microwiseai/cli-auth && ist auth login\n' +
|
|
133
134
|
' Refresh: snapshot license refresh');
|
|
134
135
|
}
|
|
135
136
|
else {
|
|
136
|
-
throw new Error('
|
|
137
|
-
'
|
|
137
|
+
throw new Error('Authentication required. Please log in or activate a license:\n' +
|
|
138
|
+
' Login: npm i -g @microwiseai/cli-auth && ist auth login\n' +
|
|
138
139
|
' License: snapshot license activate <KEY>');
|
|
139
140
|
}
|
|
140
141
|
}
|
|
141
142
|
if (response.status === 403) {
|
|
142
|
-
throw new Error('Access denied
|
|
143
|
-
'
|
|
143
|
+
throw new Error('Access denied. Please check your authentication:\n' +
|
|
144
|
+
' Login: npm i -g @microwiseai/cli-auth && ist auth login\n' +
|
|
144
145
|
' License: snapshot license status');
|
|
145
146
|
}
|
|
146
147
|
if (response.status === 404) {
|
|
@@ -175,7 +176,8 @@ export async function fetchSnapshotFromRepo(snapshotSpec, authToken) {
|
|
|
175
176
|
export async function listSnapshotPackages(authToken) {
|
|
176
177
|
const resolvedToken = authToken || getLicenseKey() || getProxyAuthToken();
|
|
177
178
|
if (!resolvedToken) {
|
|
178
|
-
throw new Error('
|
|
179
|
+
throw new Error('Authentication required. Please log in or activate a license:\n' +
|
|
180
|
+
' Login: npm i -g @microwiseai/cli-auth && ist auth login\n' +
|
|
179
181
|
' License: snapshot license activate <KEY>');
|
|
180
182
|
}
|
|
181
183
|
// Try registry-proxy list endpoint (if available)
|
package/dist/lib/gitlab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/lib/gitlab.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/lib/gitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface Prerequisite {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
requiredBy: string[];
|
|
5
|
+
check: () => boolean;
|
|
6
|
+
install?: Record<string, string>;
|
|
7
|
+
guide?: string;
|
|
8
|
+
autoInstall: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface CheckResult {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
requiredBy: string[];
|
|
14
|
+
installed: boolean;
|
|
15
|
+
guide?: string;
|
|
16
|
+
installCommand?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Minimal snapshot prerequisites
|
|
20
|
+
*/
|
|
21
|
+
export declare const MINIMAL_PREREQUISITES: Prerequisite[];
|
|
22
|
+
/**
|
|
23
|
+
* Check all prerequisites and return results
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkPrerequisites(prerequisites?: Prerequisite[]): CheckResult[];
|
|
26
|
+
/**
|
|
27
|
+
* Install a single prerequisite
|
|
28
|
+
*/
|
|
29
|
+
export declare function installPrerequisite(result: CheckResult): {
|
|
30
|
+
success: boolean;
|
|
31
|
+
error?: string;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=prerequisites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerequisites.d.ts","sourceRoot":"","sources":["../../src/lib/prerequisites.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqCD;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAgD/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,GAAE,YAAY,EAA0B,GAAG,WAAW,EAAE,CAWvG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAU7F"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import { platform } from 'os';
|
|
3
|
+
import { isLoggedIn } from './config.js';
|
|
4
|
+
/**
|
|
5
|
+
* Get OS-specific platform key
|
|
6
|
+
*/
|
|
7
|
+
function getPlatformKey() {
|
|
8
|
+
const os = platform();
|
|
9
|
+
if (os === 'darwin')
|
|
10
|
+
return 'macos-brew';
|
|
11
|
+
if (os === 'linux') {
|
|
12
|
+
// Detect apt vs yum
|
|
13
|
+
try {
|
|
14
|
+
execSync('which apt-get', { stdio: 'ignore' });
|
|
15
|
+
return 'linux-apt';
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
try {
|
|
19
|
+
execSync('which yum', { stdio: 'ignore' });
|
|
20
|
+
return 'linux-yum';
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return 'linux-unknown';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return 'unknown';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if a command exists
|
|
31
|
+
*/
|
|
32
|
+
function hasCommand(cmd) {
|
|
33
|
+
try {
|
|
34
|
+
execSync(`which ${cmd} 2>/dev/null`, { stdio: 'ignore' });
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Minimal snapshot prerequisites
|
|
43
|
+
*/
|
|
44
|
+
export const MINIMAL_PREREQUISITES = [
|
|
45
|
+
{
|
|
46
|
+
name: 'tmux',
|
|
47
|
+
description: 'Terminal multiplexer (session management)',
|
|
48
|
+
requiredBy: ['@ist/sesh'],
|
|
49
|
+
check: () => hasCommand('tmux'),
|
|
50
|
+
install: {
|
|
51
|
+
'linux-apt': 'sudo apt-get update -qq && sudo apt-get install -y tmux',
|
|
52
|
+
'linux-yum': 'sudo yum install -y tmux',
|
|
53
|
+
'macos-brew': 'brew install tmux',
|
|
54
|
+
},
|
|
55
|
+
autoInstall: true,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'IST CLI Auth',
|
|
59
|
+
description: 'Authentication CLI for IST services (ist auth login)',
|
|
60
|
+
requiredBy: ['snapshot install (authenticated)'],
|
|
61
|
+
check: () => hasCommand('ist'),
|
|
62
|
+
install: {
|
|
63
|
+
'linux-apt': 'npm install -g @microwiseai/cli-auth',
|
|
64
|
+
'linux-yum': 'npm install -g @microwiseai/cli-auth',
|
|
65
|
+
'macos-brew': 'npm install -g @microwiseai/cli-auth',
|
|
66
|
+
},
|
|
67
|
+
autoInstall: true,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Claude Code',
|
|
71
|
+
description: 'AI CLI for session creation',
|
|
72
|
+
requiredBy: ['@ist/sesh'],
|
|
73
|
+
check: () => hasCommand('claude'),
|
|
74
|
+
install: {
|
|
75
|
+
'linux-apt': 'npm install -g @anthropic-ai/claude-code',
|
|
76
|
+
'linux-yum': 'npm install -g @anthropic-ai/claude-code',
|
|
77
|
+
'macos-brew': 'npm install -g @anthropic-ai/claude-code',
|
|
78
|
+
},
|
|
79
|
+
autoInstall: true,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'IST Credentials',
|
|
83
|
+
description: 'Authentication for session isolation',
|
|
84
|
+
requiredBy: ['snapshot install (authenticated)'],
|
|
85
|
+
// SSOT: ~/.ist/credentials.json `.token` (IST JWT) via cli-auth v2, with
|
|
86
|
+
// local expiry pre-check. NOT the legacy extensionless ~/.ist/credentials
|
|
87
|
+
// file (that path predates the credential-schema convergence).
|
|
88
|
+
check: () => isLoggedIn(),
|
|
89
|
+
autoInstall: false,
|
|
90
|
+
guide: 'Run "ist auth login" to authenticate.',
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
/**
|
|
94
|
+
* Check all prerequisites and return results
|
|
95
|
+
*/
|
|
96
|
+
export function checkPrerequisites(prerequisites = MINIMAL_PREREQUISITES) {
|
|
97
|
+
const platformKey = getPlatformKey();
|
|
98
|
+
return prerequisites.map(prereq => ({
|
|
99
|
+
name: prereq.name,
|
|
100
|
+
description: prereq.description,
|
|
101
|
+
requiredBy: prereq.requiredBy,
|
|
102
|
+
installed: prereq.check(),
|
|
103
|
+
guide: prereq.guide,
|
|
104
|
+
installCommand: prereq.install?.[platformKey] || prereq.install?.['linux-apt'],
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Install a single prerequisite
|
|
109
|
+
*/
|
|
110
|
+
export function installPrerequisite(result) {
|
|
111
|
+
if (result.installed)
|
|
112
|
+
return { success: true };
|
|
113
|
+
if (!result.installCommand)
|
|
114
|
+
return { success: false, error: 'No install command available. ' + (result.guide || '') };
|
|
115
|
+
try {
|
|
116
|
+
execSync(result.installCommand, { stdio: 'inherit' });
|
|
117
|
+
return { success: true };
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
return { success: false, error: err.message };
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=prerequisites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerequisites.js","sourceRoot":"","sources":["../../src/lib/prerequisites.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microwiseai/snapshot",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "CLI for installing IST Snapshot packages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/lib.js",
|
|
@@ -31,8 +31,7 @@
|
|
|
31
31
|
"files": [
|
|
32
32
|
"dist",
|
|
33
33
|
"node_modules/@microwiseai",
|
|
34
|
-
"node_modules/@ist"
|
|
35
|
-
"node_modules/@gitdot"
|
|
34
|
+
"node_modules/@ist"
|
|
36
35
|
],
|
|
37
36
|
"keywords": [
|
|
38
37
|
"snapshot",
|
|
@@ -43,7 +42,6 @@
|
|
|
43
42
|
"author": "IST Team",
|
|
44
43
|
"license": "MIT",
|
|
45
44
|
"dependencies": {
|
|
46
|
-
"@gitdot/clone-lib": "^0.2.0",
|
|
47
45
|
"@microwiseai/import-telemetry": "^0.1.0",
|
|
48
46
|
"@microwiseai/license": "^0.1.4",
|
|
49
47
|
"@microwiseai/skit": "^0.1.19",
|
|
@@ -66,7 +64,6 @@
|
|
|
66
64
|
"node": ">=18.0.0"
|
|
67
65
|
},
|
|
68
66
|
"bundleDependencies": [
|
|
69
|
-
"@gitdot/clone-lib",
|
|
70
67
|
"@microwiseai/import-telemetry",
|
|
71
68
|
"@microwiseai/license",
|
|
72
69
|
"@microwiseai/skit",
|
|
@@ -74,14 +71,6 @@
|
|
|
74
71
|
"@microwiseai/snapshot-parallel"
|
|
75
72
|
],
|
|
76
73
|
"glpkg": {
|
|
77
|
-
"
|
|
78
|
-
"microwiseai": [
|
|
79
|
-
"@gitdot/clone-lib"
|
|
80
|
-
]
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
"repository": {
|
|
84
|
-
"type": "git",
|
|
85
|
-
"url": "git+https://gitlab.com/microwiseai/snapshot.git"
|
|
74
|
+
"group": "microwiseai"
|
|
86
75
|
}
|
|
87
76
|
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `snapshot clone-all` — clone the full SOURCE closure a snapshot declares.
|
|
3
|
-
*
|
|
4
|
-
* Thin adapter over the published, typed @gitdot/clone-lib@0.2.0: it loads
|
|
5
|
-
* snapshot.json (the install set + registry scope→group), resolves it to a
|
|
6
|
-
* resolved-lock (S2), writes snapshot.lock.json, and clones the closure. All
|
|
7
|
-
* real logic — name→projectId resolution, coordinate/visibility/commitSha
|
|
8
|
-
* pinning, closure cloning, structured reporting — lives in the library.
|
|
9
|
-
*
|
|
10
|
-
* The GitLab token is the caller's own (getGitlabToken → glpkg token /
|
|
11
|
-
* GITLAB_TOKEN), decoupled from the install proxy: cloning is plain git, judged
|
|
12
|
-
* by repo visibility + caller access.
|
|
13
|
-
*/
|
|
14
|
-
export interface CloneAllOptions {
|
|
15
|
-
manifest?: string;
|
|
16
|
-
mode?: string;
|
|
17
|
-
dest?: string;
|
|
18
|
-
json?: boolean;
|
|
19
|
-
}
|
|
20
|
-
export declare function cloneAllCommand(options?: CloneAllOptions): Promise<void>;
|
|
21
|
-
//# sourceMappingURL=clone-all.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone-all.d.ts","sourceRoot":"","sources":["../../src/commands/clone-all.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DlF"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { readFileSync, mkdirSync } from 'fs';
|
|
3
|
-
import { join } from 'path';
|
|
4
|
-
import { resolveFromManifest, cloneFromLock, writeLock, createGitLabApi } from '@gitdot/clone-lib';
|
|
5
|
-
import { getGitlabToken } from '../lib/config.js';
|
|
6
|
-
export async function cloneAllCommand(options = {}) {
|
|
7
|
-
const manifestPath = options.manifest || 'snapshot.json';
|
|
8
|
-
const mode = options.mode === 'pinned' ? 'pinned' : 'head';
|
|
9
|
-
const dest = options.dest || process.cwd();
|
|
10
|
-
const token = getGitlabToken();
|
|
11
|
-
if (!token) {
|
|
12
|
-
console.error(chalk.red('Error: no GitLab token. Set GITLAB_TOKEN or configure glpkg (glpkg config save <token>).'));
|
|
13
|
-
process.exit(1);
|
|
14
|
-
}
|
|
15
|
-
let manifest;
|
|
16
|
-
try {
|
|
17
|
-
manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
console.error(chalk.red(`Error: could not read manifest "${manifestPath}": ${err.message}`));
|
|
21
|
-
process.exit(1);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const registry = manifest.registry || {};
|
|
25
|
-
const subset = manifest.name;
|
|
26
|
-
const api = createGitLabApi({ token, host: 'gitlab.com' });
|
|
27
|
-
const { lock, warnings } = await resolveFromManifest(manifest, {
|
|
28
|
-
api,
|
|
29
|
-
scopes: Object.keys(registry),
|
|
30
|
-
subset,
|
|
31
|
-
});
|
|
32
|
-
mkdirSync(dest, { recursive: true });
|
|
33
|
-
const lockPath = join(dest, 'snapshot.lock.json');
|
|
34
|
-
writeLock(lockPath, lock);
|
|
35
|
-
const report = await cloneFromLock(lockPath, { mode, dest });
|
|
36
|
-
if (options.json) {
|
|
37
|
-
// --json is the primary contract: emit the structured report verbatim.
|
|
38
|
-
console.log(JSON.stringify({ report, lock: lockPath, warnings }, null, 2));
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
console.log(chalk.blue.bold('snapshot clone-all'));
|
|
42
|
-
console.log(chalk.gray(`manifest: ${manifestPath} | mode: ${mode} | dest: ${dest}`));
|
|
43
|
-
console.log(chalk.gray(`lock: ${lockPath}`));
|
|
44
|
-
console.log(`cloned ${chalk.green(report.cloned.length)} | ` +
|
|
45
|
-
`skipped ${report.skipped.length} | ` +
|
|
46
|
-
`no-access ${report['skipped-no-access'].length} | ` +
|
|
47
|
-
`not-found ${report['not-found'].length} | ` +
|
|
48
|
-
`failed ${chalk.red(report.failed.length)}`);
|
|
49
|
-
console.log(chalk.gray(`closureSize ${report.closureSize} | credentialsNeeded ${report.credentialsNeeded}`));
|
|
50
|
-
for (const w of warnings)
|
|
51
|
-
console.log(chalk.yellow(`⚠ ${w}`));
|
|
52
|
-
}
|
|
53
|
-
if (report.failed.length > 0 || report['not-found'].length > 0) {
|
|
54
|
-
process.exitCode = 1;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=clone-all.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone-all.js","sourceRoot":"","sources":["../../src/commands/clone-all.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# @gitdot/clone-lib
|
|
2
|
-
|
|
3
|
-
Shared **resolved-lock** library per `glpkg-workspace/RESOLVED-LOCK-SPEC.md`:
|
|
4
|
-
resolve a distribution's install closure into a resolved-lock (S2), then clone
|
|
5
|
-
that closure (S3). One schema, two resolvers, one cloner. **Dependency-free.**
|
|
6
|
-
|
|
7
|
-
> Prototype status: this lives in `gitdot-bridge-pilot/clone-lib-proto/` in a
|
|
8
|
-
> **publishable shape** (name, `exports`, `files`). Real placement under
|
|
9
|
-
> `projects/gitdot` and glpkg publish are **separate gates** — not done here.
|
|
10
|
-
|
|
11
|
-
## What it does
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
package-lock.json ─(B1 resolveLock)─┐
|
|
15
|
-
├─► resolved-lock (S2) ─(cloneFromLock, S3)─► cloned closure + CloneReport
|
|
16
|
-
snapshot.json ─(B2 resolveFromManifest)─┘
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
- **B1 `resolveLock`** — from an installed project's `package-lock.json` (the flat
|
|
20
|
-
closure is already in its `packages` map). projectId comes from each `resolved`
|
|
21
|
-
tarball URL.
|
|
22
|
-
- **B2 `resolveFromManifest`** — from a `snapshot.json`-like manifest (`install`
|
|
23
|
-
set + `registry` scope→group). projectId comes from the GitLab npm **packument**.
|
|
24
|
-
- Both emit the **same** resolved-lock schema; only `source.derivedFrom` differs
|
|
25
|
-
(`package-lock.json` vs `manifest`).
|
|
26
|
-
- **`cloneFromLock`** — clones the closure the lock declares (`pinned`/`head`),
|
|
27
|
-
proxy-independent auth, structured report.
|
|
28
|
-
|
|
29
|
-
## Shared member core (B1/B2 common)
|
|
30
|
-
|
|
31
|
-
`resolve/member.js` → `resolveMember({ npmName, version, projectId, api, ... })`
|
|
32
|
-
is the **single** place that turns "npm name + version + projectId" into a fully
|
|
33
|
-
resolved member: repository-field read (path-1, `manifest-repository`), else
|
|
34
|
-
projectId→GitLab-API coordinate (path-2, `gitlab-api`), plus visibility and
|
|
35
|
-
tag→sha commit pin. B1 and B2 differ **only** in how they discover the package
|
|
36
|
-
set + projectId; everything downstream is this one function — the GAP-1/GAP-2
|
|
37
|
-
logic is never duplicated.
|
|
38
|
-
|
|
39
|
-
## API
|
|
40
|
-
|
|
41
|
-
```js
|
|
42
|
-
const { resolveLock, resolveFromManifest, cloneFromLock, loadLock, writeLock } = require('@gitdot/clone-lib');
|
|
43
|
-
|
|
44
|
-
// B1
|
|
45
|
-
const { lock } = await resolveLock({ packageLockPath, subset, scopes, api });
|
|
46
|
-
|
|
47
|
-
// B2
|
|
48
|
-
const { lock } = await resolveFromManifest(snapshotJson, { scopes, api, subset });
|
|
49
|
-
|
|
50
|
-
// persist (deterministic 2-space + newline) / read (filename-agnostic)
|
|
51
|
-
writeLock('snapshot.lock.json', lock);
|
|
52
|
-
const same = loadLock('snapshot.lock.json');
|
|
53
|
-
|
|
54
|
-
// clone the closure
|
|
55
|
-
const report = await cloneFromLock('snapshot.lock.json', { mode: 'pinned', dest });
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
`api` is a GitLab client — `createGitLabApi({ token, host })` (real, Node https)
|
|
59
|
-
or any object with `getProject` / `getTags` / `getPackument` (inject a fake in tests).
|
|
60
|
-
|
|
61
|
-
### Package entry points (`exports`)
|
|
62
|
-
|
|
63
|
-
| specifier | module |
|
|
64
|
-
|---|---|
|
|
65
|
-
| `@gitdot/clone-lib` | full surface (resolve + clone + lock I/O) |
|
|
66
|
-
| `@gitdot/clone-lib/resolve` | just the resolvers + `createGitLabApi` |
|
|
67
|
-
|
|
68
|
-
## Sidecar schema (S2)
|
|
69
|
-
|
|
70
|
-
`skit.lock.json`, `snapshot.lock.json`, `glpkg.lock.json` are **instances of one
|
|
71
|
-
schema** — same shape, different `source` block. `loadLock(path)` reads any of
|
|
72
|
-
them **filename-agnostically** (the filename is a label, not a schema selector)
|
|
73
|
-
and validates `kind`/`lockVersion`/`members[]`; `writeLock(path, lock)` is the
|
|
74
|
-
deterministic writer used by the emitters.
|
|
75
|
-
|
|
76
|
-
## Clone semantics (S3)
|
|
77
|
-
|
|
78
|
-
- **`pinned`** — clone + `checkout` exact `commitSha`; absent/unreachable sha ⇒
|
|
79
|
-
`failed` (never a silent HEAD fallback).
|
|
80
|
-
- **`head`** — clone + stay on default-branch HEAD; records the actual HEAD sha.
|
|
81
|
-
- Flat closure iteration; clone-path `<dest>/workspace/<dotToTreePath(id)>`;
|
|
82
|
-
duplicate `cloneUrl` cloned once.
|
|
83
|
-
- Proxy-independent auth: public → no creds; private+access → cloned;
|
|
84
|
-
**private+no-access → `skipped-no-access` (expected, not an error)**;
|
|
85
|
-
`credentialsNeeded` pre-flight counts private members.
|
|
86
|
-
- Deterministic + idempotent (already at target sha ⇒ `skipped`); every member
|
|
87
|
-
lands in exactly one bucket.
|
|
88
|
-
|
|
89
|
-
## CLI (`--json` first, no TUI)
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
gitdot-resolve resolve --package-lock core/package-lock.json --subset snap --token <t> --out snapshot.lock.json
|
|
93
|
-
gitdot-resolve clone --lock snapshot.lock.json --mode pinned --dest . --json
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Layout
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
src/index.js package hub (public surface)
|
|
100
|
-
src/lock.js sidecar schema: loadLock / writeLock / validateLock
|
|
101
|
-
src/clone.js cloneFromLock (S3)
|
|
102
|
-
src/dotpath.js dotToTreePath (pure id→path)
|
|
103
|
-
src/git.js real git runner (only shell-out) + error classifier
|
|
104
|
-
resolve/member.js SHARED member core (B1+B2)
|
|
105
|
-
resolve/resolve.js B1 resolveLock (package-lock)
|
|
106
|
-
resolve/manifest.js B2 resolveFromManifest (snapshot.json)
|
|
107
|
-
resolve/gitlab.js read-only GitLab client (getProject/getTags/getPackument)
|
|
108
|
-
bin/gitdot-resolve.js CLI (resolve|clone)
|
|
109
|
-
test/ unit tests (fake git + fake API, DI) + real-git integration
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Run
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
node --test # full suite
|
|
116
|
-
node examples/demo.js # pinned + head sample reports
|
|
117
|
-
```
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* gitdot-resolve — thin CLI mirror of the library. Two verbs:
|
|
4
|
-
* resolve (S4) — build a resolved-lock from an installed package-lock.json
|
|
5
|
-
* clone (S3) — clone the closure a resolved-lock declares
|
|
6
|
-
* --json is the primary (and only) output contract — no TUI, no decoration.
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=gitdot-resolve.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitdot-resolve.d.ts","sourceRoot":"","sources":["../../src/bin/gitdot-resolve.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
/**
|
|
4
|
-
* gitdot-resolve — thin CLI mirror of the library. Two verbs:
|
|
5
|
-
* resolve (S4) — build a resolved-lock from an installed package-lock.json
|
|
6
|
-
* clone (S3) — clone the closure a resolved-lock declares
|
|
7
|
-
* --json is the primary (and only) output contract — no TUI, no decoration.
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
-
var ownKeys = function(o) {
|
|
27
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
-
var ar = [];
|
|
29
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
-
return ar;
|
|
31
|
-
};
|
|
32
|
-
return ownKeys(o);
|
|
33
|
-
};
|
|
34
|
-
return function (mod) {
|
|
35
|
-
if (mod && mod.__esModule) return mod;
|
|
36
|
-
var result = {};
|
|
37
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
-
__setModuleDefault(result, mod);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
})();
|
|
42
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
const fs = __importStar(require("fs"));
|
|
44
|
-
const clone_1 = require("../clone");
|
|
45
|
-
const index_1 = require("../resolve/index");
|
|
46
|
-
function parseArgs(argv) {
|
|
47
|
-
const args = { mode: 'pinned', dest: process.cwd(), json: false };
|
|
48
|
-
for (let i = 0; i < argv.length; i++) {
|
|
49
|
-
switch (argv[i]) {
|
|
50
|
-
case '--lock':
|
|
51
|
-
args.lock = argv[++i];
|
|
52
|
-
break;
|
|
53
|
-
case '--mode':
|
|
54
|
-
args.mode = argv[++i];
|
|
55
|
-
break;
|
|
56
|
-
case '--dest':
|
|
57
|
-
args.dest = argv[++i];
|
|
58
|
-
break;
|
|
59
|
-
case '--only':
|
|
60
|
-
args.only = argv[++i].split(',');
|
|
61
|
-
break;
|
|
62
|
-
case '--installer':
|
|
63
|
-
args.installer = argv[++i].split(',');
|
|
64
|
-
break;
|
|
65
|
-
case '--json':
|
|
66
|
-
args.json = true;
|
|
67
|
-
break;
|
|
68
|
-
default: break;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return args;
|
|
72
|
-
}
|
|
73
|
-
function parseResolveArgs(argv) {
|
|
74
|
-
const args = {};
|
|
75
|
-
for (let i = 0; i < argv.length; i++) {
|
|
76
|
-
switch (argv[i]) {
|
|
77
|
-
case '--package-lock':
|
|
78
|
-
args.packageLock = argv[++i];
|
|
79
|
-
break;
|
|
80
|
-
case '--node-modules':
|
|
81
|
-
args.nodeModules = argv[++i];
|
|
82
|
-
break;
|
|
83
|
-
case '--subset':
|
|
84
|
-
args.subset = argv[++i];
|
|
85
|
-
break;
|
|
86
|
-
case '--scopes':
|
|
87
|
-
args.scopes = argv[++i].split(',');
|
|
88
|
-
break;
|
|
89
|
-
case '--token':
|
|
90
|
-
args.token = argv[++i];
|
|
91
|
-
break;
|
|
92
|
-
case '--host':
|
|
93
|
-
args.host = argv[++i];
|
|
94
|
-
break;
|
|
95
|
-
case '--out':
|
|
96
|
-
args.out = argv[++i];
|
|
97
|
-
break;
|
|
98
|
-
default: break;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return args;
|
|
102
|
-
}
|
|
103
|
-
async function runResolve(rest) {
|
|
104
|
-
const a = parseResolveArgs(rest);
|
|
105
|
-
if (!a.packageLock || !a.subset) {
|
|
106
|
-
process.stderr.write('usage: gitdot-resolve resolve --package-lock <file> --subset <name> [--node-modules <dir>] [--scopes @ist,@microwiseai] [--token <t>] [--host gitlab.com] [--out <file>]\n');
|
|
107
|
-
process.exit(2);
|
|
108
|
-
}
|
|
109
|
-
const api = (0, index_1.createGitLabApi)({ token: a.token || process.env.GLPKG_TOKEN, host: a.host || 'gitlab.com' });
|
|
110
|
-
const { lock, warnings } = await (0, index_1.resolveLock)({
|
|
111
|
-
packageLockPath: a.packageLock,
|
|
112
|
-
nodeModulesDir: a.nodeModules,
|
|
113
|
-
subset: a.subset,
|
|
114
|
-
scopes: a.scopes,
|
|
115
|
-
api,
|
|
116
|
-
warn: (m) => process.stderr.write(`WARN: ${m}\n`),
|
|
117
|
-
});
|
|
118
|
-
const out = JSON.stringify(lock, null, 2) + '\n';
|
|
119
|
-
if (a.out)
|
|
120
|
-
fs.writeFileSync(a.out, out);
|
|
121
|
-
else
|
|
122
|
-
process.stdout.write(out);
|
|
123
|
-
process.stderr.write(`resolved ${lock.members.length} members, ${lock.edges.length} edges, ${warnings.length} warnings\n`);
|
|
124
|
-
process.exit(0);
|
|
125
|
-
}
|
|
126
|
-
async function main() {
|
|
127
|
-
const [verb, ...rest] = process.argv.slice(2);
|
|
128
|
-
if (verb === 'resolve')
|
|
129
|
-
return runResolve(rest);
|
|
130
|
-
if (verb !== 'clone') {
|
|
131
|
-
process.stderr.write('usage: gitdot-resolve <resolve|clone> ...\n');
|
|
132
|
-
process.exit(2);
|
|
133
|
-
}
|
|
134
|
-
const args = parseArgs(rest);
|
|
135
|
-
if (!args.lock) {
|
|
136
|
-
process.stderr.write('error: --lock <file> is required\n');
|
|
137
|
-
process.exit(2);
|
|
138
|
-
}
|
|
139
|
-
const report = await (0, clone_1.cloneFromLock)(args.lock, {
|
|
140
|
-
mode: args.mode,
|
|
141
|
-
dest: args.dest,
|
|
142
|
-
only: args.only,
|
|
143
|
-
installer: args.installer,
|
|
144
|
-
});
|
|
145
|
-
// --json is the primary contract; even without --json we emit JSON (no TUI).
|
|
146
|
-
process.stdout.write(JSON.stringify(report, null, 2) + '\n');
|
|
147
|
-
const hardFailures = report.failed.length + report['not-found'].length;
|
|
148
|
-
process.exit(hardFailures > 0 ? 1 : 0);
|
|
149
|
-
}
|
|
150
|
-
main().catch((e) => {
|
|
151
|
-
process.stderr.write(`error: ${e.message}\n`);
|
|
152
|
-
process.exit(1);
|
|
153
|
-
});
|
|
154
|
-
//# sourceMappingURL=gitdot-resolve.js.map
|