@vertesia/cli 0.24.0-dev.202601221707
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/LICENSE +21 -0
- package/README.md +34 -0
- package/bin/app.js +3 -0
- package/bin/docker-credential-vertesia.js +3 -0
- package/lib/apps/commands.d.ts +11 -0
- package/lib/apps/commands.d.ts.map +1 -0
- package/lib/apps/commands.js +246 -0
- package/lib/apps/commands.js.map +1 -0
- package/lib/apps/index.d.ts +3 -0
- package/lib/apps/index.d.ts.map +1 -0
- package/lib/apps/index.js +104 -0
- package/lib/apps/index.js.map +1 -0
- package/lib/artifacts/commands.d.ts +6 -0
- package/lib/artifacts/commands.d.ts.map +1 -0
- package/lib/artifacts/commands.js +75 -0
- package/lib/artifacts/commands.js.map +1 -0
- package/lib/artifacts/index.d.ts +3 -0
- package/lib/artifacts/index.d.ts.map +1 -0
- package/lib/artifacts/index.js +33 -0
- package/lib/artifacts/index.js.map +1 -0
- package/lib/client.d.ts +12 -0
- package/lib/client.d.ts.map +1 -0
- package/lib/client.js +44 -0
- package/lib/client.js.map +1 -0
- package/lib/codegen/CodeBuilder.d.ts +16 -0
- package/lib/codegen/CodeBuilder.d.ts.map +1 -0
- package/lib/codegen/CodeBuilder.js +115 -0
- package/lib/codegen/CodeBuilder.js.map +1 -0
- package/lib/codegen/InteractionVersion.d.ts +29 -0
- package/lib/codegen/InteractionVersion.d.ts.map +1 -0
- package/lib/codegen/InteractionVersion.js +94 -0
- package/lib/codegen/InteractionVersion.js.map +1 -0
- package/lib/codegen/index.d.ts +3 -0
- package/lib/codegen/index.d.ts.map +1 -0
- package/lib/codegen/index.js +30 -0
- package/lib/codegen/index.js.map +1 -0
- package/lib/codegen/template.d.ts +3 -0
- package/lib/codegen/template.d.ts.map +1 -0
- package/lib/codegen/template.js +28 -0
- package/lib/codegen/template.js.map +1 -0
- package/lib/codegen/utils.d.ts +2 -0
- package/lib/codegen/utils.d.ts.map +1 -0
- package/lib/codegen/utils.js +4 -0
- package/lib/codegen/utils.js.map +1 -0
- package/lib/datagen/index.d.ts +3 -0
- package/lib/datagen/index.d.ts.map +1 -0
- package/lib/datagen/index.js +81 -0
- package/lib/datagen/index.js.map +1 -0
- package/lib/envs/index.d.ts +3 -0
- package/lib/envs/index.d.ts.map +1 -0
- package/lib/envs/index.js +23 -0
- package/lib/envs/index.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +181 -0
- package/lib/index.js.map +1 -0
- package/lib/interactions/index.d.ts +3 -0
- package/lib/interactions/index.d.ts.map +1 -0
- package/lib/interactions/index.js +35 -0
- package/lib/interactions/index.js.map +1 -0
- package/lib/memory/index.d.ts +3 -0
- package/lib/memory/index.d.ts.map +1 -0
- package/lib/memory/index.js +15 -0
- package/lib/memory/index.js.map +1 -0
- package/lib/objects/commands.d.ts +15 -0
- package/lib/objects/commands.d.ts.map +1 -0
- package/lib/objects/commands.js +273 -0
- package/lib/objects/commands.js.map +1 -0
- package/lib/objects/index.d.ts +3 -0
- package/lib/objects/index.d.ts.map +1 -0
- package/lib/objects/index.js +43 -0
- package/lib/objects/index.js.map +1 -0
- package/lib/package.d.ts +8 -0
- package/lib/package.d.ts.map +1 -0
- package/lib/package.js +63 -0
- package/lib/package.js.map +1 -0
- package/lib/profiles/commands.d.ts +20 -0
- package/lib/profiles/commands.d.ts.map +1 -0
- package/lib/profiles/commands.js +207 -0
- package/lib/profiles/commands.js.map +1 -0
- package/lib/profiles/index.d.ts +65 -0
- package/lib/profiles/index.d.ts.map +1 -0
- package/lib/profiles/index.js +324 -0
- package/lib/profiles/index.js.map +1 -0
- package/lib/profiles/server/cors.d.ts +3 -0
- package/lib/profiles/server/cors.d.ts.map +1 -0
- package/lib/profiles/server/cors.js +22 -0
- package/lib/profiles/server/cors.js.map +1 -0
- package/lib/profiles/server/index.d.ts +12 -0
- package/lib/profiles/server/index.d.ts.map +1 -0
- package/lib/profiles/server/index.js +134 -0
- package/lib/profiles/server/index.js.map +1 -0
- package/lib/profiles/server/server.d.ts +4 -0
- package/lib/profiles/server/server.d.ts.map +1 -0
- package/lib/profiles/server/server.js +32 -0
- package/lib/profiles/server/server.js.map +1 -0
- package/lib/projects/index.d.ts +3 -0
- package/lib/projects/index.d.ts.map +1 -0
- package/lib/projects/index.js +17 -0
- package/lib/projects/index.js.map +1 -0
- package/lib/run/executor.d.ts +22 -0
- package/lib/run/executor.d.ts.map +1 -0
- package/lib/run/executor.js +182 -0
- package/lib/run/executor.js.map +1 -0
- package/lib/run/index.d.ts +3 -0
- package/lib/run/index.d.ts.map +1 -0
- package/lib/run/index.js +192 -0
- package/lib/run/index.js.map +1 -0
- package/lib/runs/index.d.ts +3 -0
- package/lib/runs/index.d.ts.map +1 -0
- package/lib/runs/index.js +48 -0
- package/lib/runs/index.js.map +1 -0
- package/lib/utils/console.d.ts +42 -0
- package/lib/utils/console.d.ts.map +1 -0
- package/lib/utils/console.js +256 -0
- package/lib/utils/console.js.map +1 -0
- package/lib/utils/stdio.d.ts +7 -0
- package/lib/utils/stdio.d.ts.map +1 -0
- package/lib/utils/stdio.js +35 -0
- package/lib/utils/stdio.js.map +1 -0
- package/lib/worker/commands.d.ts +11 -0
- package/lib/worker/commands.d.ts.map +1 -0
- package/lib/worker/commands.js +173 -0
- package/lib/worker/commands.js.map +1 -0
- package/lib/worker/connect.d.ts +7 -0
- package/lib/worker/connect.d.ts.map +1 -0
- package/lib/worker/connect.js +68 -0
- package/lib/worker/connect.js.map +1 -0
- package/lib/worker/docker-credential.d.ts +2 -0
- package/lib/worker/docker-credential.d.ts.map +1 -0
- package/lib/worker/docker-credential.js +50 -0
- package/lib/worker/docker-credential.js.map +1 -0
- package/lib/worker/docker.d.ts +10 -0
- package/lib/worker/docker.d.ts.map +1 -0
- package/lib/worker/docker.js +93 -0
- package/lib/worker/docker.js.map +1 -0
- package/lib/worker/index.d.ts +3 -0
- package/lib/worker/index.d.ts.map +1 -0
- package/lib/worker/index.js +90 -0
- package/lib/worker/index.js.map +1 -0
- package/lib/worker/project.d.ts +58 -0
- package/lib/worker/project.d.ts.map +1 -0
- package/lib/worker/project.js +148 -0
- package/lib/worker/project.js.map +1 -0
- package/lib/worker/refresh.d.ts +6 -0
- package/lib/worker/refresh.d.ts.map +1 -0
- package/lib/worker/refresh.js +47 -0
- package/lib/worker/refresh.js.map +1 -0
- package/lib/worker/registry.d.ts +7 -0
- package/lib/worker/registry.d.ts.map +1 -0
- package/lib/worker/registry.js +47 -0
- package/lib/worker/registry.js.map +1 -0
- package/lib/worker/version.d.ts +2 -0
- package/lib/worker/version.d.ts.map +1 -0
- package/lib/worker/version.js +4 -0
- package/lib/worker/version.js.map +1 -0
- package/lib/workflows/commands.d.ts +14 -0
- package/lib/workflows/commands.d.ts.map +1 -0
- package/lib/workflows/commands.js +243 -0
- package/lib/workflows/commands.js.map +1 -0
- package/lib/workflows/index.d.ts +3 -0
- package/lib/workflows/index.d.ts.map +1 -0
- package/lib/workflows/index.js +117 -0
- package/lib/workflows/index.js.map +1 -0
- package/lib/workflows/json-loader.d.ts +3 -0
- package/lib/workflows/json-loader.d.ts.map +1 -0
- package/lib/workflows/json-loader.js +16 -0
- package/lib/workflows/json-loader.js.map +1 -0
- package/lib/workflows/streams.d.ts +2 -0
- package/lib/workflows/streams.d.ts.map +1 -0
- package/lib/workflows/streams.js +423 -0
- package/lib/workflows/streams.js.map +1 -0
- package/lib/workflows/ts-loader.d.ts +3 -0
- package/lib/workflows/ts-loader.d.ts.map +1 -0
- package/lib/workflows/ts-loader.js +94 -0
- package/lib/workflows/ts-loader.js.map +1 -0
- package/lib/workflows/validation.d.ts +6 -0
- package/lib/workflows/validation.d.ts.map +1 -0
- package/lib/workflows/validation.js +22 -0
- package/lib/workflows/validation.js.map +1 -0
- package/package.json +73 -0
- package/templates/index.tpl +4 -0
- package/templates/interaction.tpl +16 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import ansiColors from "ansi-colors";
|
|
2
|
+
import ansiEscapes from "ansi-escapes";
|
|
3
|
+
import { onExit } from "signal-exit";
|
|
4
|
+
const spinners = {
|
|
5
|
+
"dots": {
|
|
6
|
+
"interval": 200,
|
|
7
|
+
"frames": [
|
|
8
|
+
". ",
|
|
9
|
+
".. ",
|
|
10
|
+
"...",
|
|
11
|
+
" ..",
|
|
12
|
+
" .",
|
|
13
|
+
" "
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"bar": {
|
|
17
|
+
"interval": 80,
|
|
18
|
+
"frames": [
|
|
19
|
+
"[ ]",
|
|
20
|
+
"[= ]",
|
|
21
|
+
"[== ]",
|
|
22
|
+
"[=== ]",
|
|
23
|
+
"[====]",
|
|
24
|
+
"[ ===]",
|
|
25
|
+
"[ ==]",
|
|
26
|
+
"[ =]",
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
export class Spinner {
|
|
31
|
+
constructor(name = 'dots', stream) {
|
|
32
|
+
Object.defineProperty(this, "data", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true,
|
|
36
|
+
value: void 0
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(this, "log", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
configurable: true,
|
|
41
|
+
writable: true,
|
|
42
|
+
value: void 0
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(this, "timer", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
configurable: true,
|
|
47
|
+
writable: true,
|
|
48
|
+
value: void 0
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(this, "isRunning", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
configurable: true,
|
|
53
|
+
writable: true,
|
|
54
|
+
value: false
|
|
55
|
+
});
|
|
56
|
+
Object.defineProperty(this, "style", {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
configurable: true,
|
|
59
|
+
writable: true,
|
|
60
|
+
value: void 0
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(this, "_prefix", {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
configurable: true,
|
|
65
|
+
writable: true,
|
|
66
|
+
value: ''
|
|
67
|
+
});
|
|
68
|
+
Object.defineProperty(this, "_suffix", {
|
|
69
|
+
enumerable: true,
|
|
70
|
+
configurable: true,
|
|
71
|
+
writable: true,
|
|
72
|
+
value: ''
|
|
73
|
+
});
|
|
74
|
+
Object.defineProperty(this, "_restoreCursor", {
|
|
75
|
+
enumerable: true,
|
|
76
|
+
configurable: true,
|
|
77
|
+
writable: true,
|
|
78
|
+
value: false
|
|
79
|
+
});
|
|
80
|
+
// Signal handlers for proper cleanup
|
|
81
|
+
Object.defineProperty(this, "signalHandlers", {
|
|
82
|
+
enumerable: true,
|
|
83
|
+
configurable: true,
|
|
84
|
+
writable: true,
|
|
85
|
+
value: {}
|
|
86
|
+
});
|
|
87
|
+
this.data = spinners[name];
|
|
88
|
+
this.log = new LogUpdate(stream);
|
|
89
|
+
// Set up interrupt handlers to ensure cleanup
|
|
90
|
+
this.setupSignalHandlers();
|
|
91
|
+
}
|
|
92
|
+
setupSignalHandlers() {
|
|
93
|
+
// Create signal handlers for proper cleanup
|
|
94
|
+
const handleSignal = () => {
|
|
95
|
+
this.done(false);
|
|
96
|
+
// Avoid adding a newline since that's handled by the system usually
|
|
97
|
+
};
|
|
98
|
+
// Store handlers so we can remove them later
|
|
99
|
+
this.signalHandlers['SIGINT'] = handleSignal;
|
|
100
|
+
this.signalHandlers['SIGTERM'] = handleSignal;
|
|
101
|
+
// Register handlers
|
|
102
|
+
process.on('SIGINT', handleSignal);
|
|
103
|
+
process.on('SIGTERM', handleSignal);
|
|
104
|
+
}
|
|
105
|
+
removeSignalHandlers() {
|
|
106
|
+
// Remove all signal handlers
|
|
107
|
+
Object.entries(this.signalHandlers).forEach(([signal, handler]) => {
|
|
108
|
+
process.off(signal, handler);
|
|
109
|
+
});
|
|
110
|
+
// Clear handlers
|
|
111
|
+
this.signalHandlers = {};
|
|
112
|
+
}
|
|
113
|
+
withStyle(style) {
|
|
114
|
+
this.style = style;
|
|
115
|
+
return this;
|
|
116
|
+
}
|
|
117
|
+
set prefix(value) {
|
|
118
|
+
this._prefix = value;
|
|
119
|
+
}
|
|
120
|
+
get prefix() {
|
|
121
|
+
return this._prefix;
|
|
122
|
+
}
|
|
123
|
+
set suffix(value) {
|
|
124
|
+
this._suffix = value;
|
|
125
|
+
}
|
|
126
|
+
get suffix() {
|
|
127
|
+
return this._suffix;
|
|
128
|
+
}
|
|
129
|
+
start(shodHideCursor = true) {
|
|
130
|
+
// Don't start if already running
|
|
131
|
+
if (this.isRunning)
|
|
132
|
+
return this;
|
|
133
|
+
this.isRunning = true;
|
|
134
|
+
if (shodHideCursor) {
|
|
135
|
+
hideCursor(this.log.stream);
|
|
136
|
+
this._restoreCursor = true;
|
|
137
|
+
}
|
|
138
|
+
let i = 0;
|
|
139
|
+
this.timer = setInterval(() => {
|
|
140
|
+
if (!this.isRunning)
|
|
141
|
+
return;
|
|
142
|
+
try {
|
|
143
|
+
const frames = this.data.frames;
|
|
144
|
+
this.log.print(this.prefix + frames[++i % frames.length] + this.suffix);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
// If we can't update, stop the spinner to prevent console issues
|
|
148
|
+
this.done(false);
|
|
149
|
+
}
|
|
150
|
+
}, this.data.interval);
|
|
151
|
+
return this;
|
|
152
|
+
}
|
|
153
|
+
done(replacement = '') {
|
|
154
|
+
// Don't try to stop if already stopped
|
|
155
|
+
if (!this.isRunning)
|
|
156
|
+
return this;
|
|
157
|
+
this.isRunning = false;
|
|
158
|
+
if (this.timer) {
|
|
159
|
+
clearInterval(this.timer);
|
|
160
|
+
this.timer = undefined;
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
this.log.clear();
|
|
164
|
+
if (this._prefix) {
|
|
165
|
+
this.log.stream.write(this._prefix);
|
|
166
|
+
}
|
|
167
|
+
if (replacement === true) {
|
|
168
|
+
this.log.stream.write(ansiColors.green(ansiColors.symbols.check));
|
|
169
|
+
}
|
|
170
|
+
else if (replacement === false) {
|
|
171
|
+
this.log.stream.write(ansiColors.red(ansiColors.symbols.cross));
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.log.stream.write(replacement);
|
|
175
|
+
}
|
|
176
|
+
if (this._suffix) {
|
|
177
|
+
this.log.stream.write(this._suffix);
|
|
178
|
+
}
|
|
179
|
+
console.log(); // print a new line
|
|
180
|
+
if (this._restoreCursor) {
|
|
181
|
+
showCursor(this.log.stream);
|
|
182
|
+
this._restoreCursor = false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
// If an error occurs during cleanup, make a best effort to restore the cursor
|
|
187
|
+
try {
|
|
188
|
+
showCursor(this.log.stream);
|
|
189
|
+
}
|
|
190
|
+
catch (_) {
|
|
191
|
+
// Last resort - ignore errors in error handler
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Remove signal handlers to avoid multiple handling
|
|
195
|
+
this.removeSignalHandlers();
|
|
196
|
+
return this;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
export class LogUpdate {
|
|
200
|
+
constructor(stream) {
|
|
201
|
+
Object.defineProperty(this, "stream", {
|
|
202
|
+
enumerable: true,
|
|
203
|
+
configurable: true,
|
|
204
|
+
writable: true,
|
|
205
|
+
value: void 0
|
|
206
|
+
});
|
|
207
|
+
Object.defineProperty(this, "last", {
|
|
208
|
+
enumerable: true,
|
|
209
|
+
configurable: true,
|
|
210
|
+
writable: true,
|
|
211
|
+
value: void 0
|
|
212
|
+
});
|
|
213
|
+
this.stream = stream || process.stdout;
|
|
214
|
+
}
|
|
215
|
+
clear() {
|
|
216
|
+
if (this.last && this.stream.isTTY) {
|
|
217
|
+
this.stream.clearLine(0);
|
|
218
|
+
this.stream.cursorTo(0);
|
|
219
|
+
}
|
|
220
|
+
return this;
|
|
221
|
+
}
|
|
222
|
+
print(text) {
|
|
223
|
+
this.clear();
|
|
224
|
+
this.last = text;
|
|
225
|
+
this.stream.write(text);
|
|
226
|
+
return this;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const streamsToRestore = [];
|
|
230
|
+
let restoreCursorIsRegistered = false;
|
|
231
|
+
export function toggleCursor(show, stream = process.stdout) {
|
|
232
|
+
show ? showCursor(stream) : hideCursor(stream);
|
|
233
|
+
}
|
|
234
|
+
export function showCursor(stream = process.stdout) {
|
|
235
|
+
const i = streamsToRestore.findIndex((s) => s === stream);
|
|
236
|
+
if (i > -1) {
|
|
237
|
+
streamsToRestore.splice(i, 1);
|
|
238
|
+
}
|
|
239
|
+
stream.write(ansiEscapes.cursorShow);
|
|
240
|
+
}
|
|
241
|
+
export function hideCursor(stream = process.stdout) {
|
|
242
|
+
if (!streamsToRestore.includes(stream)) {
|
|
243
|
+
restoreCursorOnExit();
|
|
244
|
+
streamsToRestore.push(stream);
|
|
245
|
+
}
|
|
246
|
+
stream.write(ansiEscapes.cursorHide);
|
|
247
|
+
}
|
|
248
|
+
export function restoreCursorOnExit() {
|
|
249
|
+
if (!restoreCursorIsRegistered) {
|
|
250
|
+
restoreCursorIsRegistered = true;
|
|
251
|
+
onExit(() => {
|
|
252
|
+
streamsToRestore.forEach(stream => showCursor(stream));
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/utils/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function readStdin(): Promise<string>;
|
|
2
|
+
export declare function readFile(file: string): string;
|
|
3
|
+
export declare function writeFile(file: string, data: string): void;
|
|
4
|
+
export declare function readJsonFile(file: string): any;
|
|
5
|
+
export declare function writeJsonFile(file: string, data: object): void;
|
|
6
|
+
export declare function makeDir(dir: string): string | undefined;
|
|
7
|
+
//# sourceMappingURL=stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/utils/stdio.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,oBAU9B;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,UAEpC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAEnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,OAExC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAEvD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,sBAQlC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
2
|
+
export async function readStdin() {
|
|
3
|
+
const chunks = [];
|
|
4
|
+
const stdin = process.stdin;
|
|
5
|
+
stdin.resume();
|
|
6
|
+
for await (const buf of stdin) {
|
|
7
|
+
if (buf) {
|
|
8
|
+
chunks.push(buf.toString());
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return chunks.join('');
|
|
12
|
+
}
|
|
13
|
+
export function readFile(file) {
|
|
14
|
+
return readFileSync(file, 'utf8');
|
|
15
|
+
}
|
|
16
|
+
export function writeFile(file, data) {
|
|
17
|
+
return writeFileSync(file, data, 'utf8');
|
|
18
|
+
}
|
|
19
|
+
export function readJsonFile(file) {
|
|
20
|
+
return JSON.parse(readFile(file));
|
|
21
|
+
}
|
|
22
|
+
export function writeJsonFile(file, data) {
|
|
23
|
+
return writeFile(file, JSON.stringify(data, null, 4));
|
|
24
|
+
}
|
|
25
|
+
export function makeDir(dir) {
|
|
26
|
+
try {
|
|
27
|
+
return mkdirSync(dir, { recursive: true });
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
if (err.code !== 'EEXIST') {
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/utils/stdio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,SAAS;IAC3B,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,KAAK,CAAC,MAAM,EAAE,CAAC;IACf,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY;IAChD,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY;IACpD,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW;IAC/B,IAAI,CAAC;QACD,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare enum PublishMode {
|
|
2
|
+
Push = 1,
|
|
3
|
+
Deploy = 2,
|
|
4
|
+
PushAndDeploy = 3
|
|
5
|
+
}
|
|
6
|
+
export declare function publish(version: string, mode: PublishMode): Promise<void>;
|
|
7
|
+
export declare function build(contextDir?: string): Promise<void>;
|
|
8
|
+
export declare function release(version: string): Promise<void>;
|
|
9
|
+
export declare function run(version?: string): void;
|
|
10
|
+
export declare function listVersions(): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/worker/commands.ts"],"names":[],"mappings":"AAYA,oBAAY,WAAW;IACnB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,aAAa,IAAI;CACpB;AA0CD,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,iBAiB/D;AAED,wBAAsB,KAAK,CAAC,UAAU,SAAM,iBAgB3C;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,iBAU5C;AAED,wBAAgB,GAAG,CAAC,OAAO,GAAE,MAAuB,QAmBnD;AAED,wBAAsB,YAAY,kBAmCjC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import colors from "ansi-colors";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import os from "os";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import { getClient } from "../client.js";
|
|
6
|
+
import { config, getCloudTypeFromConfigUrl } from "../profiles/index.js";
|
|
7
|
+
import { runDocker, runDockerWithOutput, runDockerWithWorkerConfig } from "./docker.js";
|
|
8
|
+
import { WorkerProject } from './project.js';
|
|
9
|
+
import { tryRefreshProjectToken } from './refresh.js';
|
|
10
|
+
import { updateNpmrc } from "./registry.js";
|
|
11
|
+
import { validateVersion } from './version.js';
|
|
12
|
+
export var PublishMode;
|
|
13
|
+
(function (PublishMode) {
|
|
14
|
+
PublishMode[PublishMode["Push"] = 1] = "Push";
|
|
15
|
+
PublishMode[PublishMode["Deploy"] = 2] = "Deploy";
|
|
16
|
+
PublishMode[PublishMode["PushAndDeploy"] = 3] = "PushAndDeploy";
|
|
17
|
+
})(PublishMode || (PublishMode = {}));
|
|
18
|
+
function shouldDeploy(mode) {
|
|
19
|
+
return mode & PublishMode.Deploy;
|
|
20
|
+
}
|
|
21
|
+
function shouldPush(mode) {
|
|
22
|
+
return mode & PublishMode.Push;
|
|
23
|
+
}
|
|
24
|
+
// we need to build for the linux/amd64 platform (this is the platform used in Vertesia k8s)
|
|
25
|
+
const TARGET_PLATFORM = "linux/amd64";
|
|
26
|
+
const LATEST_VERSION = "latest";
|
|
27
|
+
async function pushImage(project, version) {
|
|
28
|
+
// we need to refresh the profile token if needed since
|
|
29
|
+
// the docker credentials helper are connecting to studio.
|
|
30
|
+
// this will refresh the profile token if needed by asking the user to reconnect
|
|
31
|
+
await tryRefreshProjectToken(project);
|
|
32
|
+
const localTag = project.getLocalDockerTag(version);
|
|
33
|
+
const remoteTag = project.getVertesiaDockerTag(version);
|
|
34
|
+
// push the image to the registry
|
|
35
|
+
console.log(`Pushing docker image ${remoteTag}`);
|
|
36
|
+
runDocker(['tag', localTag, remoteTag]);
|
|
37
|
+
runDockerWithWorkerConfig(['push', remoteTag]);
|
|
38
|
+
}
|
|
39
|
+
async function triggerDeploy(profile, project, version) {
|
|
40
|
+
const environment = getCloudTypeFromConfigUrl(profile.config_url);
|
|
41
|
+
const client = await getClient();
|
|
42
|
+
const workerId = project.getWorkerId();
|
|
43
|
+
console.log(`Deploy worker ${workerId}:${version} to ${environment}`);
|
|
44
|
+
await client.store.workers.deploy({
|
|
45
|
+
environment,
|
|
46
|
+
workerId: project.getWorkerId(),
|
|
47
|
+
version,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export async function publish(version, mode) {
|
|
51
|
+
if (!validateVersion(version)) {
|
|
52
|
+
console.log("Invalid version format: " + version + ". Use major.minor.patch[-modifier] format.");
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
if (!config.current) {
|
|
56
|
+
console.log("No active profile is defined.");
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const profile = config.current;
|
|
60
|
+
const project = new WorkerProject();
|
|
61
|
+
if (shouldPush(mode)) {
|
|
62
|
+
await pushImage(project, version);
|
|
63
|
+
}
|
|
64
|
+
if (shouldDeploy(mode)) {
|
|
65
|
+
await triggerDeploy(profile, project, version);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export async function build(contextDir = '.') {
|
|
69
|
+
const project = new WorkerProject();
|
|
70
|
+
const refreshResult = await tryRefreshProjectToken(project);
|
|
71
|
+
if (refreshResult) {
|
|
72
|
+
await updateNpmrc(project, refreshResult.profile);
|
|
73
|
+
}
|
|
74
|
+
const tag = project.getLocalDockerTag(LATEST_VERSION);
|
|
75
|
+
const args = ['buildx', 'build', '--platform', TARGET_PLATFORM, '-t', tag];
|
|
76
|
+
if (contextDir !== '.') { // not the working directory
|
|
77
|
+
// use the dockerfile in the current working directory
|
|
78
|
+
args.push('-f', 'Dockerfile');
|
|
79
|
+
}
|
|
80
|
+
console.log(`Building docker image: ${tag}`);
|
|
81
|
+
runDocker([...args, contextDir]);
|
|
82
|
+
}
|
|
83
|
+
export async function release(version) {
|
|
84
|
+
if (!validateVersion(version)) {
|
|
85
|
+
console.log("Invalid version format: " + version + ". Use major.minor.patch[-modifier] format.");
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
const project = new WorkerProject();
|
|
89
|
+
const latestTag = project.getLocalDockerTag(LATEST_VERSION);
|
|
90
|
+
const versionTag = project.getLocalDockerTag(version);
|
|
91
|
+
runDocker(['tag', latestTag, versionTag]);
|
|
92
|
+
}
|
|
93
|
+
export function run(version = LATEST_VERSION) {
|
|
94
|
+
if (version !== LATEST_VERSION && !validateVersion(version)) {
|
|
95
|
+
console.log("Invalid version format: " + version + ". Use major.minor.patch[-modifier] format.");
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
const project = new WorkerProject();
|
|
99
|
+
const tag = project.getLocalDockerTag(version);
|
|
100
|
+
// we need to inject the .env file into the container
|
|
101
|
+
// and to get the google credentials needed by the worker
|
|
102
|
+
// TODO: the google credentials will only work with vertesia users ...
|
|
103
|
+
// we need to specify the target platform to force qemu emulation for user on other platforms
|
|
104
|
+
const args = ['run', '--platform', TARGET_PLATFORM, '--env-file', '.env'];
|
|
105
|
+
const googleCredsFile = getGoogleCredentialsFile();
|
|
106
|
+
if (googleCredsFile) {
|
|
107
|
+
args.push('-v', `${googleCredsFile}:/tmp/google-credentials.json`);
|
|
108
|
+
args.push('-e', 'GOOGLE_APPLICATION_CREDENTIALS=/tmp/google-credentials.json');
|
|
109
|
+
}
|
|
110
|
+
args.push(tag);
|
|
111
|
+
runDocker(args);
|
|
112
|
+
}
|
|
113
|
+
export async function listVersions() {
|
|
114
|
+
const project = new WorkerProject();
|
|
115
|
+
if (!project.packageJson.vertesia?.image) {
|
|
116
|
+
console.error("Invalid package.json. Missing vertesia.image configuration.");
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
const out = runDockerWithOutput(["images", "--format", "{{.Repository}}:{{.Tag}}"]);
|
|
120
|
+
const lines = out.trim().split('\n');
|
|
121
|
+
const localTagPrefix = project.getLocalDockerTag("");
|
|
122
|
+
const remoteTagPrefix = project.getVertesiaDockerTag("");
|
|
123
|
+
const localTags = {};
|
|
124
|
+
const remoteTags = {};
|
|
125
|
+
const versions = new Set();
|
|
126
|
+
for (const line of lines) {
|
|
127
|
+
const i = line.indexOf(':');
|
|
128
|
+
if (i > 0) {
|
|
129
|
+
const name = line.substring(0, i);
|
|
130
|
+
const version = line.substring(i + 1);
|
|
131
|
+
if (line.startsWith(localTagPrefix)) {
|
|
132
|
+
localTags[version] = { version, name };
|
|
133
|
+
versions.add(version);
|
|
134
|
+
}
|
|
135
|
+
else if (line.startsWith(remoteTagPrefix)) {
|
|
136
|
+
remoteTags[version] = { version, name };
|
|
137
|
+
versions.add(version);
|
|
138
|
+
} // else ignore
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
versions.delete(LATEST_VERSION);
|
|
142
|
+
printVersion(LATEST_VERSION, localTags[LATEST_VERSION], remoteTags[LATEST_VERSION]);
|
|
143
|
+
// sort desc
|
|
144
|
+
Array.from(versions).sort((a, b) => b.localeCompare(a)).forEach(v => {
|
|
145
|
+
printVersion(v, localTags[v], remoteTags[v]);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function printVersion(version, local, remote) {
|
|
149
|
+
if (!local && !remote)
|
|
150
|
+
return;
|
|
151
|
+
const isLatest = version === LATEST_VERSION;
|
|
152
|
+
console.log(colors.bold(isLatest ? version : `v${version}`));
|
|
153
|
+
console.log(`\t${colors.green("Local tag:")} ${local ? local.name + ':' + version : 'N/A'}`);
|
|
154
|
+
if (remote) {
|
|
155
|
+
console.log(`\t${colors.green("published to:")} ${remote.name}:${version}`);
|
|
156
|
+
}
|
|
157
|
+
else if (isLatest) {
|
|
158
|
+
console.log(colors.dim("\tcannot be published"));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
console.log(colors.dim("\tnot published"));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function getGoogleCredentialsFile() {
|
|
165
|
+
const file = join(os.homedir(), '.config/gcloud/application_default_credentials.json');
|
|
166
|
+
if (fs.existsSync(file)) {
|
|
167
|
+
return file;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/worker/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/worker/connect.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,iBAwC7D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import enquirer from "enquirer";
|
|
2
|
+
import { createProfile, updateProfile } from "../profiles/commands.js";
|
|
3
|
+
import { config, shouldRefreshProfileToken } from "../profiles/index.js";
|
|
4
|
+
import { WorkerProject } from "./project.js";
|
|
5
|
+
import { updateNpmrc } from "./registry.js";
|
|
6
|
+
const { prompt } = enquirer;
|
|
7
|
+
export async function connectToProject(options) {
|
|
8
|
+
const allowInteraction = !options.nonInteractive;
|
|
9
|
+
const project = new WorkerProject();
|
|
10
|
+
const pkg = project.packageJson;
|
|
11
|
+
let profileName = options.profile || pkg.vertesia.profile;
|
|
12
|
+
const onAuthenticationDone = async (result) => {
|
|
13
|
+
if (result) {
|
|
14
|
+
await updateNpmrc(project, result.profile);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
try {
|
|
18
|
+
if (allowInteraction && !profileName) {
|
|
19
|
+
profileName = await askProfileName();
|
|
20
|
+
if (!profileName) {
|
|
21
|
+
// create a new profile
|
|
22
|
+
profileName = await createProfile(undefined, { onResult: onAuthenticationDone });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (!profileName) {
|
|
26
|
+
console.log('Profile not specified. When using --non-interactive mode you may want to specify a profile');
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const profile = config.getProfile(profileName);
|
|
30
|
+
if (!profile) {
|
|
31
|
+
console.log('Profile not found:', profileName);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
if (allowInteraction && shouldRefreshProfileToken(profile, 10)) {
|
|
35
|
+
console.log("Refreshing auth token for profile:", profileName);
|
|
36
|
+
await updateProfile(profileName, onAuthenticationDone);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
await updateNpmrc(project, profileName);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
if (pkg.vertesia.profile !== profileName) {
|
|
44
|
+
// save package.json
|
|
45
|
+
pkg.vertesia.profile = profileName;
|
|
46
|
+
pkg.save();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function askProfileName() {
|
|
51
|
+
const profiles = config.profiles.map(p => p.name);
|
|
52
|
+
if (profiles.length > 0) {
|
|
53
|
+
const newProfile = 'Create new profile';
|
|
54
|
+
profiles.push(newProfile);
|
|
55
|
+
const answer = await prompt({
|
|
56
|
+
name: 'profile',
|
|
57
|
+
type: 'select',
|
|
58
|
+
message: "Select a profile to use when connecting.",
|
|
59
|
+
initial: profiles.length - 1,
|
|
60
|
+
choices: profiles,
|
|
61
|
+
});
|
|
62
|
+
if (newProfile !== answer.profile) {
|
|
63
|
+
return answer.profile; // use existing
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return undefined; // create new profile
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/worker/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-credential.d.ts","sourceRoot":"","sources":["../../src/worker/docker-credential.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getDockerCredentials } from "./docker.js";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
// Function to handle other commands (`store`, `erase`, `list`)
|
|
4
|
+
function handleNoOp() {
|
|
5
|
+
// Docker expects these commands to exit with 0
|
|
6
|
+
process.exit(0);
|
|
7
|
+
}
|
|
8
|
+
// Function to handle the `get` command
|
|
9
|
+
async function handleGet(serverUrl) {
|
|
10
|
+
// we support us-docker.pkg.dev for now
|
|
11
|
+
if (!serverUrl.endsWith("-docker.pkg.dev")) {
|
|
12
|
+
process.exit(0); // ignore
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
const credentials = await getDockerCredentials(serverUrl);
|
|
16
|
+
if (process.env.DEBUG_DOCKER_CREDS) {
|
|
17
|
+
fs.writeFileSync("./docker-creds-helper.log", "Get token for registry " + serverUrl + " => " + JSON.stringify(credentials, null, 2), "utf8");
|
|
18
|
+
}
|
|
19
|
+
process.stdout.write(JSON.stringify(credentials));
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
fs.writeFileSync("./docker-creds-helper-error.log", "Get token for registry " + serverUrl + " => " + JSON.stringify(error, null, 2), "utf8");
|
|
23
|
+
console.error("Error fetching credentials:", error.message);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Main function to handle input
|
|
28
|
+
function main() {
|
|
29
|
+
const command = process.argv[2];
|
|
30
|
+
if (!command) {
|
|
31
|
+
console.error("No command provided");
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
switch (command) {
|
|
35
|
+
case "get":
|
|
36
|
+
const stdin = fs.readFileSync(0, "utf-8");
|
|
37
|
+
handleGet(stdin.trim());
|
|
38
|
+
break;
|
|
39
|
+
case "store":
|
|
40
|
+
case "erase":
|
|
41
|
+
case "list":
|
|
42
|
+
handleNoOp();
|
|
43
|
+
break;
|
|
44
|
+
default:
|
|
45
|
+
console.error(`Unknown command: ${command}`);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
main();
|
|
50
|
+
//# sourceMappingURL=docker-credential.js.map
|