@vertesia/cli 0.82.1 → 0.82.3

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.
Files changed (177) hide show
  1. package/lib/apps/commands.d.ts +11 -0
  2. package/lib/apps/commands.d.ts.map +1 -0
  3. package/lib/apps/commands.js +246 -0
  4. package/lib/apps/commands.js.map +1 -0
  5. package/lib/apps/index.d.ts +3 -0
  6. package/lib/apps/index.d.ts.map +1 -0
  7. package/lib/apps/index.js +93 -0
  8. package/lib/apps/index.js.map +1 -0
  9. package/lib/artifacts/commands.d.ts +6 -0
  10. package/lib/artifacts/commands.d.ts.map +1 -0
  11. package/lib/artifacts/commands.js +75 -0
  12. package/lib/artifacts/commands.js.map +1 -0
  13. package/lib/artifacts/index.d.ts +3 -0
  14. package/lib/artifacts/index.d.ts.map +1 -0
  15. package/lib/artifacts/index.js +33 -0
  16. package/lib/artifacts/index.js.map +1 -0
  17. package/lib/client.d.ts +12 -0
  18. package/lib/client.d.ts.map +1 -0
  19. package/lib/client.js +44 -0
  20. package/lib/client.js.map +1 -0
  21. package/lib/codegen/CodeBuilder.d.ts +16 -0
  22. package/lib/codegen/CodeBuilder.d.ts.map +1 -0
  23. package/lib/codegen/CodeBuilder.js +115 -0
  24. package/lib/codegen/CodeBuilder.js.map +1 -0
  25. package/lib/codegen/InteractionVersion.d.ts +29 -0
  26. package/lib/codegen/InteractionVersion.d.ts.map +1 -0
  27. package/lib/codegen/InteractionVersion.js +94 -0
  28. package/lib/codegen/InteractionVersion.js.map +1 -0
  29. package/lib/codegen/index.d.ts +3 -0
  30. package/lib/codegen/index.d.ts.map +1 -0
  31. package/lib/codegen/index.js +30 -0
  32. package/lib/codegen/index.js.map +1 -0
  33. package/lib/codegen/template.d.ts +3 -0
  34. package/lib/codegen/template.d.ts.map +1 -0
  35. package/lib/codegen/template.js +28 -0
  36. package/lib/codegen/template.js.map +1 -0
  37. package/lib/codegen/utils.d.ts +2 -0
  38. package/lib/codegen/utils.d.ts.map +1 -0
  39. package/lib/codegen/utils.js +4 -0
  40. package/lib/codegen/utils.js.map +1 -0
  41. package/lib/datagen/index.d.ts +3 -0
  42. package/lib/datagen/index.d.ts.map +1 -0
  43. package/lib/datagen/index.js +81 -0
  44. package/lib/datagen/index.js.map +1 -0
  45. package/lib/envs/index.d.ts +3 -0
  46. package/lib/envs/index.d.ts.map +1 -0
  47. package/lib/envs/index.js +23 -0
  48. package/lib/envs/index.js.map +1 -0
  49. package/lib/index.d.ts +2 -0
  50. package/lib/index.d.ts.map +1 -0
  51. package/lib/index.js +181 -0
  52. package/lib/index.js.map +1 -0
  53. package/lib/interactions/index.d.ts +3 -0
  54. package/lib/interactions/index.d.ts.map +1 -0
  55. package/lib/interactions/index.js +35 -0
  56. package/lib/interactions/index.js.map +1 -0
  57. package/lib/memory/index.d.ts +3 -0
  58. package/lib/memory/index.d.ts.map +1 -0
  59. package/lib/memory/index.js +15 -0
  60. package/lib/memory/index.js.map +1 -0
  61. package/lib/objects/commands.d.ts +15 -0
  62. package/lib/objects/commands.d.ts.map +1 -0
  63. package/lib/objects/commands.js +273 -0
  64. package/lib/objects/commands.js.map +1 -0
  65. package/lib/objects/index.d.ts +3 -0
  66. package/lib/objects/index.d.ts.map +1 -0
  67. package/lib/objects/index.js +43 -0
  68. package/lib/objects/index.js.map +1 -0
  69. package/lib/package.d.ts +8 -0
  70. package/lib/package.d.ts.map +1 -0
  71. package/lib/package.js +63 -0
  72. package/lib/package.js.map +1 -0
  73. package/lib/profiles/commands.d.ts +20 -0
  74. package/lib/profiles/commands.d.ts.map +1 -0
  75. package/lib/profiles/commands.js +191 -0
  76. package/lib/profiles/commands.js.map +1 -0
  77. package/lib/profiles/index.d.ts +65 -0
  78. package/lib/profiles/index.d.ts.map +1 -0
  79. package/lib/profiles/index.js +324 -0
  80. package/lib/profiles/index.js.map +1 -0
  81. package/lib/profiles/server/cors.d.ts +3 -0
  82. package/lib/profiles/server/cors.d.ts.map +1 -0
  83. package/lib/profiles/server/cors.js +18 -0
  84. package/lib/profiles/server/cors.js.map +1 -0
  85. package/lib/profiles/server/index.d.ts +12 -0
  86. package/lib/profiles/server/index.d.ts.map +1 -0
  87. package/lib/profiles/server/index.js +134 -0
  88. package/lib/profiles/server/index.js.map +1 -0
  89. package/lib/profiles/server/server.d.ts +4 -0
  90. package/lib/profiles/server/server.d.ts.map +1 -0
  91. package/lib/profiles/server/server.js +32 -0
  92. package/lib/profiles/server/server.js.map +1 -0
  93. package/lib/projects/index.d.ts +3 -0
  94. package/lib/projects/index.d.ts.map +1 -0
  95. package/lib/projects/index.js +17 -0
  96. package/lib/projects/index.js.map +1 -0
  97. package/lib/run/executor.d.ts +22 -0
  98. package/lib/run/executor.d.ts.map +1 -0
  99. package/lib/run/executor.js +182 -0
  100. package/lib/run/executor.js.map +1 -0
  101. package/lib/run/index.d.ts +3 -0
  102. package/lib/run/index.d.ts.map +1 -0
  103. package/lib/run/index.js +192 -0
  104. package/lib/run/index.js.map +1 -0
  105. package/lib/runs/index.d.ts +3 -0
  106. package/lib/runs/index.d.ts.map +1 -0
  107. package/lib/runs/index.js +48 -0
  108. package/lib/runs/index.js.map +1 -0
  109. package/lib/utils/console.d.ts +42 -0
  110. package/lib/utils/console.d.ts.map +1 -0
  111. package/lib/utils/console.js +256 -0
  112. package/lib/utils/console.js.map +1 -0
  113. package/lib/utils/stdio.d.ts +7 -0
  114. package/lib/utils/stdio.d.ts.map +1 -0
  115. package/lib/utils/stdio.js +35 -0
  116. package/lib/utils/stdio.js.map +1 -0
  117. package/lib/worker/commands.d.ts +11 -0
  118. package/lib/worker/commands.d.ts.map +1 -0
  119. package/lib/worker/commands.js +173 -0
  120. package/lib/worker/commands.js.map +1 -0
  121. package/lib/worker/connect.d.ts +7 -0
  122. package/lib/worker/connect.d.ts.map +1 -0
  123. package/lib/worker/connect.js +68 -0
  124. package/lib/worker/connect.js.map +1 -0
  125. package/lib/worker/docker-credential.d.ts +2 -0
  126. package/lib/worker/docker-credential.d.ts.map +1 -0
  127. package/lib/worker/docker-credential.js +50 -0
  128. package/lib/worker/docker-credential.js.map +1 -0
  129. package/lib/worker/docker.d.ts +10 -0
  130. package/lib/worker/docker.d.ts.map +1 -0
  131. package/lib/worker/docker.js +93 -0
  132. package/lib/worker/docker.js.map +1 -0
  133. package/lib/worker/index.d.ts +3 -0
  134. package/lib/worker/index.d.ts.map +1 -0
  135. package/lib/worker/index.js +90 -0
  136. package/lib/worker/index.js.map +1 -0
  137. package/lib/worker/project.d.ts +58 -0
  138. package/lib/worker/project.d.ts.map +1 -0
  139. package/lib/worker/project.js +148 -0
  140. package/lib/worker/project.js.map +1 -0
  141. package/lib/worker/refresh.d.ts +6 -0
  142. package/lib/worker/refresh.d.ts.map +1 -0
  143. package/lib/worker/refresh.js +47 -0
  144. package/lib/worker/refresh.js.map +1 -0
  145. package/lib/worker/registry.d.ts +7 -0
  146. package/lib/worker/registry.d.ts.map +1 -0
  147. package/lib/worker/registry.js +47 -0
  148. package/lib/worker/registry.js.map +1 -0
  149. package/lib/worker/version.d.ts +2 -0
  150. package/lib/worker/version.d.ts.map +1 -0
  151. package/lib/worker/version.js +4 -0
  152. package/lib/worker/version.js.map +1 -0
  153. package/lib/workflows/commands.d.ts +14 -0
  154. package/lib/workflows/commands.d.ts.map +1 -0
  155. package/lib/workflows/commands.js +243 -0
  156. package/lib/workflows/commands.js.map +1 -0
  157. package/lib/workflows/index.d.ts +3 -0
  158. package/lib/workflows/index.d.ts.map +1 -0
  159. package/lib/workflows/index.js +117 -0
  160. package/lib/workflows/index.js.map +1 -0
  161. package/lib/workflows/json-loader.d.ts +3 -0
  162. package/lib/workflows/json-loader.d.ts.map +1 -0
  163. package/lib/workflows/json-loader.js +16 -0
  164. package/lib/workflows/json-loader.js.map +1 -0
  165. package/lib/workflows/streams.d.ts +2 -0
  166. package/lib/workflows/streams.d.ts.map +1 -0
  167. package/lib/workflows/streams.js +419 -0
  168. package/lib/workflows/streams.js.map +1 -0
  169. package/lib/workflows/ts-loader.d.ts +3 -0
  170. package/lib/workflows/ts-loader.d.ts.map +1 -0
  171. package/lib/workflows/ts-loader.js +94 -0
  172. package/lib/workflows/ts-loader.js.map +1 -0
  173. package/lib/workflows/validation.d.ts +6 -0
  174. package/lib/workflows/validation.d.ts.map +1 -0
  175. package/lib/workflows/validation.js +22 -0
  176. package/lib/workflows/validation.js.map +1 -0
  177. package/package.json +7 -7
@@ -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,7 @@
1
+ interface ConnectOptions {
2
+ nonInteractive?: boolean;
3
+ profile?: string;
4
+ }
5
+ export declare function connectToProject(options: ConnectOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=connect.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=docker-credential.d.ts.map
@@ -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