@elaraai/e3-cli 0.0.2-beta.3 → 0.0.2-beta.30
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
|
@@ -9,25 +9,32 @@
|
|
|
9
9
|
* e3 start . my-workspace
|
|
10
10
|
* e3 start . my-workspace --concurrency 2
|
|
11
11
|
* e3 start . my-workspace --force
|
|
12
|
+
* e3 start https://server/repos/myrepo my-workspace
|
|
12
13
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { DataflowAbortedError, LocalStorage, LocalOrchestrator, FileStateStore, WorkspaceLockError, } from '@elaraai/e3-core';
|
|
16
|
+
import { dataflowStart as dataflowStartRemote, dataflowExecution as dataflowExecutionRemote, } from '@elaraai/e3-api-client';
|
|
17
|
+
import { parseRepoLocation, formatError, exitError } from '../utils.js';
|
|
18
|
+
/** Polling interval for remote execution (ms) */
|
|
19
|
+
const POLL_INTERVAL = 500;
|
|
15
20
|
/**
|
|
16
21
|
* Execute tasks in a workspace.
|
|
17
22
|
*/
|
|
18
23
|
export async function startCommand(repoArg, ws, options) {
|
|
19
24
|
// Set up abort controller for signal handling
|
|
20
25
|
const controller = new AbortController();
|
|
26
|
+
let aborted = false;
|
|
21
27
|
// Handle SIGINT (Ctrl+C) and SIGTERM gracefully
|
|
22
28
|
const signalHandler = (signal) => {
|
|
23
29
|
console.log('');
|
|
24
30
|
console.log(`Received ${signal}, aborting...`);
|
|
31
|
+
aborted = true;
|
|
25
32
|
controller.abort();
|
|
26
33
|
};
|
|
27
34
|
process.on('SIGINT', () => signalHandler('SIGINT'));
|
|
28
35
|
process.on('SIGTERM', () => signalHandler('SIGTERM'));
|
|
29
36
|
try {
|
|
30
|
-
const
|
|
37
|
+
const location = await parseRepoLocation(repoArg);
|
|
31
38
|
const concurrency = options.concurrency ? parseInt(options.concurrency, 10) : 4;
|
|
32
39
|
console.log(`Starting tasks in workspace: ${ws}`);
|
|
33
40
|
if (options.filter) {
|
|
@@ -38,42 +45,20 @@ export async function startCommand(repoArg, ws, options) {
|
|
|
38
45
|
console.log('Force: re-executing all tasks');
|
|
39
46
|
}
|
|
40
47
|
console.log('');
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
console.log('');
|
|
57
|
-
console.log('Summary:');
|
|
58
|
-
console.log(` Executed: ${result.executed}`);
|
|
59
|
-
console.log(` Cached: ${result.cached}`);
|
|
60
|
-
console.log(` Failed: ${result.failed}`);
|
|
61
|
-
console.log(` Skipped: ${result.skipped}`);
|
|
62
|
-
console.log(` Duration: ${result.duration}ms`);
|
|
63
|
-
if (!result.success) {
|
|
64
|
-
console.log('');
|
|
65
|
-
console.log('Failed tasks:');
|
|
66
|
-
for (const task of result.tasks) {
|
|
67
|
-
if (task.state === 'failed') {
|
|
68
|
-
const exitInfo = task.exitCode != null ? `exit code ${task.exitCode}` : 'spawn failed';
|
|
69
|
-
const errorInfo = task.error ? ` - ${task.error}` : '';
|
|
70
|
-
console.log(` ${task.name}: ${exitInfo}${errorInfo}`);
|
|
71
|
-
}
|
|
72
|
-
else if (task.state === 'error') {
|
|
73
|
-
console.log(` ${task.name}: ${task.error}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
process.exit(1);
|
|
48
|
+
if (location.type === 'local') {
|
|
49
|
+
await executeLocal(location.path, ws, {
|
|
50
|
+
concurrency,
|
|
51
|
+
force: options.force,
|
|
52
|
+
filter: options.filter,
|
|
53
|
+
signal: controller.signal,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
await executeRemote(location.baseUrl, location.repo, ws, {
|
|
58
|
+
concurrency,
|
|
59
|
+
force: options.force,
|
|
60
|
+
filter: options.filter,
|
|
61
|
+
}, location.token, () => aborted);
|
|
77
62
|
}
|
|
78
63
|
}
|
|
79
64
|
catch (err) {
|
|
@@ -94,18 +79,174 @@ export async function startCommand(repoArg, ws, options) {
|
|
|
94
79
|
exitError(formatError(err));
|
|
95
80
|
}
|
|
96
81
|
}
|
|
97
|
-
function
|
|
82
|
+
async function executeLocal(repoPath, ws, options) {
|
|
83
|
+
const storage = new LocalStorage();
|
|
84
|
+
const workspacesDir = join(repoPath, 'workspaces');
|
|
85
|
+
const stateStore = new FileStateStore(workspacesDir);
|
|
86
|
+
const orchestrator = new LocalOrchestrator(stateStore);
|
|
87
|
+
const handle = await orchestrator.start(storage, repoPath, ws, {
|
|
88
|
+
concurrency: options.concurrency,
|
|
89
|
+
force: options.force,
|
|
90
|
+
filter: options.filter,
|
|
91
|
+
signal: options.signal,
|
|
92
|
+
onTaskStart: (name) => {
|
|
93
|
+
console.log(` [START] ${name}`);
|
|
94
|
+
},
|
|
95
|
+
onTaskComplete: (taskResult) => {
|
|
96
|
+
printTaskResult(taskResult);
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
const result = await orchestrator.wait(handle);
|
|
100
|
+
printSummary({
|
|
101
|
+
executed: result.executed,
|
|
102
|
+
cached: result.cached,
|
|
103
|
+
failed: result.failed,
|
|
104
|
+
skipped: result.skipped,
|
|
105
|
+
duration: result.duration,
|
|
106
|
+
});
|
|
107
|
+
if (!result.success) {
|
|
108
|
+
// Get failed task details from state store
|
|
109
|
+
const state = await stateStore.read(repoPath, ws, handle.id);
|
|
110
|
+
if (state) {
|
|
111
|
+
const failedTasks = [];
|
|
112
|
+
for (const [name, taskState] of state.tasks) {
|
|
113
|
+
if (taskState.status === 'failed') {
|
|
114
|
+
failedTasks.push({
|
|
115
|
+
name,
|
|
116
|
+
cached: false,
|
|
117
|
+
state: 'failed',
|
|
118
|
+
error: taskState.error.type === 'some' ? taskState.error.value : undefined,
|
|
119
|
+
exitCode: taskState.exitCode.type === 'some' ? Number(taskState.exitCode.value) : undefined,
|
|
120
|
+
duration: taskState.duration.type === 'some' ? Number(taskState.duration.value) : 0,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
printFailedTasks(failedTasks);
|
|
125
|
+
}
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async function executeRemote(baseUrl, repo, ws, options, token, isAborted) {
|
|
130
|
+
const requestOptions = { token };
|
|
131
|
+
// Start the dataflow execution
|
|
132
|
+
await dataflowStartRemote(baseUrl, repo, ws, {
|
|
133
|
+
concurrency: options.concurrency,
|
|
134
|
+
force: options.force,
|
|
135
|
+
filter: options.filter,
|
|
136
|
+
}, requestOptions);
|
|
137
|
+
// Poll for execution state
|
|
138
|
+
let eventOffset = 0;
|
|
139
|
+
let lastStatus = null;
|
|
140
|
+
while (!isAborted()) {
|
|
141
|
+
const state = await dataflowExecutionRemote(baseUrl, repo, ws, {
|
|
142
|
+
offset: eventOffset,
|
|
143
|
+
}, requestOptions);
|
|
144
|
+
// Print new events
|
|
145
|
+
for (const event of state.events) {
|
|
146
|
+
printEvent(event);
|
|
147
|
+
eventOffset++;
|
|
148
|
+
}
|
|
149
|
+
// Check if execution is done
|
|
150
|
+
if (state.status.type !== 'running') {
|
|
151
|
+
lastStatus = state.status.type;
|
|
152
|
+
// Print summary if available
|
|
153
|
+
if (state.summary.type === 'some') {
|
|
154
|
+
const summary = state.summary.value;
|
|
155
|
+
printSummary({
|
|
156
|
+
executed: Number(summary.executed),
|
|
157
|
+
cached: Number(summary.cached),
|
|
158
|
+
failed: Number(summary.failed),
|
|
159
|
+
skipped: Number(summary.skipped),
|
|
160
|
+
duration: summary.duration,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
// Wait before next poll
|
|
166
|
+
await sleep(POLL_INTERVAL);
|
|
167
|
+
}
|
|
168
|
+
// Handle abort
|
|
169
|
+
if (isAborted()) {
|
|
170
|
+
console.log('');
|
|
171
|
+
console.log('Aborted.');
|
|
172
|
+
process.exit(130);
|
|
173
|
+
}
|
|
174
|
+
// Exit with error if execution failed
|
|
175
|
+
if (lastStatus === 'failed') {
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// =============================================================================
|
|
180
|
+
// Output Formatting
|
|
181
|
+
// =============================================================================
|
|
182
|
+
function printEvent(event) {
|
|
183
|
+
switch (event.type) {
|
|
184
|
+
case 'start':
|
|
185
|
+
console.log(` [START] ${event.value.task}`);
|
|
186
|
+
break;
|
|
187
|
+
case 'complete':
|
|
188
|
+
console.log(` [DONE] ${event.value.task} [${Math.round(event.value.duration)}ms]`);
|
|
189
|
+
break;
|
|
190
|
+
case 'cached':
|
|
191
|
+
console.log(` [CACHED] ${event.value.task}`);
|
|
192
|
+
break;
|
|
193
|
+
case 'failed':
|
|
194
|
+
console.log(` [FAIL] ${event.value.task} [${Math.round(event.value.duration)}ms] (exit code ${event.value.exitCode})`);
|
|
195
|
+
break;
|
|
196
|
+
case 'error':
|
|
197
|
+
console.log(` [ERR] ${event.value.task}: ${event.value.message}`);
|
|
198
|
+
break;
|
|
199
|
+
case 'input_unavailable':
|
|
200
|
+
console.log(` [SKIP] ${event.value.task}`);
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function printTaskResult(result) {
|
|
205
|
+
if (result.cached) {
|
|
206
|
+
console.log(` [CACHED] ${result.name}`);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
98
209
|
switch (result.state) {
|
|
99
210
|
case 'success':
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
211
|
+
console.log(` [DONE] ${result.name} [${Math.round(result.duration)}ms]`);
|
|
212
|
+
break;
|
|
213
|
+
case 'failed': {
|
|
214
|
+
const exitCode = result.exitCode ?? -1;
|
|
215
|
+
console.log(` [FAIL] ${result.name} [${Math.round(result.duration)}ms] (exit code ${exitCode})`);
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
103
218
|
case 'error':
|
|
104
|
-
|
|
219
|
+
console.log(` [ERR] ${result.name}: ${result.error ?? 'Unknown error'}`);
|
|
220
|
+
break;
|
|
105
221
|
case 'skipped':
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
222
|
+
console.log(` [SKIP] ${result.name}`);
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
function printSummary(summary) {
|
|
227
|
+
console.log('');
|
|
228
|
+
console.log('Summary:');
|
|
229
|
+
console.log(` Executed: ${summary.executed}`);
|
|
230
|
+
console.log(` Cached: ${summary.cached}`);
|
|
231
|
+
console.log(` Failed: ${summary.failed}`);
|
|
232
|
+
console.log(` Skipped: ${summary.skipped}`);
|
|
233
|
+
console.log(` Duration: ${Math.round(summary.duration)}ms`);
|
|
234
|
+
}
|
|
235
|
+
function printFailedTasks(tasks) {
|
|
236
|
+
console.log('');
|
|
237
|
+
console.log('Failed tasks:');
|
|
238
|
+
for (const task of tasks) {
|
|
239
|
+
if (task.state === 'failed') {
|
|
240
|
+
const exitInfo = task.exitCode != null ? `exit code ${task.exitCode}` : 'spawn failed';
|
|
241
|
+
const errorInfo = task.error ? ` - ${task.error}` : '';
|
|
242
|
+
console.log(` ${task.name}: ${exitInfo}${errorInfo}`);
|
|
243
|
+
}
|
|
244
|
+
else if (task.state === 'error') {
|
|
245
|
+
console.log(` ${task.name}: ${task.error}`);
|
|
246
|
+
}
|
|
109
247
|
}
|
|
110
248
|
}
|
|
249
|
+
function sleep(ms) {
|
|
250
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
251
|
+
}
|
|
111
252
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
interface TreeOptions {
|
|
6
|
+
depth?: string;
|
|
7
|
+
types?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Show full tree structure of a workspace.
|
|
11
|
+
*/
|
|
12
|
+
export declare function treeCommand(repoArg: string, pathSpec: string, options: TreeOptions): Promise<void>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/commands/tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAkHD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Ef"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* e3 tree command - Show full tree structure of a workspace
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* e3 tree . dev # Full tree for workspace
|
|
10
|
+
* e3 tree . dev.tasks # Tree from subtree
|
|
11
|
+
* e3 tree . dev --depth 2 # Limit depth
|
|
12
|
+
* e3 tree . dev --types # Show dataset types
|
|
13
|
+
*/
|
|
14
|
+
import { workspaceGetTree, LocalStorage } from '@elaraai/e3-core';
|
|
15
|
+
import { printFor, EastTypeType } from '@elaraai/east';
|
|
16
|
+
import { datasetListRecursive as datasetListRecursiveRemote } from '@elaraai/e3-api-client';
|
|
17
|
+
import { parseRepoLocation, parseDatasetPath, formatError, exitError } from '../utils.js';
|
|
18
|
+
// Printer for type values (decoded types are EastTypeValue, not EastType)
|
|
19
|
+
const printTypeValue = printFor(EastTypeType);
|
|
20
|
+
/**
|
|
21
|
+
* Render tree nodes with box-drawing characters.
|
|
22
|
+
*/
|
|
23
|
+
function renderTree(nodes, prefix = '', showTypes = false) {
|
|
24
|
+
const lines = [];
|
|
25
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
26
|
+
const node = nodes[i];
|
|
27
|
+
const isLast = i === nodes.length - 1;
|
|
28
|
+
const connector = isLast ? '└── ' : '├── ';
|
|
29
|
+
const childPrefix = isLast ? ' ' : '│ ';
|
|
30
|
+
// Format node name with optional type
|
|
31
|
+
let nodeName = node.name;
|
|
32
|
+
if (showTypes && node.kind === 'dataset' && node.datasetType) {
|
|
33
|
+
try {
|
|
34
|
+
nodeName += ` (${printTypeValue(node.datasetType)})`;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
nodeName += ' (?)';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
lines.push(prefix + connector + nodeName);
|
|
41
|
+
// Recurse into children (only tree nodes have children)
|
|
42
|
+
if (node.kind === 'tree' && node.children.length > 0) {
|
|
43
|
+
const childLines = renderTree(node.children, prefix + childPrefix, showTypes);
|
|
44
|
+
lines.push(...childLines);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return lines;
|
|
48
|
+
}
|
|
49
|
+
function buildTreeFromFlat(items, showTypes) {
|
|
50
|
+
const root = { name: '', children: new Map(), isDataset: false };
|
|
51
|
+
for (const item of items) {
|
|
52
|
+
// Path is like ".inputs.a.x" - split into segments
|
|
53
|
+
const segments = item.path.split('.').filter(s => s !== '');
|
|
54
|
+
let current = root;
|
|
55
|
+
for (let i = 0; i < segments.length; i++) {
|
|
56
|
+
const segment = segments[i];
|
|
57
|
+
const isLast = i === segments.length - 1;
|
|
58
|
+
if (!current.children.has(segment)) {
|
|
59
|
+
current.children.set(segment, {
|
|
60
|
+
name: segment,
|
|
61
|
+
children: new Map(),
|
|
62
|
+
isDataset: false,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const node = current.children.get(segment);
|
|
66
|
+
if (isLast) {
|
|
67
|
+
node.isDataset = true;
|
|
68
|
+
if (showTypes) {
|
|
69
|
+
try {
|
|
70
|
+
node.type = printTypeValue(item.type);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
node.type = '?';
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
current = node;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return root;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Render flat tree structure with box-drawing characters.
|
|
84
|
+
*/
|
|
85
|
+
function renderFlatTree(node, prefix = '', showTypes = false) {
|
|
86
|
+
const lines = [];
|
|
87
|
+
const children = Array.from(node.children.values());
|
|
88
|
+
for (let i = 0; i < children.length; i++) {
|
|
89
|
+
const child = children[i];
|
|
90
|
+
const isLast = i === children.length - 1;
|
|
91
|
+
const connector = isLast ? '└── ' : '├── ';
|
|
92
|
+
const childPrefix = isLast ? ' ' : '│ ';
|
|
93
|
+
let nodeName = child.name;
|
|
94
|
+
if (showTypes && child.isDataset && child.type) {
|
|
95
|
+
nodeName += ` (${child.type})`;
|
|
96
|
+
}
|
|
97
|
+
lines.push(prefix + connector + nodeName);
|
|
98
|
+
// Recurse into children
|
|
99
|
+
if (child.children.size > 0) {
|
|
100
|
+
const childLines = renderFlatTree(child, prefix + childPrefix, showTypes);
|
|
101
|
+
lines.push(...childLines);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return lines;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Show full tree structure of a workspace.
|
|
108
|
+
*/
|
|
109
|
+
export async function treeCommand(repoArg, pathSpec, options) {
|
|
110
|
+
try {
|
|
111
|
+
const location = await parseRepoLocation(repoArg);
|
|
112
|
+
const { ws, path } = parseDatasetPath(pathSpec);
|
|
113
|
+
const maxDepth = options.depth !== undefined ? parseInt(options.depth, 10) : undefined;
|
|
114
|
+
const includeTypes = options.types ?? false;
|
|
115
|
+
if (location.type === 'local') {
|
|
116
|
+
const storage = new LocalStorage();
|
|
117
|
+
const nodes = await workspaceGetTree(storage, location.path, ws, path, {
|
|
118
|
+
maxDepth,
|
|
119
|
+
includeTypes,
|
|
120
|
+
});
|
|
121
|
+
if (nodes.length === 0) {
|
|
122
|
+
console.log('(empty)');
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// Print root path
|
|
126
|
+
console.log(pathSpec);
|
|
127
|
+
// Render and print tree
|
|
128
|
+
const lines = renderTree(nodes, '', includeTypes);
|
|
129
|
+
for (const line of lines) {
|
|
130
|
+
console.log(line);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// Remote: use flat list and build tree
|
|
135
|
+
const items = await datasetListRecursiveRemote(location.baseUrl, location.repo, ws, path, { token: location.token });
|
|
136
|
+
if (items.length === 0) {
|
|
137
|
+
console.log('(empty)');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// Print root path
|
|
141
|
+
console.log(pathSpec);
|
|
142
|
+
// Build tree from flat list and render
|
|
143
|
+
const tree = buildTreeFromFlat(items, includeTypes);
|
|
144
|
+
// Apply depth limit if specified
|
|
145
|
+
const lines = renderFlatTree(tree, '', includeTypes);
|
|
146
|
+
// Apply depth filter if needed
|
|
147
|
+
if (maxDepth !== undefined) {
|
|
148
|
+
const filteredLines = [];
|
|
149
|
+
for (const line of lines) {
|
|
150
|
+
// Count depth by counting connector patterns
|
|
151
|
+
const depth = (line.match(/[├└]/g) || []).length;
|
|
152
|
+
if (depth <= maxDepth) {
|
|
153
|
+
filteredLines.push(line);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
for (const line of filteredLines) {
|
|
157
|
+
console.log(line);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
for (const line of lines) {
|
|
162
|
+
console.log(line);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
exitError(formatError(err));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/commands/tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/commands/watch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/commands/watch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA6FD;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Qf"}
|