@platforma-sdk/bootstrap 1.19.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 (61) hide show
  1. package/assets/compose-fs.yaml +68 -0
  2. package/assets/compose-minio.yaml +25 -0
  3. package/assets/compose-s3.yaml +95 -0
  4. package/assets/users.htpasswd +3 -0
  5. package/bin/run.cmd +3 -0
  6. package/bin/run.js +7 -0
  7. package/dist/block.d.ts +19 -0
  8. package/dist/block.js +89 -0
  9. package/dist/block.js.map +1 -0
  10. package/dist/cmd-opts.d.ts +64 -0
  11. package/dist/cmd-opts.js +121 -0
  12. package/dist/cmd-opts.js.map +1 -0
  13. package/dist/commands/create-block.d.ts +9 -0
  14. package/dist/commands/create-block.js +43 -0
  15. package/dist/commands/create-block.js.map +1 -0
  16. package/dist/commands/reset.d.ts +9 -0
  17. package/dist/commands/reset.js +47 -0
  18. package/dist/commands/reset.js.map +1 -0
  19. package/dist/commands/start/docker/fs.d.ts +19 -0
  20. package/dist/commands/start/docker/fs.js +71 -0
  21. package/dist/commands/start/docker/fs.js.map +1 -0
  22. package/dist/commands/start/docker/s3.d.ts +19 -0
  23. package/dist/commands/start/docker/s3.js +69 -0
  24. package/dist/commands/start/docker/s3.js.map +1 -0
  25. package/dist/commands/start/local/fs.d.ts +24 -0
  26. package/dist/commands/start/local/fs.js +98 -0
  27. package/dist/commands/start/local/fs.js.map +1 -0
  28. package/dist/commands/start/local/s3.d.ts +25 -0
  29. package/dist/commands/start/local/s3.js +100 -0
  30. package/dist/commands/start/local/s3.js.map +1 -0
  31. package/dist/commands/start.d.ts +9 -0
  32. package/dist/commands/start.js +47 -0
  33. package/dist/commands/start.js.map +1 -0
  34. package/dist/commands/stop.d.ts +9 -0
  35. package/dist/commands/stop.js +47 -0
  36. package/dist/commands/stop.js.map +1 -0
  37. package/dist/core.d.ts +70 -0
  38. package/dist/core.js +523 -0
  39. package/dist/core.js.map +1 -0
  40. package/dist/package.d.ts +11 -0
  41. package/dist/package.js +52 -0
  42. package/dist/package.js.map +1 -0
  43. package/dist/platforma.d.ts +23 -0
  44. package/dist/platforma.js +172 -0
  45. package/dist/platforma.js.map +1 -0
  46. package/dist/run.d.ts +6 -0
  47. package/dist/run.js +88 -0
  48. package/dist/run.js.map +1 -0
  49. package/dist/state.d.ts +38 -0
  50. package/dist/state.js +86 -0
  51. package/dist/state.js.map +1 -0
  52. package/dist/templates/pl-config.d.ts +5 -0
  53. package/dist/templates/pl-config.js +239 -0
  54. package/dist/templates/pl-config.js.map +1 -0
  55. package/dist/templates/types.d.ts +128 -0
  56. package/dist/templates/types.js +30 -0
  57. package/dist/templates/types.js.map +1 -0
  58. package/dist/util.d.ts +6 -0
  59. package/dist/util.js +54 -0
  60. package/dist/util.js.map +1 -0
  61. package/package.json +50 -0
package/dist/core.d.ts ADDED
@@ -0,0 +1,70 @@
1
+ import { ChildProcess, SpawnSyncReturns } from 'child_process';
2
+ import * as plCfg from './templates/pl-config';
3
+ import * as types from './templates/types';
4
+ import winston from 'winston';
5
+ export default class Core {
6
+ private readonly logger;
7
+ constructor(logger: winston.Logger);
8
+ startLast(): void;
9
+ startLocal(options?: startLocalOptions): ChildProcess;
10
+ startLocalFS(options?: startLocalFSOptions): ChildProcess;
11
+ startLocalS3(options?: startLocalOptions): ChildProcess;
12
+ startMinio(options?: {
13
+ storage?: string;
14
+ image?: string;
15
+ version?: string;
16
+ }): void;
17
+ buildPlatforma(options: {
18
+ repoRoot: string;
19
+ binPath?: string;
20
+ }): string;
21
+ startDockerS3(options?: {
22
+ image?: string;
23
+ version?: string;
24
+ primaryURL?: string;
25
+ libraryURL?: string;
26
+ auth?: types.authOptions;
27
+ license?: string;
28
+ licenseFile?: string;
29
+ }): void;
30
+ startDockerFS(options?: {
31
+ primaryStorage?: string;
32
+ workStorage?: string;
33
+ libraryStorage?: string;
34
+ image?: string;
35
+ version?: string;
36
+ auth?: types.authOptions;
37
+ license?: string;
38
+ licenseFile?: string;
39
+ }): void;
40
+ stop(): void;
41
+ cleanup(): void;
42
+ mergeLicenseEnvs(flags: {
43
+ license?: string;
44
+ 'license-file'?: string;
45
+ }): void;
46
+ initAuthDriversList(flags: {
47
+ 'auth-htpasswd-file'?: string;
48
+ 'auth-ldap-server'?: string;
49
+ 'auth-ldap-default-dn'?: string;
50
+ }, workdir: string): types.authDriver[] | undefined;
51
+ /** Gets the last stored JWT secret key or generates it and stores in a file. */
52
+ getLastJwt(): string;
53
+ private destroyDocker;
54
+ private checkLicense;
55
+ private checkVolumeConfig;
56
+ private readComposeFile;
57
+ private writeComposeFile;
58
+ }
59
+ export declare function checkRunError(result: SpawnSyncReturns<Buffer>, message?: string): void;
60
+ export type startLocalFSOptions = {
61
+ version?: string;
62
+ binaryPath?: string;
63
+ configPath?: string;
64
+ configOptions?: plCfg.plOptions;
65
+ workdir?: string;
66
+ };
67
+ export type startLocalOptions = startLocalFSOptions & {
68
+ primaryURL?: string;
69
+ libraryURL?: string;
70
+ };
package/dist/core.js ADDED
@@ -0,0 +1,523 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.checkRunError = checkRunError;
30
+ const child_process_1 = require("child_process");
31
+ const yaml_1 = __importDefault(require("yaml"));
32
+ const fs_1 = __importDefault(require("fs"));
33
+ const os_1 = __importDefault(require("os"));
34
+ const path_1 = __importDefault(require("path"));
35
+ const pkg = __importStar(require("./package"));
36
+ const run = __importStar(require("./run"));
37
+ const plCfg = __importStar(require("./templates/pl-config"));
38
+ const platforma = __importStar(require("./platforma"));
39
+ const state_1 = __importDefault(require("./state"));
40
+ const util = __importStar(require("./util"));
41
+ class Core {
42
+ logger;
43
+ constructor(logger) {
44
+ this.logger = logger;
45
+ }
46
+ startLast() {
47
+ const result = run.rerunLast(this.logger, { stdio: 'inherit' });
48
+ checkRunError(result, 'failed to bring back Platforma Backend in the last started configuration');
49
+ }
50
+ startLocal(options) {
51
+ const cmd = options?.binaryPath ?? platforma.binaryPath(options?.version, 'binaries', 'platforma');
52
+ var configPath = options?.configPath;
53
+ const workdir = options?.workdir ?? (configPath ? process.cwd() : state_1.default.path());
54
+ if (options?.primaryURL) {
55
+ options.configOptions = {
56
+ ...options.configOptions,
57
+ storages: {
58
+ ...options.configOptions?.storages,
59
+ primary: plCfg.storageSettingsFromURL(options.primaryURL, workdir)
60
+ }
61
+ };
62
+ }
63
+ if (options?.libraryURL) {
64
+ options.configOptions = {
65
+ ...options.configOptions,
66
+ storages: {
67
+ ...options.configOptions?.storages,
68
+ library: plCfg.storageSettingsFromURL(options.libraryURL, workdir)
69
+ }
70
+ };
71
+ }
72
+ const configOptions = plCfg.loadDefaults(this.getLastJwt(), options?.configOptions);
73
+ this.logger.debug(` checking license...`);
74
+ this.checkLicense(options?.configOptions?.license?.value, options?.configOptions?.license?.file);
75
+ const storageDirs = [
76
+ `${configOptions.localRoot}/packages`,
77
+ `${configOptions.localRoot}/packages-local`,
78
+ `${configOptions.localRoot}/blocks-local`
79
+ ];
80
+ if (configOptions.storages.primary.type === 'FS') {
81
+ storageDirs.push(configOptions.storages.primary.rootPath);
82
+ }
83
+ if (configOptions.storages.library.type === 'FS') {
84
+ storageDirs.push(configOptions.storages.library.rootPath);
85
+ configOptions.hacks.libraryDownloadable = false;
86
+ }
87
+ if (configOptions.storages.work.type === 'FS') {
88
+ storageDirs.push(configOptions.storages.work.rootPath);
89
+ }
90
+ this.logger.debug(' creating pl state directories...');
91
+ for (const dir of storageDirs) {
92
+ if (!fs_1.default.existsSync(dir)) {
93
+ this.logger.debug(` '${dir}'`);
94
+ fs_1.default.mkdirSync(dir, { recursive: true });
95
+ }
96
+ }
97
+ for (const drv of configOptions.core.auth.drivers) {
98
+ if (drv.driver === 'htpasswd') {
99
+ if (!fs_1.default.existsSync(drv.path)) {
100
+ this.logger.debug(` installing default 'users.htpasswd' to ${drv.path}...`);
101
+ fs_1.default.copyFileSync(pkg.assets('users.htpasswd'), drv.path);
102
+ }
103
+ }
104
+ }
105
+ if (!configPath) {
106
+ configPath = state_1.default.path('config-lastrun.yaml');
107
+ this.logger.debug(` rendering configuration '${configPath}'...`);
108
+ fs_1.default.writeFileSync(configPath, plCfg.render(configOptions));
109
+ }
110
+ this.logger.debug(` starting platforma service...`);
111
+ return run.runProcess(this.logger, cmd, ['-config', configPath], {
112
+ cwd: workdir,
113
+ stdio: 'inherit'
114
+ }, {
115
+ storagePath: configOptions.localRoot
116
+ });
117
+ }
118
+ startLocalFS(options) {
119
+ this.logger.debug("starting platforma in 'local fs' mode...");
120
+ return this.startLocal(options);
121
+ }
122
+ startLocalS3(options) {
123
+ this.logger.debug("starting platforma in 'local s3' mode...");
124
+ if (!options?.libraryURL || !options?.primaryURL) {
125
+ this.startMinio();
126
+ }
127
+ if (!options?.primaryURL) {
128
+ options = {
129
+ ...options,
130
+ primaryURL: 's3e://testuser:testpassword@localhost:9000/main-bucket/?region=fake-region'
131
+ };
132
+ }
133
+ if (!options?.libraryURL) {
134
+ options = {
135
+ ...options,
136
+ libraryURL: 's3e://testuser:testpassword@localhost:9000/library-bucket/?region=fake-region'
137
+ };
138
+ }
139
+ return this.startLocal(options);
140
+ }
141
+ startMinio(options) {
142
+ this.logger.debug(' starting minio...');
143
+ var composeMinioSrc = pkg.assets('compose-minio.yaml');
144
+ var composeMinioDst = state_1.default.path('compose-minio.yaml');
145
+ const version = options?.version ? `:${options.version}` : '';
146
+ this.logger.debug(` minio version: ${version}`);
147
+ const image = options?.image ?? `quay.io/minio/minio${version}`;
148
+ this.logger.debug(` minio image: ${image}`);
149
+ const storage = options?.storage;
150
+ const envs = {
151
+ MINIO_IMAGE: image,
152
+ MINIO_STORAGE: ''
153
+ };
154
+ const compose = this.readComposeFile(composeMinioSrc);
155
+ if (storage) {
156
+ const storagePath = path_1.default.resolve(storage);
157
+ this.logger.debug(` creating minio storage persistent directory '${storagePath}'...`);
158
+ fs_1.default.mkdirSync(storagePath, { recursive: true });
159
+ envs['MINIO_STORAGE'] = storagePath;
160
+ }
161
+ else {
162
+ this.logger.debug(` configuring minio to have temporary storage...`);
163
+ compose.volumes.storage = null;
164
+ }
165
+ this.logger.debug(` rendering minio docker compose '${composeMinioDst}'...`);
166
+ this.writeComposeFile(composeMinioDst, compose);
167
+ this.logger.debug(` spawning child 'docker' process...`);
168
+ const result = (0, child_process_1.spawnSync)('docker', ['compose', `--file=${composeMinioDst}`, 'up', '--detach', '--remove-orphans', '--pull=missing'], {
169
+ env: {
170
+ ...process.env,
171
+ ...envs
172
+ },
173
+ stdio: 'inherit'
174
+ });
175
+ checkRunError(result, 'failed to start MinIO service in docker');
176
+ }
177
+ buildPlatforma(options) {
178
+ const cmdPath = path_1.default.resolve(options.repoRoot, 'cmd', 'platforma');
179
+ const binPath = options.binPath ?? path_1.default.join(os_1.default.tmpdir(), 'platforma-local-build');
180
+ this.logger.info('Building Platforma Backend binary from sources');
181
+ this.logger.info(` sources path: ${options.repoRoot}`);
182
+ this.logger.info(` binary path: ${binPath}`);
183
+ const result = (0, child_process_1.spawnSync)('go', ['build', '-o', binPath, '.'], {
184
+ cwd: cmdPath,
185
+ stdio: 'inherit'
186
+ });
187
+ checkRunError(result, "failed to build platforma binary from sources using 'go build' command");
188
+ return binPath;
189
+ }
190
+ startDockerS3(options) {
191
+ const composeS3Path = pkg.assets('compose-s3.yaml');
192
+ const image = options?.image ?? pkg.plImageTag(options?.version);
193
+ this.checkLicense(options?.license, options?.licenseFile);
194
+ const envs = {
195
+ PL_IMAGE: image,
196
+ PL_AUTH_HTPASSWD_PATH: pkg.assets('users.htpasswd'),
197
+ PL_LICENSE: options?.license,
198
+ PL_LICENSE_FILE: options?.licenseFile
199
+ };
200
+ if (options?.auth) {
201
+ if (options.auth.enabled) {
202
+ envs['PL_AUTH_ENABLED'] = 'true';
203
+ }
204
+ if (options.auth.drivers) {
205
+ for (const drv of options.auth.drivers) {
206
+ if (drv.driver === 'htpasswd') {
207
+ envs['PL_AUTH_HTPASSWD_PATH'] = path_1.default.resolve(drv.path);
208
+ drv.path = '/etc/platforma/users.htpasswd';
209
+ }
210
+ }
211
+ envs['PL_AUTH_DRIVERS'] = JSON.stringify(options.auth.drivers);
212
+ }
213
+ }
214
+ if (options?.primaryURL) {
215
+ const primary = plCfg.storageSettingsFromURL(options.primaryURL, '.');
216
+ if (primary.type === 'S3') {
217
+ envs['PL_DATA_PRIMARY_S3_BUCKET'] = primary.bucketName;
218
+ if (primary.endpoint)
219
+ envs['PL_DATA_PRIMARY_S3_ENDPOINT'] = primary.endpoint;
220
+ if (primary.presignEndpoint)
221
+ envs['PL_DATA_PRIMARY_S3_PRESIGN_ENDPOINT'] = primary.presignEndpoint;
222
+ if (primary.key)
223
+ envs['PL_DATA_PRIMARY_S3_KEY'] = primary.key;
224
+ if (primary.secret)
225
+ envs['PL_DATA_PRIMARY_S3_SECRET'] = primary.secret;
226
+ if (primary.region)
227
+ envs['PL_DATA_PRIMARY_S3_REGION'] = primary.region;
228
+ }
229
+ else {
230
+ throw new Error("primary storage must have 'S3' type in 'docker s3' configuration");
231
+ }
232
+ }
233
+ if (options?.libraryURL) {
234
+ const library = plCfg.storageSettingsFromURL(options.libraryURL, '.');
235
+ switch (library.type) {
236
+ case 'S3':
237
+ envs['PL_DATA_PRIMARY_TYPE'] = 'S3';
238
+ envs['PL_DATA_LIBRARY_S3_BUCKET'] = library.bucketName;
239
+ if (library.endpoint)
240
+ envs['PL_DATA_LIBRARY_S3_ENDPOINT'] = library.endpoint;
241
+ if (library.presignEndpoint)
242
+ envs['PL_DATA_LIBRARY_S3_PRESIGN_ENDPOINT'] = library.presignEndpoint;
243
+ if (library.key)
244
+ envs['PL_DATA_LIBRARY_S3_KEY'] = library.key;
245
+ if (library.secret)
246
+ envs['PL_DATA_LIBRARY_S3_SECRET'] = library.secret;
247
+ if (library.region)
248
+ envs['PL_DATA_LIBRARY_S3_REGION'] = library.region;
249
+ break;
250
+ default:
251
+ throw new Error(`${library.type} storage type is not supported for library storage`);
252
+ }
253
+ }
254
+ const result = run.runDocker(this.logger, ['compose', `--file=${composeS3Path}`, 'up', '--detach', '--remove-orphans', '--pull=missing', 'backend'], {
255
+ env: envs,
256
+ stdio: 'inherit'
257
+ }, {
258
+ plImage: image,
259
+ composePath: composeS3Path
260
+ });
261
+ checkRunError(result, 'failed to start Platforma Backend in Docker');
262
+ state_1.default.isActive = true;
263
+ }
264
+ startDockerFS(options) {
265
+ var composeFSPath = pkg.assets('compose-fs.yaml');
266
+ var composeRunPath = state_1.default.path('compose-fs.yaml');
267
+ const image = options?.image ?? pkg.plImageTag(options?.version);
268
+ const primaryStorage = options?.primaryStorage ?? state_1.default.lastRun?.docker?.primaryPath;
269
+ const workStorage = options?.workStorage ?? state_1.default.lastRun?.docker?.workPath;
270
+ const libraryStorage = options?.libraryStorage ?? state_1.default.lastRun?.docker?.libraryPath;
271
+ this.checkLicense(options?.license, options?.licenseFile);
272
+ this.checkVolumeConfig('primary', primaryStorage, state_1.default.lastRun?.docker?.primaryPath);
273
+ this.checkVolumeConfig('library', libraryStorage, state_1.default.lastRun?.docker?.libraryPath);
274
+ const envs = {
275
+ PL_IMAGE: image,
276
+ PL_AUTH_HTPASSWD_PATH: pkg.assets('users.htpasswd'),
277
+ PL_LICENSE: options?.license,
278
+ PL_LICENSE_FILE: options?.licenseFile
279
+ };
280
+ const compose = this.readComposeFile(composeFSPath);
281
+ if (options?.auth) {
282
+ if (options.auth.enabled) {
283
+ envs['PL_AUTH_ENABLED'] = 'true';
284
+ }
285
+ if (options.auth.drivers) {
286
+ for (const drv of options.auth.drivers) {
287
+ if (drv.driver === 'htpasswd') {
288
+ envs['PL_AUTH_HTPASSWD_PATH'] = path_1.default.resolve(drv.path);
289
+ drv.path = '/etc/platforma/users.htpasswd';
290
+ }
291
+ }
292
+ envs['PL_AUTH_DRIVERS'] = JSON.stringify(options.auth.drivers);
293
+ }
294
+ }
295
+ if (primaryStorage) {
296
+ fs_1.default.mkdirSync(path_1.default.resolve(primaryStorage), { recursive: true });
297
+ envs['PL_STORAGE_PRIMARY'] = path_1.default.resolve(primaryStorage);
298
+ }
299
+ else {
300
+ compose.volumes.primary = null;
301
+ }
302
+ if (workStorage) {
303
+ fs_1.default.mkdirSync(path_1.default.resolve(workStorage), { recursive: true });
304
+ envs['PL_STORAGE_PRIMARY'] = path_1.default.resolve(workStorage);
305
+ }
306
+ else {
307
+ compose.volumes.work = null;
308
+ }
309
+ if (libraryStorage) {
310
+ envs['PL_STORAGE_LIBRARY'] = path_1.default.resolve(libraryStorage);
311
+ }
312
+ else {
313
+ compose.volumes.library = null;
314
+ }
315
+ this.writeComposeFile(composeRunPath, compose);
316
+ const result = run.runDocker(this.logger, ['compose', `--file=${composeFSPath}`, 'up', '--detach', '--remove-orphans', '--pull=missing', 'backend'], {
317
+ env: envs,
318
+ stdio: 'inherit'
319
+ }, {
320
+ plImage: image,
321
+ composePath: composeFSPath,
322
+ primaryPath: primaryStorage ? path_1.default.resolve(primaryStorage) : '',
323
+ workPath: workStorage ? path_1.default.resolve(workStorage) : '',
324
+ libraryPath: libraryStorage ? path_1.default.resolve(libraryStorage) : ''
325
+ });
326
+ checkRunError(result, 'failed to start Platforma Backend in Docker');
327
+ state_1.default.isActive = true;
328
+ }
329
+ stop() {
330
+ if (!state_1.default.isActive) {
331
+ console.log('no running service detected');
332
+ return;
333
+ }
334
+ const lastRun = state_1.default.lastRun;
335
+ switch (lastRun.mode) {
336
+ case 'docker':
337
+ const result = (0, child_process_1.spawnSync)('docker', ['compose', '--file', lastRun.docker.composePath, 'down'], {
338
+ env: {
339
+ ...process.env,
340
+ ...lastRun.envs
341
+ },
342
+ stdio: 'inherit'
343
+ });
344
+ state_1.default.isActive = false;
345
+ if (result.status !== 0)
346
+ process.exit(result.status);
347
+ return;
348
+ case 'process':
349
+ state_1.default.isActive = false;
350
+ process.kill(lastRun.process.pid);
351
+ return;
352
+ default:
353
+ util.assertNever(lastRun.mode);
354
+ }
355
+ }
356
+ cleanup() {
357
+ const removeWarns = [
358
+ "last command run cache ('pl-service start' shorthand will stop working until next full start command call)",
359
+ `'platforma' docker compose service containers and volumes`
360
+ ];
361
+ const dirsToRemove = [];
362
+ if (state_1.default.lastRun?.docker?.primaryPath) {
363
+ dirsToRemove.push(state_1.default.lastRun.docker.primaryPath);
364
+ }
365
+ if (state_1.default.lastRun?.process?.storagePath) {
366
+ dirsToRemove.push(state_1.default.lastRun.process.storagePath);
367
+ }
368
+ const storageWarns = dirsToRemove.length > 0
369
+ ? ` - storages (you'll loose all projects and calculation results stored in the service instance):\n - ${dirsToRemove.join('\n - ')}`
370
+ : '';
371
+ var warnMessage = `
372
+ You are going to reset the state of platforma service
373
+ Things to be removed:
374
+ - ${removeWarns.join('\n - ')}
375
+ ${storageWarns}
376
+ `;
377
+ this.logger.warn(warnMessage);
378
+ if (!util.askYN('Are you sure?')) {
379
+ this.logger.info('Reset action was canceled');
380
+ return;
381
+ }
382
+ const composeToDestroy = new Set(pkg.composeFiles());
383
+ if (state_1.default.lastRun?.docker?.composePath) {
384
+ composeToDestroy.add(state_1.default.lastRun.docker.composePath);
385
+ }
386
+ for (const composeFile of composeToDestroy) {
387
+ this.logger.info(`Destroying docker compose '${composeFile}'`);
388
+ this.destroyDocker(composeFile, pkg.plImageTag());
389
+ }
390
+ for (const dir of dirsToRemove) {
391
+ this.logger.info(`Destroying '${dir}'`);
392
+ fs_1.default.rmSync(dir, { recursive: true, force: true });
393
+ }
394
+ this.logger.info(`Destroying state dir '${state_1.default.path()}'`);
395
+ fs_1.default.rmSync(state_1.default.path(), { recursive: true, force: true });
396
+ this.logger.info(`\nIf you want to remove all downloaded platforma binaries, delete '${pkg.binaries()}' dir manually\n`);
397
+ }
398
+ mergeLicenseEnvs(flags) {
399
+ if (flags.license === undefined) {
400
+ if ((process.env.MI_LICENSE ?? '') != '')
401
+ flags.license = process.env.MI_LICENSE;
402
+ else if ((process.env.PL_LICENSE ?? '') != '')
403
+ flags.license = process.env.PL_LICENSE;
404
+ }
405
+ // set 'license-file' only if license is still undefined
406
+ if (flags['license-file'] === undefined && flags.license === undefined) {
407
+ if ((process.env.MI_LICENSE_FILE ?? '') != '')
408
+ flags['license-file'] = process.env.MI_LICENSE_FILE;
409
+ else if ((process.env.PL_LICENSE_FILE ?? '') != '')
410
+ flags['license-file'] = process.env.PL_LICENSE_FILE;
411
+ else if (fs_1.default.existsSync(path_1.default.resolve(os_1.default.homedir(), '.pl.license')))
412
+ flags['license-file'] = path_1.default.resolve(os_1.default.homedir(), '.pl.license');
413
+ }
414
+ }
415
+ initAuthDriversList(flags, workdir) {
416
+ var authDrivers = [];
417
+ if (flags['auth-htpasswd-file']) {
418
+ authDrivers.push({
419
+ driver: 'htpasswd',
420
+ path: path_1.default.resolve(workdir, flags['auth-htpasswd-file'])
421
+ });
422
+ }
423
+ if (Boolean(flags['auth-ldap-server']) !== Boolean(flags['auth-ldap-default-dn'])) {
424
+ throw new Error("LDAP auth settings require both 'server' and 'default DN' options to be set");
425
+ }
426
+ if (flags['auth-ldap-server']) {
427
+ authDrivers.push({
428
+ driver: 'ldap',
429
+ serverUrl: flags['auth-ldap-server'],
430
+ defaultDN: flags['auth-ldap-default-dn']
431
+ });
432
+ }
433
+ if (authDrivers.length === 0) {
434
+ return undefined;
435
+ }
436
+ return [{ driver: 'jwt', key: this.getLastJwt() }, ...authDrivers];
437
+ }
438
+ /** Gets the last stored JWT secret key or generates it and stores in a file. */
439
+ getLastJwt() {
440
+ const jwtFile = state_1.default.path('auth.jwt');
441
+ const encoding = 'utf-8';
442
+ let lastJwt = '';
443
+ try {
444
+ lastJwt = fs_1.default.readFileSync(jwtFile, { encoding });
445
+ }
446
+ catch (e) { }
447
+ if (lastJwt == '') {
448
+ lastJwt = util.randomStr(64);
449
+ fs_1.default.writeFileSync(jwtFile, lastJwt, { encoding });
450
+ }
451
+ return lastJwt;
452
+ }
453
+ destroyDocker(composePath, image) {
454
+ const result = (0, child_process_1.spawnSync)('docker', ['compose', '--file', composePath, 'down', '--volumes', '--remove-orphans'], {
455
+ env: {
456
+ ...process.env,
457
+ PL_IMAGE: 'scratch',
458
+ PL_STORAGE_PRIMARY: '',
459
+ PL_STORAGE_WORK: '',
460
+ PL_STORAGE_LIBRARY: '',
461
+ PL_AUTH_HTPASSWD_PATH: '.',
462
+ MINIO_IMAGE: 'scratch',
463
+ MINIO_STORAGE: ''
464
+ },
465
+ stdio: 'inherit'
466
+ });
467
+ if (result.status !== 0)
468
+ process.exit(result.status);
469
+ }
470
+ checkLicense(value, file) {
471
+ if (value !== undefined && value != '')
472
+ return;
473
+ if (file !== undefined && file != '')
474
+ return;
475
+ this.logger.error(`A license for Platforma Backend must be set.
476
+
477
+ You can provide the license directly using the '--license' flag
478
+ or use the '--license-file' flag if the license is stored in a file.
479
+
480
+ Alternatively, you can set it via the environment variables 'MI_LICENSE' or 'PL_LICENSE'.
481
+
482
+ The license file can also be set with the variables 'MI_LICENSE_FILE' or 'PL_LICENSE_FILE',
483
+ or stored in '$HOME/.pl.license'.
484
+
485
+ You can obtain the license from "https://licensing.milaboratories.com".`);
486
+ throw new Error(`The license was not provided.`);
487
+ }
488
+ checkVolumeConfig(volumeID, newPath, lastRunPath) {
489
+ if (newPath === undefined) {
490
+ return;
491
+ }
492
+ if (lastRunPath === undefined) {
493
+ return;
494
+ }
495
+ if (path_1.default.resolve(newPath) == path_1.default.resolve(lastRunPath)) {
496
+ return;
497
+ }
498
+ this.logger.error(`'${volumeID}' storage is given to Platforma Backend as docker volume.\n` +
499
+ `Docker Compose does not migrate volumes on itself. It seems you used different path for '${volumeID}' storage earlier.\n` +
500
+ ` current bind path: '${lastRunPath}'\n` +
501
+ ` new bind path: '${path_1.default.resolve(newPath)}'\n` +
502
+ `Your '${volumeID}' storage path change would not have effect until reset (pl-service reset)`);
503
+ throw new Error(`cannot change '${volumeID}' storage path`);
504
+ }
505
+ readComposeFile(fPath) {
506
+ const yamlData = fs_1.default.readFileSync(fPath);
507
+ return yaml_1.default.parse(yamlData.toString());
508
+ }
509
+ writeComposeFile(fPath, data) {
510
+ fs_1.default.writeFileSync(fPath, yaml_1.default.stringify(data));
511
+ }
512
+ }
513
+ exports.default = Core;
514
+ function checkRunError(result, message) {
515
+ if (result.error) {
516
+ throw result.error;
517
+ }
518
+ const msg = message ?? 'failed to run command';
519
+ if (result.status !== 0) {
520
+ throw new Error(`${msg}, process exited with code '${result.status}'`);
521
+ }
522
+ }
523
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare function path(...p: string[]): string;
2
+ export declare function dist(...p: string[]): string;
3
+ export declare function assets(...p: string[]): string;
4
+ export declare function binaries(...p: string[]): string;
5
+ export declare function composeFiles(): string[];
6
+ export declare function readFileSync(...p: string[]): Buffer;
7
+ export type packageJson = {
8
+ 'pl-version': string;
9
+ };
10
+ export declare function getPackageJson(): packageJson;
11
+ export declare function plImageTag(version?: string): string;