@elaraai/e3-cli 0.0.2-beta.3 → 0.0.2-beta.31
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 +30 -9
- package/dist/src/cli.js +44 -15
- 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 +204 -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 +105 -69
- 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 +35 -0
- package/dist/src/commands/repo.d.ts.map +1 -0
- package/dist/src/commands/repo.js +243 -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 +188 -47
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/tree.d.ts +14 -0
- package/dist/src/commands/tree.d.ts.map +1 -0
- package/dist/src/commands/tree.js +171 -0
- package/dist/src/commands/tree.js.map +1 -0
- package/dist/src/commands/watch.d.ts.map +1 -1
- package/dist/src/commands/watch.js +131 -91
- 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 +64 -0
- package/dist/src/utils.js.map +1 -1
- package/package.json +7 -6
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0NH;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAqEf"}
|
|
@@ -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,
|
|
14
|
-
import {
|
|
13
|
+
import { workspaceListTasks, workspaceGetTaskHash, executionListForTask, executionReadLog, executionGetLatest, executionFindCurrent, isProcessAlive, LocalStorage, } from '@elaraai/e3-core';
|
|
14
|
+
import { taskList as taskListRemote, taskExecutionList as taskExecutionListRemote, taskLogs as taskLogsRemote, ApiError, } 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,16 +44,26 @@ 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
|
|
55
|
-
|
|
55
|
+
const status = await executionGetLatest(storage, repoPath, taskHash, latestInHash);
|
|
56
|
+
let state = status?.type ?? 'unknown';
|
|
57
|
+
// Check if running process is actually alive
|
|
58
|
+
if (status?.type === 'running') {
|
|
59
|
+
const pid = Number(status.value.pid);
|
|
60
|
+
const pidStartTime = Number(status.value.pidStartTime);
|
|
61
|
+
const bootId = status.value.bootId;
|
|
62
|
+
const alive = await isProcessAlive(pid, pidStartTime, bootId);
|
|
63
|
+
if (!alive) {
|
|
64
|
+
state = 'stale-running';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
56
67
|
console.log(` ${taskName} [${state}] (${executions.length} execution(s))`);
|
|
57
68
|
}
|
|
58
69
|
}
|
|
@@ -60,41 +71,9 @@ async function listWorkspaceTasks(repoPath, ws) {
|
|
|
60
71
|
console.log(`Use "e3 logs . ${ws}.<taskName>" to view logs.`);
|
|
61
72
|
}
|
|
62
73
|
/**
|
|
63
|
-
*
|
|
64
|
-
* This matches the execution that corresponds to the current input values.
|
|
65
|
-
*/
|
|
66
|
-
async function findCurrentExecution(repoPath, ws, taskName) {
|
|
67
|
-
const taskHash = await workspaceGetTaskHash(repoPath, ws, taskName);
|
|
68
|
-
const task = await workspaceGetTask(repoPath, ws, taskName);
|
|
69
|
-
// Get the current input hashes from the workspace
|
|
70
|
-
const currentInputHashes = [];
|
|
71
|
-
for (const inputPath of task.inputs) {
|
|
72
|
-
const { refType, hash } = await workspaceGetDatasetHash(repoPath, ws, inputPath);
|
|
73
|
-
if (refType !== 'value' || hash === null) {
|
|
74
|
-
// Input not assigned - can't find matching execution
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
currentInputHashes.push(hash);
|
|
78
|
-
}
|
|
79
|
-
const inHash = inputsHash(currentInputHashes);
|
|
80
|
-
// Check if this execution exists
|
|
81
|
-
const executions = await executionListForTask(repoPath, taskHash);
|
|
82
|
-
if (executions.includes(inHash)) {
|
|
83
|
-
return { taskHash, inHash };
|
|
84
|
-
}
|
|
85
|
-
// Fall back to the most recent execution if current inputs don't match
|
|
86
|
-
if (executions.length > 0) {
|
|
87
|
-
return { taskHash, inHash: executions[0] };
|
|
88
|
-
}
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Show logs for a specific execution.
|
|
74
|
+
* Display logs and optionally follow for new output.
|
|
93
75
|
*/
|
|
94
|
-
async function
|
|
95
|
-
// Read stdout and stderr
|
|
96
|
-
const stdout = await executionReadLog(repoPath, taskHash, inHash, 'stdout');
|
|
97
|
-
const stderr = await executionReadLog(repoPath, taskHash, inHash, 'stderr');
|
|
76
|
+
async function displayLogs(stdout, stderr, follow, poll) {
|
|
98
77
|
if (stdout.totalSize === 0 && stderr.totalSize === 0) {
|
|
99
78
|
console.log('No log output.');
|
|
100
79
|
return;
|
|
@@ -111,19 +90,14 @@ async function showLogs(repoPath, taskHash, inHash, follow) {
|
|
|
111
90
|
console.log(stderr.data);
|
|
112
91
|
}
|
|
113
92
|
if (follow) {
|
|
114
|
-
// Follow mode: poll for new content
|
|
115
93
|
let stdoutOffset = stdout.offset + stdout.size;
|
|
116
94
|
let stderrOffset = stderr.offset + stderr.size;
|
|
117
95
|
console.log('');
|
|
118
96
|
console.log('[Following... press Ctrl+C to stop]');
|
|
119
97
|
const pollInterval = 500; // ms
|
|
120
|
-
const
|
|
121
|
-
const newStdout = await
|
|
122
|
-
|
|
123
|
-
});
|
|
124
|
-
const newStderr = await executionReadLog(repoPath, taskHash, inHash, 'stderr', {
|
|
125
|
-
offset: stderrOffset,
|
|
126
|
-
});
|
|
98
|
+
const tick = async () => {
|
|
99
|
+
const newStdout = await poll('stdout', stdoutOffset);
|
|
100
|
+
const newStderr = await poll('stderr', stderrOffset);
|
|
127
101
|
if (newStdout.size > 0) {
|
|
128
102
|
process.stdout.write(newStdout.data);
|
|
129
103
|
stdoutOffset += newStdout.size;
|
|
@@ -133,44 +107,106 @@ async function showLogs(repoPath, taskHash, inHash, follow) {
|
|
|
133
107
|
stderrOffset += newStderr.size;
|
|
134
108
|
}
|
|
135
109
|
};
|
|
136
|
-
|
|
137
|
-
const intervalId = setInterval(() => void poll(), pollInterval);
|
|
110
|
+
const intervalId = setInterval(() => void tick(), pollInterval);
|
|
138
111
|
process.on('SIGINT', () => {
|
|
139
112
|
clearInterval(intervalId);
|
|
140
113
|
console.log('\n[Stopped]');
|
|
141
114
|
process.exit(0);
|
|
142
115
|
});
|
|
143
|
-
// Keep the process alive
|
|
144
|
-
await new Promise(() => {
|
|
145
|
-
// Never resolves - will be interrupted by Ctrl+C
|
|
146
|
-
});
|
|
116
|
+
// Keep the process alive — interrupted by Ctrl+C
|
|
117
|
+
await new Promise(() => { });
|
|
147
118
|
}
|
|
148
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* List tasks in a workspace (remote).
|
|
122
|
+
*/
|
|
123
|
+
async function listWorkspaceTasksRemote(baseUrl, repo, ws, token) {
|
|
124
|
+
const tasks = await taskListRemote(baseUrl, repo, ws, { token });
|
|
125
|
+
if (tasks.length === 0) {
|
|
126
|
+
console.log(`No tasks in workspace: ${ws}`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
console.log(`Tasks in workspace: ${ws}`);
|
|
130
|
+
console.log('');
|
|
131
|
+
for (const task of tasks) {
|
|
132
|
+
const executions = await taskExecutionListRemote(baseUrl, repo, ws, task.name, { token });
|
|
133
|
+
if (executions.length === 0) {
|
|
134
|
+
console.log(` ${task.name} (no executions)`);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Get status of the most recent execution
|
|
138
|
+
const latest = executions[0];
|
|
139
|
+
const state = latest.status.type;
|
|
140
|
+
console.log(` ${task.name} [${state}] (${executions.length} execution(s))`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log(`Use "e3 logs <repo> ${ws}.<taskName>" to view logs.`);
|
|
145
|
+
}
|
|
146
|
+
/** Convert a remote LogChunk (bigint fields) to LogData. */
|
|
147
|
+
function toLogData(chunk) {
|
|
148
|
+
return {
|
|
149
|
+
data: chunk.data,
|
|
150
|
+
offset: Number(chunk.offset),
|
|
151
|
+
size: Number(chunk.size),
|
|
152
|
+
totalSize: Number(chunk.totalSize),
|
|
153
|
+
complete: chunk.complete,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
149
156
|
/**
|
|
150
157
|
* View execution logs for workspace tasks.
|
|
151
158
|
*/
|
|
152
159
|
export async function logsCommand(repoArg, pathSpec, options = {}) {
|
|
153
160
|
try {
|
|
154
|
-
const
|
|
161
|
+
const location = await parseRepoLocation(repoArg);
|
|
155
162
|
if (!pathSpec) {
|
|
156
163
|
exitError('Usage: e3 logs <repo> <ws> or e3 logs <repo> <ws.taskName>');
|
|
157
164
|
}
|
|
158
165
|
// Parse the path: ws or ws.taskName
|
|
159
166
|
const { ws, taskName } = parseTaskPath(pathSpec);
|
|
160
|
-
if (
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
167
|
+
if (location.type === 'local') {
|
|
168
|
+
const storage = new LocalStorage();
|
|
169
|
+
if (!taskName) {
|
|
170
|
+
// No task specified - list tasks in workspace
|
|
171
|
+
await listWorkspaceTasks(storage, location.path, ws);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
// Find the execution for this task
|
|
175
|
+
const execution = await executionFindCurrent(storage, location.path, ws, taskName);
|
|
176
|
+
if (!execution) {
|
|
177
|
+
exitError(`No executions found for task: ${ws}.${taskName}`);
|
|
178
|
+
}
|
|
179
|
+
const { taskHash, inputsHash, executionId } = execution;
|
|
180
|
+
console.log(`Task: ${ws}.${taskName}`);
|
|
181
|
+
console.log(`Execution: ${abbrev(taskHash)}/${abbrev(inputsHash)}/${abbrev(executionId)}`);
|
|
182
|
+
console.log('');
|
|
183
|
+
const stdout = await executionReadLog(storage, location.path, taskHash, inputsHash, executionId, 'stdout');
|
|
184
|
+
const stderr = await executionReadLog(storage, location.path, taskHash, inputsHash, executionId, 'stderr');
|
|
185
|
+
await displayLogs(stdout, stderr, options.follow ?? false, (stream, offset) => executionReadLog(storage, location.path, taskHash, inputsHash, executionId, stream, { offset }));
|
|
164
186
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
187
|
+
else {
|
|
188
|
+
// Remote
|
|
189
|
+
if (!taskName) {
|
|
190
|
+
// No task specified - list tasks in workspace
|
|
191
|
+
await listWorkspaceTasksRemote(location.baseUrl, location.repo, ws, location.token);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
console.log(`Task: ${ws}.${taskName}`);
|
|
195
|
+
console.log('');
|
|
196
|
+
const { baseUrl, repo, token } = location;
|
|
197
|
+
let stdout, stderr;
|
|
198
|
+
try {
|
|
199
|
+
stdout = toLogData(await taskLogsRemote(baseUrl, repo, ws, taskName, { stream: 'stdout' }, { token }));
|
|
200
|
+
stderr = toLogData(await taskLogsRemote(baseUrl, repo, ws, taskName, { stream: 'stderr' }, { token }));
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
if (err instanceof ApiError && err.code === 'execution_not_found') {
|
|
204
|
+
exitError(`No executions found for task: ${ws}.${taskName}`);
|
|
205
|
+
}
|
|
206
|
+
throw err;
|
|
207
|
+
}
|
|
208
|
+
await displayLogs(stdout, stderr, options.follow ?? false, async (stream, offset) => toLogData(await taskLogsRemote(baseUrl, repo, ws, taskName, { stream, offset }, { token })));
|
|
169
209
|
}
|
|
170
|
-
console.log(`Task: ${ws}.${taskName}`);
|
|
171
|
-
console.log(`Execution: ${abbrev(execution.taskHash)}/${abbrev(execution.inHash)}`);
|
|
172
|
-
console.log('');
|
|
173
|
-
await showLogs(repoPath, execution.taskHash, execution.inHash, options.follow ?? false);
|
|
174
210
|
}
|
|
175
211
|
catch (err) {
|
|
176
212
|
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,
|
|
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,35 @@
|
|
|
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
|
+
* List repositories on a server.
|
|
30
|
+
*
|
|
31
|
+
* Remote only: e3 repo list <server-url>
|
|
32
|
+
*/
|
|
33
|
+
list(serverUrl: string): Promise<void>;
|
|
34
|
+
};
|
|
35
|
+
//# 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;IAkBhD;;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;IAiF5F;;;;OAIG;oBACmB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyB7C,CAAC"}
|