@milaboratories/pl-deployments 2.2.0 → 2.2.2
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/package.json +4 -4
- package/src/local/pl.test.ts +192 -192
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/pl-deployments",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"pl-version": "1.33.4",
|
|
5
5
|
"description": "MiLaboratories Platforma Backend code service run wrapper",
|
|
6
6
|
"engines": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"typescript": "~5.5.4",
|
|
42
42
|
"utility-types": "^3.11.0",
|
|
43
43
|
"vite": "^5.4.11",
|
|
44
|
-
"vitest": "^2.1.
|
|
44
|
+
"vitest": "^2.1.9",
|
|
45
45
|
"@milaboratories/eslint-config": "^1.0.4",
|
|
46
46
|
"@milaboratories/platforma-build-configs": "1.0.3"
|
|
47
47
|
},
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"undici": "~7.5.0",
|
|
54
54
|
"yaml": "^2.7.0",
|
|
55
55
|
"zod": "~3.23.8",
|
|
56
|
-
"@milaboratories/
|
|
57
|
-
"@milaboratories/
|
|
56
|
+
"@milaboratories/pl-config": "^1.4.10",
|
|
57
|
+
"@milaboratories/ts-helpers": "^1.3.0"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
60
|
"type-check": "tsc --noEmit --composite false",
|
package/src/local/pl.test.ts
CHANGED
|
@@ -139,120 +139,137 @@ const mergeDefaultOpsCases: {
|
|
|
139
139
|
};
|
|
140
140
|
expected: LocalPlOptionsFull;
|
|
141
141
|
}[] = [
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
142
|
+
{
|
|
143
|
+
name: 'should set default values when minimal input is provided',
|
|
144
|
+
input: {
|
|
145
|
+
ops: {
|
|
146
|
+
workingDir: '/test',
|
|
147
|
+
config: 'config',
|
|
148
|
+
plBinary: { type: 'Download', version: '1.29.2' },
|
|
149
|
+
},
|
|
150
|
+
numCpu: 4,
|
|
151
|
+
},
|
|
152
|
+
expected: {
|
|
153
|
+
workingDir: '/test',
|
|
147
154
|
config: 'config',
|
|
148
155
|
plBinary: { type: 'Download', version: '1.29.2' },
|
|
156
|
+
spawnOptions: {
|
|
157
|
+
env: {
|
|
158
|
+
GOMAXPROCS: '4',
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
closeOld: true,
|
|
149
162
|
},
|
|
150
|
-
numCpu: 4,
|
|
151
163
|
},
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
164
|
+
{
|
|
165
|
+
name: 'should override outermost options when provided',
|
|
166
|
+
input: {
|
|
167
|
+
ops: {
|
|
168
|
+
workingDir: '/test',
|
|
169
|
+
config: 'config',
|
|
170
|
+
// we provided plBinary and closeOld, they should appear in the result
|
|
171
|
+
plBinary: { type: 'Local', path: '/custom/binary' },
|
|
172
|
+
closeOld: false,
|
|
159
173
|
},
|
|
174
|
+
numCpu: 2,
|
|
160
175
|
},
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
name: 'should override outermost options when provided',
|
|
166
|
-
input: {
|
|
167
|
-
ops: {
|
|
168
|
-
workingDir: '/test',
|
|
176
|
+
expected: {
|
|
177
|
+
workingDir: '/test',
|
|
169
178
|
config: 'config',
|
|
170
|
-
|
|
179
|
+
spawnOptions: {
|
|
180
|
+
env: {
|
|
181
|
+
GOMAXPROCS: '2',
|
|
182
|
+
},
|
|
183
|
+
},
|
|
171
184
|
plBinary: { type: 'Local', path: '/custom/binary' },
|
|
172
185
|
closeOld: false,
|
|
173
186
|
},
|
|
174
|
-
numCpu: 2,
|
|
175
187
|
},
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
188
|
+
{
|
|
189
|
+
name: 'should merge env variables when provided',
|
|
190
|
+
input: {
|
|
191
|
+
ops: {
|
|
192
|
+
workingDir: '/test',
|
|
193
|
+
config: 'config',
|
|
194
|
+
plBinary: { type: 'Download', version: '1.29.2' },
|
|
195
|
+
spawnOptions: {
|
|
196
|
+
env: {
|
|
197
|
+
NODE_ENV: 'test',
|
|
198
|
+
DEBUG: 'true',
|
|
199
|
+
},
|
|
200
|
+
},
|
|
182
201
|
},
|
|
202
|
+
numCpu: 3,
|
|
183
203
|
},
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
},
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
name: 'should merge env variables when provided',
|
|
190
|
-
input: {
|
|
191
|
-
ops: {
|
|
192
|
-
workingDir: '/test',
|
|
204
|
+
expected: {
|
|
205
|
+
workingDir: '/test',
|
|
193
206
|
config: 'config',
|
|
194
207
|
plBinary: { type: 'Download', version: '1.29.2' },
|
|
195
208
|
spawnOptions: {
|
|
196
209
|
env: {
|
|
210
|
+
GOMAXPROCS: '3',
|
|
197
211
|
NODE_ENV: 'test',
|
|
198
212
|
DEBUG: 'true',
|
|
199
213
|
},
|
|
200
214
|
},
|
|
215
|
+
closeOld: true,
|
|
201
216
|
},
|
|
202
|
-
numCpu: 3,
|
|
203
217
|
},
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
218
|
+
{
|
|
219
|
+
name: 'should override other spawnOptions properties',
|
|
220
|
+
input: {
|
|
221
|
+
ops: {
|
|
222
|
+
workingDir: '/test',
|
|
223
|
+
config: 'config',
|
|
224
|
+
plBinary: { type: 'Download', version: '1.29.2' },
|
|
225
|
+
spawnOptions: {
|
|
226
|
+
stdio: 'inherit',
|
|
227
|
+
detached: true,
|
|
228
|
+
},
|
|
213
229
|
},
|
|
230
|
+
numCpu: 2,
|
|
214
231
|
},
|
|
215
|
-
|
|
216
|
-
},
|
|
217
|
-
},
|
|
218
|
-
{
|
|
219
|
-
name: 'should override other spawnOptions properties',
|
|
220
|
-
input: {
|
|
221
|
-
ops: {
|
|
232
|
+
expected: {
|
|
222
233
|
workingDir: '/test',
|
|
223
234
|
config: 'config',
|
|
224
235
|
plBinary: { type: 'Download', version: '1.29.2' },
|
|
225
236
|
spawnOptions: {
|
|
237
|
+
env: {
|
|
238
|
+
GOMAXPROCS: '2',
|
|
239
|
+
},
|
|
226
240
|
stdio: 'inherit',
|
|
227
241
|
detached: true,
|
|
228
242
|
},
|
|
243
|
+
closeOld: true,
|
|
229
244
|
},
|
|
230
|
-
numCpu: 2,
|
|
231
245
|
},
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
246
|
+
{
|
|
247
|
+
name: 'should handle complex case with multiple overrides',
|
|
248
|
+
input: {
|
|
249
|
+
ops: {
|
|
250
|
+
workingDir: '/test',
|
|
251
|
+
config: 'config',
|
|
252
|
+
plBinary: { type: 'Local', path: '/custom/binary' },
|
|
253
|
+
closeOld: false,
|
|
254
|
+
spawnOptions: {
|
|
255
|
+
env: {
|
|
256
|
+
NODE_ENV: 'production',
|
|
257
|
+
LOG_LEVEL: 'debug',
|
|
258
|
+
},
|
|
259
|
+
cwd: '/custom/dir',
|
|
260
|
+
windowsHide: false,
|
|
261
|
+
},
|
|
239
262
|
},
|
|
240
|
-
|
|
241
|
-
detached: true,
|
|
263
|
+
numCpu: 6,
|
|
242
264
|
},
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
name: 'should handle complex case with multiple overrides',
|
|
248
|
-
input: {
|
|
249
|
-
ops: {
|
|
250
|
-
workingDir: '/test',
|
|
265
|
+
expected: {
|
|
266
|
+
workingDir: '/test',
|
|
251
267
|
config: 'config',
|
|
252
268
|
plBinary: { type: 'Local', path: '/custom/binary' },
|
|
253
269
|
closeOld: false,
|
|
254
270
|
spawnOptions: {
|
|
255
271
|
env: {
|
|
272
|
+
GOMAXPROCS: '6',
|
|
256
273
|
NODE_ENV: 'production',
|
|
257
274
|
LOG_LEVEL: 'debug',
|
|
258
275
|
},
|
|
@@ -260,25 +277,8 @@ const mergeDefaultOpsCases: {
|
|
|
260
277
|
windowsHide: false,
|
|
261
278
|
},
|
|
262
279
|
},
|
|
263
|
-
numCpu: 6,
|
|
264
|
-
},
|
|
265
|
-
expected: {
|
|
266
|
-
workingDir: '/test',
|
|
267
|
-
config: 'config',
|
|
268
|
-
plBinary: { type: 'Local', path: '/custom/binary' },
|
|
269
|
-
closeOld: false,
|
|
270
|
-
spawnOptions: {
|
|
271
|
-
env: {
|
|
272
|
-
GOMAXPROCS: '6',
|
|
273
|
-
NODE_ENV: 'production',
|
|
274
|
-
LOG_LEVEL: 'debug',
|
|
275
|
-
},
|
|
276
|
-
cwd: '/custom/dir',
|
|
277
|
-
windowsHide: false,
|
|
278
|
-
},
|
|
279
280
|
},
|
|
280
|
-
|
|
281
|
-
];
|
|
281
|
+
];
|
|
282
282
|
|
|
283
283
|
test.each(mergeDefaultOpsCases)('mergeDefaultOps: $name', ({ name, input, expected }) => {
|
|
284
284
|
const result = mergeDefaultOps(input.ops, input.numCpu);
|
|
@@ -296,139 +296,139 @@ const plProcessOpsCases: {
|
|
|
296
296
|
};
|
|
297
297
|
expected: ProcessOptions;
|
|
298
298
|
}[] = [
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
299
|
+
{
|
|
300
|
+
name: 'should set basic options with minimal input',
|
|
301
|
+
input: {
|
|
302
|
+
binaryPath: '/path/to/binary',
|
|
303
|
+
configPath: '/path/to/config.yaml',
|
|
304
|
+
ops: {
|
|
305
|
+
workingDir: '/work/dir',
|
|
306
|
+
config: 'config-content',
|
|
307
|
+
plBinary: { type: 'Download', version: '1.29.2' },
|
|
308
|
+
spawnOptions: {},
|
|
309
|
+
closeOld: true,
|
|
310
|
+
},
|
|
311
|
+
workDir: '/work/dir',
|
|
310
312
|
},
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
windowsHide: true,
|
|
313
|
+
expected: {
|
|
314
|
+
cmd: '/path/to/binary',
|
|
315
|
+
args: ['--config', '/path/to/config.yaml'],
|
|
316
|
+
opts: {
|
|
317
|
+
env: {},
|
|
318
|
+
cwd: '/work/dir',
|
|
319
|
+
stdio: ['pipe', 'ignore', 'inherit'],
|
|
320
|
+
windowsHide: true,
|
|
321
|
+
},
|
|
321
322
|
},
|
|
322
323
|
},
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
324
|
+
{
|
|
325
|
+
name: 'should merge environment variables when provided',
|
|
326
|
+
input: {
|
|
327
|
+
binaryPath: '/path/to/binary',
|
|
328
|
+
configPath: '/config.yaml',
|
|
329
|
+
ops: {
|
|
330
|
+
workingDir: '/work',
|
|
331
|
+
config: 'content',
|
|
332
|
+
plBinary: { type: 'Download', version: '1.29.2' },
|
|
333
|
+
spawnOptions: {
|
|
334
|
+
env: {
|
|
335
|
+
DEBUG: 'true',
|
|
336
|
+
LOG_LEVEL: 'info',
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
closeOld: true,
|
|
340
|
+
},
|
|
341
|
+
workDir: '/work',
|
|
342
|
+
},
|
|
343
|
+
expected: {
|
|
344
|
+
cmd: '/path/to/binary',
|
|
345
|
+
args: ['--config', '/config.yaml'],
|
|
346
|
+
opts: {
|
|
334
347
|
env: {
|
|
335
348
|
DEBUG: 'true',
|
|
336
349
|
LOG_LEVEL: 'info',
|
|
337
350
|
},
|
|
351
|
+
cwd: '/work',
|
|
352
|
+
stdio: ['pipe', 'ignore', 'inherit'],
|
|
353
|
+
windowsHide: true,
|
|
338
354
|
},
|
|
339
|
-
closeOld: true,
|
|
340
355
|
},
|
|
341
|
-
workDir: '/work',
|
|
342
356
|
},
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
357
|
+
{
|
|
358
|
+
name: 'should override spawn options when provided',
|
|
359
|
+
input: {
|
|
360
|
+
binaryPath: '/binary',
|
|
361
|
+
configPath: '/config.yaml',
|
|
362
|
+
ops: {
|
|
363
|
+
workingDir: '/work',
|
|
364
|
+
config: 'content',
|
|
365
|
+
plBinary: { type: 'Download', version: '1.29.2' },
|
|
366
|
+
spawnOptions: {
|
|
367
|
+
stdio: 'inherit',
|
|
368
|
+
detached: true,
|
|
369
|
+
shell: true,
|
|
370
|
+
},
|
|
371
|
+
closeOld: true,
|
|
350
372
|
},
|
|
351
|
-
|
|
352
|
-
stdio: ['pipe', 'ignore', 'inherit'],
|
|
353
|
-
windowsHide: true,
|
|
373
|
+
workDir: '/work',
|
|
354
374
|
},
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
configPath: '/config.yaml',
|
|
362
|
-
ops: {
|
|
363
|
-
workingDir: '/work',
|
|
364
|
-
config: 'content',
|
|
365
|
-
plBinary: { type: 'Download', version: '1.29.2' },
|
|
366
|
-
spawnOptions: {
|
|
375
|
+
expected: {
|
|
376
|
+
cmd: '/binary',
|
|
377
|
+
args: ['--config', '/config.yaml'],
|
|
378
|
+
opts: {
|
|
379
|
+
env: {},
|
|
380
|
+
cwd: '/work',
|
|
367
381
|
stdio: 'inherit',
|
|
368
382
|
detached: true,
|
|
369
383
|
shell: true,
|
|
384
|
+
windowsHide: true,
|
|
370
385
|
},
|
|
371
|
-
closeOld: true,
|
|
372
386
|
},
|
|
373
|
-
workDir: '/work',
|
|
374
387
|
},
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
388
|
+
{
|
|
389
|
+
name: 'should handle complex case with multiple options',
|
|
390
|
+
input: {
|
|
391
|
+
binaryPath: '/bin/platforma',
|
|
392
|
+
configPath: '/etc/platforma/config.yaml',
|
|
393
|
+
ops: {
|
|
394
|
+
workingDir: '/var/platforma',
|
|
395
|
+
config: 'yaml content',
|
|
396
|
+
plBinary: { type: 'Download', version: '1.29.2' },
|
|
397
|
+
spawnOptions: {
|
|
398
|
+
env: {
|
|
399
|
+
PL_DEBUG: 'true',
|
|
400
|
+
PL_MODE: 'development',
|
|
401
|
+
GOMAXPROCS: '4',
|
|
402
|
+
},
|
|
403
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
404
|
+
detached: false,
|
|
405
|
+
windowsHide: false,
|
|
406
|
+
uid: 1000,
|
|
407
|
+
gid: 1000,
|
|
408
|
+
},
|
|
409
|
+
closeOld: true,
|
|
410
|
+
},
|
|
411
|
+
workDir: '/var/platforma/runtime',
|
|
385
412
|
},
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
input: {
|
|
391
|
-
binaryPath: '/bin/platforma',
|
|
392
|
-
configPath: '/etc/platforma/config.yaml',
|
|
393
|
-
ops: {
|
|
394
|
-
workingDir: '/var/platforma',
|
|
395
|
-
config: 'yaml content',
|
|
396
|
-
plBinary: { type: 'Download', version: '1.29.2' },
|
|
397
|
-
spawnOptions: {
|
|
413
|
+
expected: {
|
|
414
|
+
cmd: '/bin/platforma',
|
|
415
|
+
args: ['--config', '/etc/platforma/config.yaml'],
|
|
416
|
+
opts: {
|
|
398
417
|
env: {
|
|
399
418
|
PL_DEBUG: 'true',
|
|
400
419
|
PL_MODE: 'development',
|
|
401
420
|
GOMAXPROCS: '4',
|
|
402
421
|
},
|
|
422
|
+
cwd: '/var/platforma/runtime',
|
|
403
423
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
404
424
|
detached: false,
|
|
405
425
|
windowsHide: false,
|
|
406
426
|
uid: 1000,
|
|
407
427
|
gid: 1000,
|
|
408
428
|
},
|
|
409
|
-
closeOld: true,
|
|
410
|
-
},
|
|
411
|
-
workDir: '/var/platforma/runtime',
|
|
412
|
-
},
|
|
413
|
-
expected: {
|
|
414
|
-
cmd: '/bin/platforma',
|
|
415
|
-
args: ['--config', '/etc/platforma/config.yaml'],
|
|
416
|
-
opts: {
|
|
417
|
-
env: {
|
|
418
|
-
PL_DEBUG: 'true',
|
|
419
|
-
PL_MODE: 'development',
|
|
420
|
-
GOMAXPROCS: '4',
|
|
421
|
-
},
|
|
422
|
-
cwd: '/var/platforma/runtime',
|
|
423
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
424
|
-
detached: false,
|
|
425
|
-
windowsHide: false,
|
|
426
|
-
uid: 1000,
|
|
427
|
-
gid: 1000,
|
|
428
429
|
},
|
|
429
430
|
},
|
|
430
|
-
|
|
431
|
-
];
|
|
431
|
+
];
|
|
432
432
|
|
|
433
433
|
test.each(plProcessOpsCases)('plProcessOps: $name', ({ name, input, expected }) => {
|
|
434
434
|
const result = plProcessOps(
|