@microwiseai/snapshot 0.3.5
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/README.md +92 -0
- package/dist/commands/current.d.ts +2 -0
- package/dist/commands/current.d.ts.map +1 -0
- package/dist/commands/current.js +32 -0
- package/dist/commands/current.js.map +1 -0
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +211 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +45 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/publish.d.ts +11 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +111 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +4 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +27 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/gitlab.d.ts +57 -0
- package/dist/lib/gitlab.d.ts.map +1 -0
- package/dist/lib/gitlab.js +268 -0
- package/dist/lib/gitlab.js.map +1 -0
- package/dist/lib/gitlab.test.d.ts +2 -0
- package/dist/lib/gitlab.test.d.ts.map +1 -0
- package/dist/lib/gitlab.test.js +63 -0
- package/dist/lib/gitlab.test.js.map +1 -0
- package/dist/lib/registry.d.ts +3 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +53 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/snapshot.d.ts +10 -0
- package/dist/lib/snapshot.d.ts.map +1 -0
- package/dist/lib/snapshot.js +25 -0
- package/dist/lib/snapshot.js.map +1 -0
- package/dist/lib/types.d.ts +24 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/package.json +45 -0
package/README.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# @microwiseai/snapshot
|
|
2
|
+
|
|
3
|
+
IST Snapshot Installer - CLI for installing packages from GitLab snapshot repos.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @microwiseai/snapshot
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Requirements
|
|
12
|
+
|
|
13
|
+
- Node.js >= 18.0.0
|
|
14
|
+
- GitLab API token (set as `GITLAB_TOKEN` environment variable)
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
### List available snapshots
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
snapshot list
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Install a snapshot
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Install by name
|
|
28
|
+
snapshot install @ist/minimal
|
|
29
|
+
|
|
30
|
+
# Install specific version
|
|
31
|
+
snapshot install @ist/minimal@0.2.1
|
|
32
|
+
|
|
33
|
+
# Short form (defaults to @ist scope)
|
|
34
|
+
snapshot install minimal
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Show current snapshot
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
snapshot current
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Publish a snapshot
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Publish current directory's snapshot.json
|
|
47
|
+
snapshot publish
|
|
48
|
+
|
|
49
|
+
# Bump version before publishing
|
|
50
|
+
snapshot publish --bump patch # 0.1.0 -> 0.1.1
|
|
51
|
+
snapshot publish --bump minor # 0.1.0 -> 0.2.0
|
|
52
|
+
snapshot publish --bump major # 0.1.0 -> 1.0.0
|
|
53
|
+
|
|
54
|
+
# Dry run (show what would be published)
|
|
55
|
+
snapshot publish --dry-run
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Configuration
|
|
59
|
+
|
|
60
|
+
Set your GitLab token:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
export GITLAB_TOKEN=your_gitlab_token
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Snapshot Format
|
|
67
|
+
|
|
68
|
+
Snapshots are stored in GitLab repos with the naming convention:
|
|
69
|
+
- `@ist/minimal` → `snapshot.ist.minimal`
|
|
70
|
+
- `@ist/core` → `snapshot.ist.core`
|
|
71
|
+
|
|
72
|
+
Each snapshot repo contains a `snapshot.json` with package definitions.
|
|
73
|
+
|
|
74
|
+
## Development
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Install dependencies
|
|
78
|
+
npm install
|
|
79
|
+
|
|
80
|
+
# Build
|
|
81
|
+
npm run build
|
|
82
|
+
|
|
83
|
+
# Run tests
|
|
84
|
+
npm test
|
|
85
|
+
|
|
86
|
+
# Lint
|
|
87
|
+
npm run lint
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"current.d.ts","sourceRoot":"","sources":["../../src/commands/current.ts"],"names":[],"mappings":"AAGA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAiCpD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getCurrentSnapshot } from '../lib/snapshot.js';
|
|
3
|
+
export async function currentCommand() {
|
|
4
|
+
console.log(chalk.blue.bold(`
|
|
5
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
6
|
+
║ Current Snapshot ║
|
|
7
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
8
|
+
`));
|
|
9
|
+
const current = getCurrentSnapshot();
|
|
10
|
+
if (!current) {
|
|
11
|
+
console.log(chalk.yellow('No snapshot currently installed.'));
|
|
12
|
+
console.log(chalk.gray('Use: snapshot install <name> to install a snapshot'));
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
console.log(chalk.cyan(`Snapshot: ${current.name} v${current.version}`));
|
|
16
|
+
console.log(chalk.gray(`Installed: ${new Date(current.installedAt).toLocaleString()}`));
|
|
17
|
+
console.log('');
|
|
18
|
+
if (current.packages && current.packages.length > 0) {
|
|
19
|
+
console.log(chalk.gray('Installed packages:'));
|
|
20
|
+
for (const pkg of current.packages) {
|
|
21
|
+
console.log(chalk.green(` ✓ ${pkg}`));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (current.skits && current.skits.length > 0) {
|
|
25
|
+
console.log('');
|
|
26
|
+
console.log(chalk.gray('Installed skits:'));
|
|
27
|
+
for (const skit of current.skits) {
|
|
28
|
+
console.log(chalk.green(` ✓ ${skit}`));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=current.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"current.js","sourceRoot":"","sources":["../../src/commands/current.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;CAI7B,CAAC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IAErC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAuIA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GhE"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import { fetchSnapshotFromRepo, snapshotNameToRepoName } from '../lib/gitlab.js';
|
|
4
|
+
import { saveCurrentSnapshot } from '../lib/snapshot.js';
|
|
5
|
+
import { getGitlabToken } from '../lib/config.js';
|
|
6
|
+
async function installSnapshot(snapshot, depth = 0) {
|
|
7
|
+
const indent = ' '.repeat(depth);
|
|
8
|
+
const result = {
|
|
9
|
+
packages: [],
|
|
10
|
+
skits: [],
|
|
11
|
+
failedPackages: [],
|
|
12
|
+
failedSkits: [],
|
|
13
|
+
};
|
|
14
|
+
// Handle extends - install base snapshot first
|
|
15
|
+
if (snapshot.extends) {
|
|
16
|
+
console.log('');
|
|
17
|
+
console.log(chalk.cyan(`${indent}► Extends: ${snapshot.extends}`));
|
|
18
|
+
try {
|
|
19
|
+
const baseSnapshot = await fetchSnapshotFromRepo(snapshot.extends);
|
|
20
|
+
console.log(chalk.gray(`${indent} Installing base snapshot...`));
|
|
21
|
+
const baseResult = await installSnapshot(baseSnapshot, depth + 1);
|
|
22
|
+
result.packages.push(...baseResult.packages);
|
|
23
|
+
result.skits.push(...baseResult.skits);
|
|
24
|
+
result.failedPackages.push(...baseResult.failedPackages);
|
|
25
|
+
result.failedSkits.push(...baseResult.failedSkits);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
29
|
+
console.log(chalk.red(`${indent} Failed to load base: ${errMsg}`));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Configure scopes from registry info
|
|
33
|
+
if (snapshot.registry) {
|
|
34
|
+
for (const [scope, config] of Object.entries(snapshot.registry)) {
|
|
35
|
+
const scopeName = scope.startsWith('@') ? scope : `@${scope}`;
|
|
36
|
+
try {
|
|
37
|
+
execSync(`gitlab-config scope set ${scopeName} ${config.group}`, {
|
|
38
|
+
stdio: 'pipe',
|
|
39
|
+
encoding: 'utf-8',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Ignore scope config errors
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const packages = snapshot.packages || {};
|
|
48
|
+
const skits = snapshot.skits || {};
|
|
49
|
+
const packageEntries = Object.entries(packages);
|
|
50
|
+
const skitEntries = Object.entries(skits);
|
|
51
|
+
// Install npm packages
|
|
52
|
+
if (packageEntries.length > 0) {
|
|
53
|
+
const total = packageEntries.length;
|
|
54
|
+
console.log('');
|
|
55
|
+
console.log(chalk.yellow(`${indent}=== ${snapshot.name}: ${total} packages ===`));
|
|
56
|
+
for (let i = 0; i < packageEntries.length; i++) {
|
|
57
|
+
const [name, version] = packageEntries[i];
|
|
58
|
+
const pkgSpec = `${name}@${version}`;
|
|
59
|
+
const progress = `[${i + 1}/${total}]`;
|
|
60
|
+
process.stdout.write(`${indent}${chalk.blue(progress)} ${pkgSpec}...`);
|
|
61
|
+
try {
|
|
62
|
+
execSync(`gitlab-install add -g ${pkgSpec}`, {
|
|
63
|
+
stdio: 'pipe',
|
|
64
|
+
encoding: 'utf-8',
|
|
65
|
+
});
|
|
66
|
+
console.log(chalk.green(' ✓'));
|
|
67
|
+
result.packages.push(pkgSpec);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
console.log(chalk.red(' ✗'));
|
|
71
|
+
result.failedPackages.push(pkgSpec);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Install skits
|
|
76
|
+
if (skitEntries.length > 0) {
|
|
77
|
+
const total = skitEntries.length;
|
|
78
|
+
console.log('');
|
|
79
|
+
console.log(chalk.yellow(`${indent}=== ${snapshot.name}: ${total} skits ===`));
|
|
80
|
+
// Check if skit command exists
|
|
81
|
+
let skitAvailable = true;
|
|
82
|
+
try {
|
|
83
|
+
execSync('which skit', { stdio: 'pipe' });
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
console.log(chalk.red(`${indent}skit command not found.`));
|
|
87
|
+
skitAvailable = false;
|
|
88
|
+
result.failedSkits.push(...skitEntries.map(([n, v]) => `${n}@${v}`));
|
|
89
|
+
}
|
|
90
|
+
if (skitAvailable) {
|
|
91
|
+
for (let i = 0; i < skitEntries.length; i++) {
|
|
92
|
+
const [name, version] = skitEntries[i];
|
|
93
|
+
const skitSpec = `${name}@${version}`;
|
|
94
|
+
const progress = `[${i + 1}/${total}]`;
|
|
95
|
+
process.stdout.write(`${indent}${chalk.blue(progress)} ${skitSpec}...`);
|
|
96
|
+
try {
|
|
97
|
+
execSync(`skit add ${skitSpec}`, {
|
|
98
|
+
stdio: 'pipe',
|
|
99
|
+
encoding: 'utf-8',
|
|
100
|
+
});
|
|
101
|
+
console.log(chalk.green(' ✓'));
|
|
102
|
+
result.skits.push(skitSpec);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
console.log(chalk.red(' ✗'));
|
|
106
|
+
result.failedSkits.push(skitSpec);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
export async function installCommand(name) {
|
|
114
|
+
console.log(chalk.blue.bold(`
|
|
115
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
116
|
+
║ Snapshot Installer ║
|
|
117
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
118
|
+
`));
|
|
119
|
+
// Validate name
|
|
120
|
+
let repoName;
|
|
121
|
+
try {
|
|
122
|
+
repoName = snapshotNameToRepoName(name);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
126
|
+
console.log(chalk.red(`Error: ${errMsg}`));
|
|
127
|
+
console.log('');
|
|
128
|
+
console.log(chalk.gray('Examples:'));
|
|
129
|
+
console.log(chalk.cyan(' snapshot install @ist/minimal'));
|
|
130
|
+
console.log(chalk.cyan(' snapshot install @ist/full'));
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
console.log(chalk.gray(`Snapshot: ${name}`));
|
|
134
|
+
console.log(chalk.gray(`Repo: ${repoName}`));
|
|
135
|
+
// Check GitLab token
|
|
136
|
+
const token = getGitlabToken();
|
|
137
|
+
if (!token) {
|
|
138
|
+
console.log(chalk.red('Error: GitLab token not found.'));
|
|
139
|
+
console.log(chalk.yellow('Run: gitlab-config save <token>'));
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
console.log(chalk.green('✓') + ' GitLab token found');
|
|
143
|
+
// Check gitlab-install (cross-platform)
|
|
144
|
+
try {
|
|
145
|
+
const whichCmd = process.platform === 'win32' ? 'where gitlab-install' : 'which gitlab-install';
|
|
146
|
+
execSync(whichCmd, { stdio: 'pipe' });
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
console.log(chalk.red('Error: gitlab-install not found.'));
|
|
150
|
+
console.log(chalk.yellow('Install: npm install -g @glpkg/installer'));
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
console.log(chalk.green('✓') + ' gitlab-install available');
|
|
154
|
+
// Fetch snapshot
|
|
155
|
+
console.log(chalk.gray('Fetching snapshot from GitLab...'));
|
|
156
|
+
let snapshot;
|
|
157
|
+
try {
|
|
158
|
+
snapshot = await fetchSnapshotFromRepo(name);
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
162
|
+
console.log(chalk.red(`Error: ${errMsg}`));
|
|
163
|
+
console.log(chalk.yellow('Check available snapshots: snapshot list'));
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
console.log(chalk.green('✓') + ` Snapshot: ${snapshot.name} v${snapshot.version}`);
|
|
167
|
+
if (snapshot.description) {
|
|
168
|
+
console.log(chalk.gray(` ${snapshot.description}`));
|
|
169
|
+
}
|
|
170
|
+
// Install (handles extends recursively)
|
|
171
|
+
const result = await installSnapshot(snapshot, 0);
|
|
172
|
+
// Summary
|
|
173
|
+
console.log('');
|
|
174
|
+
console.log(chalk.yellow('═══════════════════════════════════'));
|
|
175
|
+
console.log(chalk.yellow(' Final Summary '));
|
|
176
|
+
console.log(chalk.yellow('═══════════════════════════════════'));
|
|
177
|
+
const totalPkgs = result.packages.length + result.failedPackages.length;
|
|
178
|
+
const totalSkits = result.skits.length + result.failedSkits.length;
|
|
179
|
+
if (totalPkgs > 0) {
|
|
180
|
+
console.log(`Packages: ${chalk.green(result.packages.length)}/${totalPkgs}`);
|
|
181
|
+
}
|
|
182
|
+
if (totalSkits > 0) {
|
|
183
|
+
console.log(`Skits: ${chalk.green(result.skits.length)}/${totalSkits}`);
|
|
184
|
+
}
|
|
185
|
+
if (result.failedPackages.length > 0 || result.failedSkits.length > 0) {
|
|
186
|
+
console.log('');
|
|
187
|
+
console.log(chalk.red('Failed:'));
|
|
188
|
+
for (const pkg of result.failedPackages) {
|
|
189
|
+
console.log(chalk.red(` ✗ ${pkg}`));
|
|
190
|
+
}
|
|
191
|
+
for (const skit of result.failedSkits) {
|
|
192
|
+
console.log(chalk.red(` ✗ ${skit}`));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Save
|
|
196
|
+
if (result.packages.length > 0 || result.skits.length > 0) {
|
|
197
|
+
saveCurrentSnapshot({
|
|
198
|
+
name: snapshot.name,
|
|
199
|
+
version: snapshot.version,
|
|
200
|
+
installedAt: new Date().toISOString(),
|
|
201
|
+
packages: result.packages,
|
|
202
|
+
skits: result.skits,
|
|
203
|
+
});
|
|
204
|
+
console.log('');
|
|
205
|
+
console.log(chalk.green('✓') + ' Snapshot info saved');
|
|
206
|
+
}
|
|
207
|
+
if (result.failedPackages.length > 0 || result.failedSkits.length > 0) {
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA+CjD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { listSnapshotPackages } from '../lib/gitlab.js';
|
|
3
|
+
export async function listCommand() {
|
|
4
|
+
console.log(chalk.blue.bold(`
|
|
5
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
6
|
+
║ Available Snapshots ║
|
|
7
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
8
|
+
`));
|
|
9
|
+
console.log(chalk.gray('Querying GitLab registry...'));
|
|
10
|
+
console.log('');
|
|
11
|
+
try {
|
|
12
|
+
const packages = await listSnapshotPackages();
|
|
13
|
+
if (packages.length === 0) {
|
|
14
|
+
console.log(chalk.yellow('No snapshots found in registry.'));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// Group by name to show latest versions
|
|
18
|
+
const byName = new Map();
|
|
19
|
+
for (const pkg of packages) {
|
|
20
|
+
const versions = byName.get(pkg.name) || [];
|
|
21
|
+
versions.push(pkg.version);
|
|
22
|
+
byName.set(pkg.name, versions);
|
|
23
|
+
}
|
|
24
|
+
console.log(chalk.gray(`Found ${byName.size} snapshot(s):`));
|
|
25
|
+
console.log('');
|
|
26
|
+
for (const [name, versions] of byName) {
|
|
27
|
+
const latest = versions[0]; // First is latest (sorted by created_at desc)
|
|
28
|
+
console.log(chalk.cyan(` ${name}@${latest}`));
|
|
29
|
+
if (versions.length > 1) {
|
|
30
|
+
console.log(chalk.gray(` Other versions: ${versions.slice(1).join(', ')}`));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
console.log('');
|
|
34
|
+
console.log(chalk.gray('─'.repeat(50)));
|
|
35
|
+
console.log(chalk.gray('Install: snapshot install @scope/name[@version]'));
|
|
36
|
+
console.log(chalk.gray('Example: snapshot install @ist/minimal'));
|
|
37
|
+
console.log(chalk.gray(' snapshot install @ist/minimal@0.3.0'));
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
41
|
+
console.log(chalk.red(`Error: ${errMsg}`));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;CAI7B,CAAC,CAAC,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAE9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,wCAAwC;QACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,8CAA8C;YAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface PublishOptions {
|
|
2
|
+
bump?: string;
|
|
3
|
+
dryRun?: boolean;
|
|
4
|
+
verbose?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Publish command handler
|
|
8
|
+
*/
|
|
9
|
+
export declare function publishCommand(options: PublishOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAKA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4ED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C3E"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { access, readFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
/**
|
|
6
|
+
* Read and parse snapshot.json from current directory
|
|
7
|
+
*/
|
|
8
|
+
async function readSnapshotJson() {
|
|
9
|
+
const snapshotJsonPath = join(process.cwd(), 'snapshot.json');
|
|
10
|
+
try {
|
|
11
|
+
const content = await readFile(snapshotJsonPath, 'utf-8');
|
|
12
|
+
return JSON.parse(content);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
if (error.code === 'ENOENT') {
|
|
16
|
+
throw new Error('snapshot.json not found in current directory');
|
|
17
|
+
}
|
|
18
|
+
throw new Error(`Failed to read snapshot.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if snapshot.json exists in the current directory
|
|
23
|
+
*/
|
|
24
|
+
async function checkSnapshotJson() {
|
|
25
|
+
const snapshotJsonPath = join(process.cwd(), 'snapshot.json');
|
|
26
|
+
try {
|
|
27
|
+
await access(snapshotJsonPath);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new Error('snapshot.json not found in current directory');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Execute gitlab-publish with streaming output
|
|
35
|
+
*/
|
|
36
|
+
async function executePublish(options) {
|
|
37
|
+
const args = ['--generic', 'snapshot.json'];
|
|
38
|
+
if (options.bump) {
|
|
39
|
+
args.push('--bump', options.bump);
|
|
40
|
+
}
|
|
41
|
+
if (options.dryRun) {
|
|
42
|
+
args.push('--dry-run');
|
|
43
|
+
}
|
|
44
|
+
if (options.verbose) {
|
|
45
|
+
args.push('--verbose');
|
|
46
|
+
}
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const child = spawn('gitlab-publish', args, {
|
|
49
|
+
stdio: 'inherit',
|
|
50
|
+
shell: true,
|
|
51
|
+
});
|
|
52
|
+
child.on('error', (error) => {
|
|
53
|
+
reject(new Error(`Failed to execute gitlab-publish: ${error.message}`));
|
|
54
|
+
});
|
|
55
|
+
child.on('exit', (code) => {
|
|
56
|
+
if (code === 0) {
|
|
57
|
+
resolve();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
reject(new Error(`gitlab-publish exited with code ${code}`));
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Publish command handler
|
|
67
|
+
*/
|
|
68
|
+
export async function publishCommand(options) {
|
|
69
|
+
const { verbose = false, dryRun = false, bump } = options;
|
|
70
|
+
console.log();
|
|
71
|
+
console.log(chalk.cyan('Publishing snapshot package...'));
|
|
72
|
+
try {
|
|
73
|
+
if (verbose) {
|
|
74
|
+
console.log(chalk.dim(' Checking for snapshot.json...'));
|
|
75
|
+
}
|
|
76
|
+
await checkSnapshotJson();
|
|
77
|
+
const snapshotJson = await readSnapshotJson();
|
|
78
|
+
if (verbose) {
|
|
79
|
+
console.log(chalk.green(' ✓ Found snapshot.json'));
|
|
80
|
+
console.log(chalk.dim(` Name: ${snapshotJson.name}`));
|
|
81
|
+
console.log(chalk.dim(` Version: ${snapshotJson.version}`));
|
|
82
|
+
}
|
|
83
|
+
if (dryRun) {
|
|
84
|
+
console.log(chalk.yellow(' [dry-run] Would publish with options:'));
|
|
85
|
+
if (bump) {
|
|
86
|
+
console.log(chalk.dim(` --bump ${bump}`));
|
|
87
|
+
}
|
|
88
|
+
console.log(chalk.dim(' --generic snapshot.json'));
|
|
89
|
+
console.log();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (verbose) {
|
|
93
|
+
console.log(chalk.dim(` Running gitlab-publish...`));
|
|
94
|
+
if (bump) {
|
|
95
|
+
console.log(chalk.dim(` Bump type: ${bump}`));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
console.log();
|
|
99
|
+
await executePublish(options);
|
|
100
|
+
console.log();
|
|
101
|
+
console.log(chalk.green('✓ Snapshot published to GitLab!'));
|
|
102
|
+
console.log();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.error();
|
|
107
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
108
|
+
process.exitCode = 1;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { createRequire } from 'module';
|
|
5
|
+
import { installCommand } from './commands/install.js';
|
|
6
|
+
import { listCommand } from './commands/list.js';
|
|
7
|
+
import { currentCommand } from './commands/current.js';
|
|
8
|
+
import { publishCommand } from './commands/publish.js';
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
const pkg = require('../package.json');
|
|
11
|
+
const program = new Command();
|
|
12
|
+
program
|
|
13
|
+
.name('snapshot')
|
|
14
|
+
.description('IST Snapshot Installer - Install packages from GitLab snapshot repos')
|
|
15
|
+
.version(pkg.version);
|
|
16
|
+
program
|
|
17
|
+
.command('install <name>')
|
|
18
|
+
.description('Install packages from a snapshot (e.g., minimal, core, @ist/minimal)')
|
|
19
|
+
.action(async (name) => {
|
|
20
|
+
await installCommand(name);
|
|
21
|
+
});
|
|
22
|
+
program
|
|
23
|
+
.command('list')
|
|
24
|
+
.description('List available snapshots from GitLab')
|
|
25
|
+
.action(async () => {
|
|
26
|
+
await listCommand();
|
|
27
|
+
});
|
|
28
|
+
program
|
|
29
|
+
.command('current')
|
|
30
|
+
.description('Show currently installed snapshot')
|
|
31
|
+
.action(async () => {
|
|
32
|
+
await currentCommand();
|
|
33
|
+
});
|
|
34
|
+
program
|
|
35
|
+
.command('publish')
|
|
36
|
+
.description('Publish snapshot.json to GitLab registry')
|
|
37
|
+
.option('-b, --bump <type>', 'Bump version (patch, minor, major)')
|
|
38
|
+
.option('-d, --dry-run', 'Show what would be published without publishing')
|
|
39
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
40
|
+
.action(async (options) => {
|
|
41
|
+
await publishCommand(options);
|
|
42
|
+
});
|
|
43
|
+
// Show help if no command
|
|
44
|
+
if (process.argv.length === 2) {
|
|
45
|
+
console.log(chalk.blue.bold(`
|
|
46
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
47
|
+
║ IST Snapshot Installer ║
|
|
48
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
49
|
+
`));
|
|
50
|
+
console.log(chalk.gray('Usage:'));
|
|
51
|
+
console.log(chalk.cyan(' snapshot list') + chalk.gray(' # List available snapshots'));
|
|
52
|
+
console.log(chalk.cyan(' snapshot install @ist/minimal') + chalk.gray(' # Install @ist/minimal'));
|
|
53
|
+
console.log(chalk.cyan(' snapshot install @ist/core') + chalk.gray(' # Install @ist/core'));
|
|
54
|
+
console.log(chalk.cyan(' snapshot current') + chalk.gray(' # Show installed snapshot'));
|
|
55
|
+
console.log('');
|
|
56
|
+
console.log(chalk.gray('Snapshots are GitLab repos: snapshot.{scope}.{name}'));
|
|
57
|
+
console.log(chalk.gray('Example: @ist/minimal → snapshot.ist.minimal'));
|
|
58
|
+
console.log('');
|
|
59
|
+
program.help();
|
|
60
|
+
}
|
|
61
|
+
program.parse();
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,sEAAsE,CAAC;KACnF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;KAC1E,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEL,0BAA0B;AAC1B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;CAI7B,CAAC,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
|