@elaraai/e3-cli 0.0.2-beta.12 → 0.0.2-beta.14
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 +21 -9
- package/dist/src/cli.js +29 -14
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/auth.d.ts +21 -0
- package/dist/src/commands/auth.d.ts.map +1 -0
- package/dist/src/commands/auth.js +185 -0
- package/dist/src/commands/auth.js.map +1 -0
- package/dist/src/commands/get.d.ts.map +1 -1
- package/dist/src/commands/get.js +32 -14
- package/dist/src/commands/get.js.map +1 -1
- package/dist/src/commands/list.d.ts.map +1 -1
- package/dist/src/commands/list.js +47 -14
- package/dist/src/commands/list.js.map +1 -1
- package/dist/src/commands/logs.d.ts.map +1 -1
- package/dist/src/commands/logs.js +126 -54
- package/dist/src/commands/logs.js.map +1 -1
- package/dist/src/commands/package.d.ts.map +1 -1
- package/dist/src/commands/package.js +55 -18
- package/dist/src/commands/package.js.map +1 -1
- package/dist/src/commands/repo.d.ts +29 -0
- package/dist/src/commands/repo.d.ts.map +1 -0
- package/dist/src/commands/repo.js +231 -0
- package/dist/src/commands/repo.js.map +1 -0
- package/dist/src/commands/run.d.ts.map +1 -1
- package/dist/src/commands/run.js +4 -3
- package/dist/src/commands/run.js.map +1 -1
- package/dist/src/commands/set.d.ts.map +1 -1
- package/dist/src/commands/set.js +16 -5
- package/dist/src/commands/set.js.map +1 -1
- package/dist/src/commands/start.d.ts.map +1 -1
- package/dist/src/commands/start.js +166 -47
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/tree.d.ts.map +1 -1
- package/dist/src/commands/tree.js +110 -16
- package/dist/src/commands/tree.js.map +1 -1
- package/dist/src/commands/watch.d.ts.map +1 -1
- package/dist/src/commands/watch.js +8 -6
- package/dist/src/commands/watch.js.map +1 -1
- package/dist/src/commands/workspace.d.ts +4 -0
- package/dist/src/commands/workspace.d.ts.map +1 -1
- package/dist/src/commands/workspace.js +269 -29
- package/dist/src/commands/workspace.js.map +1 -1
- package/dist/src/credentials.d.ts +123 -0
- package/dist/src/credentials.d.ts.map +1 -0
- package/dist/src/credentials.js +213 -0
- package/dist/src/credentials.js.map +1 -0
- package/dist/src/utils.d.ts +48 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +58 -0
- package/dist/src/utils.js.map +1 -1
- package/package.json +6 -5
- package/dist/src/commands/gc.d.ts +0 -12
- package/dist/src/commands/gc.d.ts.map +0 -1
- package/dist/src/commands/gc.js +0 -44
- package/dist/src/commands/gc.js.map +0 -1
- package/dist/src/commands/init.d.ts +0 -9
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js +0 -33
- package/dist/src/commands/init.js.map +0 -1
- package/dist/src/commands/status.d.ts +0 -9
- package/dist/src/commands/status.d.ts.map +0 -1
- package/dist/src/commands/status.js +0 -157
- package/dist/src/commands/status.js.map +0 -1
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
* e3 logs . ws.taskName # Show logs for task's latest execution
|
|
11
11
|
* e3 logs . ws.taskName --follow # Follow log output
|
|
12
12
|
*/
|
|
13
|
-
import { workspaceListTasks, workspaceGetTaskHash, executionListForTask, executionReadLog, executionGet,
|
|
14
|
-
import {
|
|
13
|
+
import { workspaceListTasks, workspaceGetTaskHash, executionListForTask, executionReadLog, executionGet, executionFindCurrent, isProcessAlive, LocalStorage, } from '@elaraai/e3-core';
|
|
14
|
+
import { taskList as taskListRemote, taskExecutionList as taskExecutionListRemote, taskLogs as taskLogsRemote, } from '@elaraai/e3-api-client';
|
|
15
|
+
import { parseRepoLocation, formatError, exitError } from '../utils.js';
|
|
15
16
|
/**
|
|
16
17
|
* Format a hash for display (abbreviated).
|
|
17
18
|
*/
|
|
@@ -34,8 +35,8 @@ function parseTaskPath(pathSpec) {
|
|
|
34
35
|
/**
|
|
35
36
|
* List tasks in a workspace with their execution status.
|
|
36
37
|
*/
|
|
37
|
-
async function listWorkspaceTasks(repoPath, ws) {
|
|
38
|
-
const tasks = await workspaceListTasks(repoPath, ws);
|
|
38
|
+
async function listWorkspaceTasks(storage, repoPath, ws) {
|
|
39
|
+
const tasks = await workspaceListTasks(storage, repoPath, ws);
|
|
39
40
|
if (tasks.length === 0) {
|
|
40
41
|
console.log(`No tasks in workspace: ${ws}`);
|
|
41
42
|
return;
|
|
@@ -43,15 +44,15 @@ async function listWorkspaceTasks(repoPath, ws) {
|
|
|
43
44
|
console.log(`Tasks in workspace: ${ws}`);
|
|
44
45
|
console.log('');
|
|
45
46
|
for (const taskName of tasks) {
|
|
46
|
-
const taskHash = await workspaceGetTaskHash(repoPath, ws, taskName);
|
|
47
|
-
const executions = await executionListForTask(repoPath, taskHash);
|
|
47
|
+
const taskHash = await workspaceGetTaskHash(storage, repoPath, ws, taskName);
|
|
48
|
+
const executions = await executionListForTask(storage, repoPath, taskHash);
|
|
48
49
|
if (executions.length === 0) {
|
|
49
50
|
console.log(` ${taskName} (no executions)`);
|
|
50
51
|
}
|
|
51
52
|
else {
|
|
52
53
|
// Get status of the most recent execution
|
|
53
54
|
const latestInHash = executions[0];
|
|
54
|
-
const status = await executionGet(repoPath, taskHash, latestInHash);
|
|
55
|
+
const status = await executionGet(storage, repoPath, taskHash, latestInHash);
|
|
55
56
|
let state = status?.type ?? 'unknown';
|
|
56
57
|
// Check if running process is actually alive
|
|
57
58
|
if (status?.type === 'running') {
|
|
@@ -69,42 +70,13 @@ async function listWorkspaceTasks(repoPath, ws) {
|
|
|
69
70
|
console.log('');
|
|
70
71
|
console.log(`Use "e3 logs . ${ws}.<taskName>" to view logs.`);
|
|
71
72
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Find the inputs hash for the current workspace state of a task.
|
|
74
|
-
* This matches the execution that corresponds to the current input values.
|
|
75
|
-
*/
|
|
76
|
-
async function findCurrentExecution(repoPath, ws, taskName) {
|
|
77
|
-
const taskHash = await workspaceGetTaskHash(repoPath, ws, taskName);
|
|
78
|
-
const task = await workspaceGetTask(repoPath, ws, taskName);
|
|
79
|
-
// Get the current input hashes from the workspace
|
|
80
|
-
const currentInputHashes = [];
|
|
81
|
-
for (const inputPath of task.inputs) {
|
|
82
|
-
const { refType, hash } = await workspaceGetDatasetHash(repoPath, ws, inputPath);
|
|
83
|
-
if (refType !== 'value' || hash === null) {
|
|
84
|
-
// Input not assigned - can't find matching execution
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
currentInputHashes.push(hash);
|
|
88
|
-
}
|
|
89
|
-
const inHash = inputsHash(currentInputHashes);
|
|
90
|
-
// Check if this execution exists
|
|
91
|
-
const executions = await executionListForTask(repoPath, taskHash);
|
|
92
|
-
if (executions.includes(inHash)) {
|
|
93
|
-
return { taskHash, inHash };
|
|
94
|
-
}
|
|
95
|
-
// Fall back to the most recent execution if current inputs don't match
|
|
96
|
-
if (executions.length > 0) {
|
|
97
|
-
return { taskHash, inHash: executions[0] };
|
|
98
|
-
}
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
73
|
/**
|
|
102
74
|
* Show logs for a specific execution.
|
|
103
75
|
*/
|
|
104
|
-
async function showLogs(repoPath, taskHash, inHash, follow) {
|
|
76
|
+
async function showLogs(storage, repoPath, taskHash, inHash, follow) {
|
|
105
77
|
// Read stdout and stderr
|
|
106
|
-
const stdout = await executionReadLog(repoPath, taskHash, inHash, 'stdout');
|
|
107
|
-
const stderr = await executionReadLog(repoPath, taskHash, inHash, 'stderr');
|
|
78
|
+
const stdout = await executionReadLog(storage, repoPath, taskHash, inHash, 'stdout');
|
|
79
|
+
const stderr = await executionReadLog(storage, repoPath, taskHash, inHash, 'stderr');
|
|
108
80
|
if (stdout.totalSize === 0 && stderr.totalSize === 0) {
|
|
109
81
|
console.log('No log output.');
|
|
110
82
|
return;
|
|
@@ -128,10 +100,10 @@ async function showLogs(repoPath, taskHash, inHash, follow) {
|
|
|
128
100
|
console.log('[Following... press Ctrl+C to stop]');
|
|
129
101
|
const pollInterval = 500; // ms
|
|
130
102
|
const poll = async () => {
|
|
131
|
-
const newStdout = await executionReadLog(repoPath, taskHash, inHash, 'stdout', {
|
|
103
|
+
const newStdout = await executionReadLog(storage, repoPath, taskHash, inHash, 'stdout', {
|
|
132
104
|
offset: stdoutOffset,
|
|
133
105
|
});
|
|
134
|
-
const newStderr = await executionReadLog(repoPath, taskHash, inHash, 'stderr', {
|
|
106
|
+
const newStderr = await executionReadLog(storage, repoPath, taskHash, inHash, 'stderr', {
|
|
135
107
|
offset: stderrOffset,
|
|
136
108
|
});
|
|
137
109
|
if (newStdout.size > 0) {
|
|
@@ -156,31 +128,131 @@ async function showLogs(repoPath, taskHash, inHash, follow) {
|
|
|
156
128
|
});
|
|
157
129
|
}
|
|
158
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* List tasks in a workspace (remote).
|
|
133
|
+
*/
|
|
134
|
+
async function listWorkspaceTasksRemote(baseUrl, repo, ws, token) {
|
|
135
|
+
const tasks = await taskListRemote(baseUrl, repo, ws, { token });
|
|
136
|
+
if (tasks.length === 0) {
|
|
137
|
+
console.log(`No tasks in workspace: ${ws}`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
console.log(`Tasks in workspace: ${ws}`);
|
|
141
|
+
console.log('');
|
|
142
|
+
for (const task of tasks) {
|
|
143
|
+
const executions = await taskExecutionListRemote(baseUrl, repo, ws, task.name, { token });
|
|
144
|
+
if (executions.length === 0) {
|
|
145
|
+
console.log(` ${task.name} (no executions)`);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Get status of the most recent execution
|
|
149
|
+
const latest = executions[0];
|
|
150
|
+
const state = latest.status.type;
|
|
151
|
+
console.log(` ${task.name} [${state}] (${executions.length} execution(s))`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
console.log('');
|
|
155
|
+
console.log(`Use "e3 logs <repo> ${ws}.<taskName>" to view logs.`);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Show logs for a task (remote).
|
|
159
|
+
*/
|
|
160
|
+
async function showLogsRemote(baseUrl, repo, ws, taskName, token, follow) {
|
|
161
|
+
// Read stdout and stderr
|
|
162
|
+
const stdout = await taskLogsRemote(baseUrl, repo, ws, taskName, { stream: 'stdout' }, { token });
|
|
163
|
+
const stderr = await taskLogsRemote(baseUrl, repo, ws, taskName, { stream: 'stderr' }, { token });
|
|
164
|
+
if (Number(stdout.totalSize) === 0 && Number(stderr.totalSize) === 0) {
|
|
165
|
+
console.log('No log output.');
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (Number(stdout.totalSize) > 0) {
|
|
169
|
+
console.log('=== STDOUT ===');
|
|
170
|
+
console.log(stdout.data);
|
|
171
|
+
}
|
|
172
|
+
if (Number(stderr.totalSize) > 0) {
|
|
173
|
+
if (Number(stdout.totalSize) > 0) {
|
|
174
|
+
console.log('');
|
|
175
|
+
}
|
|
176
|
+
console.log('=== STDERR ===');
|
|
177
|
+
console.log(stderr.data);
|
|
178
|
+
}
|
|
179
|
+
if (follow) {
|
|
180
|
+
// Follow mode: poll for new content
|
|
181
|
+
let stdoutOffset = Number(stdout.offset) + Number(stdout.size);
|
|
182
|
+
let stderrOffset = Number(stderr.offset) + Number(stderr.size);
|
|
183
|
+
console.log('');
|
|
184
|
+
console.log('[Following... press Ctrl+C to stop]');
|
|
185
|
+
const pollInterval = 500; // ms
|
|
186
|
+
const poll = async () => {
|
|
187
|
+
const newStdout = await taskLogsRemote(baseUrl, repo, ws, taskName, {
|
|
188
|
+
stream: 'stdout',
|
|
189
|
+
offset: stdoutOffset,
|
|
190
|
+
}, { token });
|
|
191
|
+
const newStderr = await taskLogsRemote(baseUrl, repo, ws, taskName, {
|
|
192
|
+
stream: 'stderr',
|
|
193
|
+
offset: stderrOffset,
|
|
194
|
+
}, { token });
|
|
195
|
+
if (Number(newStdout.size) > 0) {
|
|
196
|
+
process.stdout.write(newStdout.data);
|
|
197
|
+
stdoutOffset += Number(newStdout.size);
|
|
198
|
+
}
|
|
199
|
+
if (Number(newStderr.size) > 0) {
|
|
200
|
+
process.stderr.write(newStderr.data);
|
|
201
|
+
stderrOffset += Number(newStderr.size);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
// Keep polling until interrupted
|
|
205
|
+
const intervalId = setInterval(() => void poll(), pollInterval);
|
|
206
|
+
process.on('SIGINT', () => {
|
|
207
|
+
clearInterval(intervalId);
|
|
208
|
+
console.log('\n[Stopped]');
|
|
209
|
+
process.exit(0);
|
|
210
|
+
});
|
|
211
|
+
// Keep the process alive
|
|
212
|
+
await new Promise(() => {
|
|
213
|
+
// Never resolves - will be interrupted by Ctrl+C
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
159
217
|
/**
|
|
160
218
|
* View execution logs for workspace tasks.
|
|
161
219
|
*/
|
|
162
220
|
export async function logsCommand(repoArg, pathSpec, options = {}) {
|
|
163
221
|
try {
|
|
164
|
-
const
|
|
222
|
+
const location = await parseRepoLocation(repoArg);
|
|
165
223
|
if (!pathSpec) {
|
|
166
224
|
exitError('Usage: e3 logs <repo> <ws> or e3 logs <repo> <ws.taskName>');
|
|
167
225
|
}
|
|
168
226
|
// Parse the path: ws or ws.taskName
|
|
169
227
|
const { ws, taskName } = parseTaskPath(pathSpec);
|
|
170
|
-
if (
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
228
|
+
if (location.type === 'local') {
|
|
229
|
+
const storage = new LocalStorage();
|
|
230
|
+
if (!taskName) {
|
|
231
|
+
// No task specified - list tasks in workspace
|
|
232
|
+
await listWorkspaceTasks(storage, location.path, ws);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
// Find the execution for this task
|
|
236
|
+
const execution = await executionFindCurrent(storage, location.path, ws, taskName);
|
|
237
|
+
if (!execution) {
|
|
238
|
+
exitError(`No executions found for task: ${ws}.${taskName}`);
|
|
239
|
+
}
|
|
240
|
+
console.log(`Task: ${ws}.${taskName}`);
|
|
241
|
+
console.log(`Execution: ${abbrev(execution.taskHash)}/${abbrev(execution.inputsHash)}`);
|
|
242
|
+
console.log('');
|
|
243
|
+
await showLogs(storage, location.path, execution.taskHash, execution.inputsHash, options.follow ?? false);
|
|
174
244
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
245
|
+
else {
|
|
246
|
+
// Remote
|
|
247
|
+
if (!taskName) {
|
|
248
|
+
// No task specified - list tasks in workspace
|
|
249
|
+
await listWorkspaceTasksRemote(location.baseUrl, location.repo, ws, location.token);
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
console.log(`Task: ${ws}.${taskName}`);
|
|
253
|
+
console.log('');
|
|
254
|
+
await showLogsRemote(location.baseUrl, location.repo, ws, taskName, location.token, options.follow ?? false);
|
|
179
255
|
}
|
|
180
|
-
console.log(`Task: ${ws}.${taskName}`);
|
|
181
|
-
console.log(`Execution: ${abbrev(execution.taskHash)}/${abbrev(execution.inHash)}`);
|
|
182
|
-
console.log('');
|
|
183
|
-
await showLogs(repoPath, execution.taskHash, execution.inHash, options.follow ?? false);
|
|
184
256
|
}
|
|
185
257
|
catch (err) {
|
|
186
258
|
exitError(formatError(err));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../src/commands/package.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../src/commands/package.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,eAAO,MAAM,cAAc;IACzB;;OAEG;oBACmB,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB7D;;OAEG;oBACmB,MAAM,WAAW,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB9E;;OAEG;kBACiB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B1C;;OAEG;oBACmB,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkB9D,CAAC"}
|
|
@@ -5,19 +5,32 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* e3 package commands - Package management
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
9
|
+
import { packageImport, packageExport, packageList, packageRemove, LocalStorage, } from '@elaraai/e3-core';
|
|
10
|
+
import { packageImport as packageImportRemote, packageExport as packageExportRemote, packageList as packageListRemote, packageRemove as packageRemoveRemote, } from '@elaraai/e3-api-client';
|
|
11
|
+
import { parseRepoLocation, parsePackageSpec, formatError, exitError } from '../utils.js';
|
|
10
12
|
export const packageCommand = {
|
|
11
13
|
/**
|
|
12
14
|
* Import a package from a .zip file.
|
|
13
15
|
*/
|
|
14
16
|
async import(repoArg, zipPath) {
|
|
15
17
|
try {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const location = await parseRepoLocation(repoArg);
|
|
19
|
+
if (location.type === 'local') {
|
|
20
|
+
const storage = new LocalStorage();
|
|
21
|
+
const result = await packageImport(storage, location.path, zipPath);
|
|
22
|
+
console.log(`Imported ${result.name}@${result.version}`);
|
|
23
|
+
console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
|
|
24
|
+
console.log(` Objects: ${result.objectCount}`);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// Remote import - read local zip and send to server
|
|
28
|
+
const zipBytes = readFileSync(zipPath);
|
|
29
|
+
const result = await packageImportRemote(location.baseUrl, location.repo, new Uint8Array(zipBytes), { token: location.token });
|
|
30
|
+
console.log(`Imported ${result.name}@${result.version}`);
|
|
31
|
+
console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
|
|
32
|
+
console.log(` Objects: ${result.objectCount}`);
|
|
33
|
+
}
|
|
21
34
|
}
|
|
22
35
|
catch (err) {
|
|
23
36
|
exitError(formatError(err));
|
|
@@ -28,12 +41,22 @@ export const packageCommand = {
|
|
|
28
41
|
*/
|
|
29
42
|
async export(repoArg, pkgSpec, zipPath) {
|
|
30
43
|
try {
|
|
31
|
-
const
|
|
44
|
+
const location = await parseRepoLocation(repoArg);
|
|
32
45
|
const { name, version } = parsePackageSpec(pkgSpec);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
46
|
+
if (location.type === 'local') {
|
|
47
|
+
const storage = new LocalStorage();
|
|
48
|
+
const result = await packageExport(storage, location.path, name, version, zipPath);
|
|
49
|
+
console.log(`Exported ${name}@${version} to ${zipPath}`);
|
|
50
|
+
console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
|
|
51
|
+
console.log(` Objects: ${result.objectCount}`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// Remote export - fetch zip bytes and write locally
|
|
55
|
+
const zipBytes = await packageExportRemote(location.baseUrl, location.repo, name, version, { token: location.token });
|
|
56
|
+
writeFileSync(zipPath, zipBytes);
|
|
57
|
+
console.log(`Exported ${name}@${version} to ${zipPath}`);
|
|
58
|
+
console.log(` Size: ${zipBytes.length} bytes`);
|
|
59
|
+
}
|
|
37
60
|
}
|
|
38
61
|
catch (err) {
|
|
39
62
|
exitError(formatError(err));
|
|
@@ -44,8 +67,15 @@ export const packageCommand = {
|
|
|
44
67
|
*/
|
|
45
68
|
async list(repoArg) {
|
|
46
69
|
try {
|
|
47
|
-
const
|
|
48
|
-
|
|
70
|
+
const location = await parseRepoLocation(repoArg);
|
|
71
|
+
let packages;
|
|
72
|
+
if (location.type === 'local') {
|
|
73
|
+
const storage = new LocalStorage();
|
|
74
|
+
packages = await packageList(storage, location.path);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
packages = await packageListRemote(location.baseUrl, location.repo, { token: location.token });
|
|
78
|
+
}
|
|
49
79
|
if (packages.length === 0) {
|
|
50
80
|
console.log('No packages installed');
|
|
51
81
|
return;
|
|
@@ -64,11 +94,18 @@ export const packageCommand = {
|
|
|
64
94
|
*/
|
|
65
95
|
async remove(repoArg, pkgSpec) {
|
|
66
96
|
try {
|
|
67
|
-
const
|
|
97
|
+
const location = await parseRepoLocation(repoArg);
|
|
68
98
|
const { name, version } = parsePackageSpec(pkgSpec);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
99
|
+
if (location.type === 'local') {
|
|
100
|
+
const storage = new LocalStorage();
|
|
101
|
+
await packageRemove(storage, location.path, name, version);
|
|
102
|
+
console.log(`Removed ${name}@${version}`);
|
|
103
|
+
console.log('Run `e3 gc` to reclaim disk space');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
await packageRemoveRemote(location.baseUrl, location.repo, name, version, { token: location.token });
|
|
107
|
+
console.log(`Removed ${name}@${version}`);
|
|
108
|
+
}
|
|
72
109
|
}
|
|
73
110
|
catch (err) {
|
|
74
111
|
exitError(formatError(err));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../src/commands/package.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../src/commands/package.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
export declare const repoCommand: {
|
|
6
|
+
/**
|
|
7
|
+
* Create a new repository.
|
|
8
|
+
*
|
|
9
|
+
* Local: e3 repo create <path>
|
|
10
|
+
* Remote: e3 repo create <url> (e.g., http://server/repos/name)
|
|
11
|
+
*/
|
|
12
|
+
create(repoArg: string): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Remove a repository.
|
|
15
|
+
*/
|
|
16
|
+
remove(locationArg: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Show repository status.
|
|
19
|
+
*/
|
|
20
|
+
status(locationArg: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Run garbage collection.
|
|
23
|
+
*/
|
|
24
|
+
gc(locationArg: string, options: {
|
|
25
|
+
dryRun?: boolean;
|
|
26
|
+
minAge?: string;
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../src/commands/repo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4CH,eAAO,MAAM,WAAW;IACtB;;;;;OAKG;oBACmB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC5C;;OAEG;wBACuB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+ChD;;OAEG;wBACuB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDhD;;OAEG;oBACmB,MAAM,WAAW;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAgF7F,CAAC"}
|