@platforma-sdk/bootstrap 5.2.51 → 5.2.53

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 (176) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/block.cjs +106 -146
  3. package/dist/block.cjs.map +1 -1
  4. package/dist/block.js +100 -125
  5. package/dist/block.js.map +1 -1
  6. package/dist/cmd-opts.cjs +87 -177
  7. package/dist/cmd-opts.cjs.map +1 -1
  8. package/dist/cmd-opts.js +87 -172
  9. package/dist/cmd-opts.js.map +1 -1
  10. package/dist/commands/create-block.cjs +19 -20
  11. package/dist/commands/create-block.cjs.map +1 -1
  12. package/dist/commands/create-block.d.ts +12 -7
  13. package/dist/commands/create-block.js +17 -17
  14. package/dist/commands/create-block.js.map +1 -1
  15. package/dist/commands/reset.cjs +18 -21
  16. package/dist/commands/reset.cjs.map +1 -1
  17. package/dist/commands/reset.d.ts +12 -7
  18. package/dist/commands/reset.js +16 -18
  19. package/dist/commands/reset.js.map +1 -1
  20. package/dist/commands/start/docker/s3.cjs +64 -67
  21. package/dist/commands/start/docker/s3.cjs.map +1 -1
  22. package/dist/commands/start/docker/s3.d.ts +32 -27
  23. package/dist/commands/start/docker/s3.js +61 -64
  24. package/dist/commands/start/docker/s3.js.map +1 -1
  25. package/dist/commands/start/docker.cjs +64 -67
  26. package/dist/commands/start/docker.cjs.map +1 -1
  27. package/dist/commands/start/docker.d.ts +32 -27
  28. package/dist/commands/start/docker.js +61 -64
  29. package/dist/commands/start/docker.js.map +1 -1
  30. package/dist/commands/start/local/s3.cjs +101 -135
  31. package/dist/commands/start/local/s3.cjs.map +1 -1
  32. package/dist/commands/start/local/s3.d.ts +36 -31
  33. package/dist/commands/start/local/s3.js +97 -113
  34. package/dist/commands/start/local/s3.js.map +1 -1
  35. package/dist/commands/start/local.cjs +95 -122
  36. package/dist/commands/start/local.cjs.map +1 -1
  37. package/dist/commands/start/local.d.ts +34 -29
  38. package/dist/commands/start/local.js +91 -100
  39. package/dist/commands/start/local.js.map +1 -1
  40. package/dist/commands/start.cjs +18 -21
  41. package/dist/commands/start.cjs.map +1 -1
  42. package/dist/commands/start.d.ts +12 -7
  43. package/dist/commands/start.js +16 -18
  44. package/dist/commands/start.js.map +1 -1
  45. package/dist/commands/stop.cjs +22 -27
  46. package/dist/commands/stop.cjs.map +1 -1
  47. package/dist/commands/stop.d.ts +12 -7
  48. package/dist/commands/stop.js +20 -24
  49. package/dist/commands/stop.js.map +1 -1
  50. package/dist/commands/svc/create/arg-parser.cjs +102 -172
  51. package/dist/commands/svc/create/arg-parser.cjs.map +1 -1
  52. package/dist/commands/svc/create/arg-parser.js +102 -171
  53. package/dist/commands/svc/create/arg-parser.js.map +1 -1
  54. package/dist/commands/svc/create/docker/s3.cjs +78 -96
  55. package/dist/commands/svc/create/docker/s3.cjs.map +1 -1
  56. package/dist/commands/svc/create/docker/s3.d.ts +35 -30
  57. package/dist/commands/svc/create/docker/s3.js +75 -93
  58. package/dist/commands/svc/create/docker/s3.js.map +1 -1
  59. package/dist/commands/svc/create/docker.cjs +82 -103
  60. package/dist/commands/svc/create/docker.cjs.map +1 -1
  61. package/dist/commands/svc/create/docker.d.ts +35 -30
  62. package/dist/commands/svc/create/docker.js +79 -100
  63. package/dist/commands/svc/create/docker.js.map +1 -1
  64. package/dist/commands/svc/create/local/s3.cjs +107 -139
  65. package/dist/commands/svc/create/local/s3.cjs.map +1 -1
  66. package/dist/commands/svc/create/local/s3.d.ts +39 -34
  67. package/dist/commands/svc/create/local/s3.js +103 -117
  68. package/dist/commands/svc/create/local/s3.js.map +1 -1
  69. package/dist/commands/svc/create/local.cjs +101 -138
  70. package/dist/commands/svc/create/local.cjs.map +1 -1
  71. package/dist/commands/svc/create/local.d.ts +37 -32
  72. package/dist/commands/svc/create/local.js +97 -116
  73. package/dist/commands/svc/create/local.js.map +1 -1
  74. package/dist/commands/svc/delete.cjs +36 -38
  75. package/dist/commands/svc/delete.cjs.map +1 -1
  76. package/dist/commands/svc/delete.d.ts +16 -11
  77. package/dist/commands/svc/delete.js +34 -35
  78. package/dist/commands/svc/delete.js.map +1 -1
  79. package/dist/commands/svc/down.cjs +27 -30
  80. package/dist/commands/svc/down.cjs.map +1 -1
  81. package/dist/commands/svc/down.d.ts +15 -10
  82. package/dist/commands/svc/down.js +25 -27
  83. package/dist/commands/svc/down.js.map +1 -1
  84. package/dist/commands/svc/list.cjs +25 -29
  85. package/dist/commands/svc/list.cjs.map +1 -1
  86. package/dist/commands/svc/list.d.ts +9 -5
  87. package/dist/commands/svc/list.js +23 -26
  88. package/dist/commands/svc/list.js.map +1 -1
  89. package/dist/commands/svc/up.cjs +33 -49
  90. package/dist/commands/svc/up.cjs.map +1 -1
  91. package/dist/commands/svc/up.d.ts +15 -10
  92. package/dist/commands/svc/up.js +31 -46
  93. package/dist/commands/svc/up.js.map +1 -1
  94. package/dist/core.cjs +712 -881
  95. package/dist/core.cjs.map +1 -1
  96. package/dist/core.js +709 -877
  97. package/dist/core.js.map +1 -1
  98. package/dist/index.cjs +36 -36
  99. package/dist/index.cjs.map +1 -1
  100. package/dist/index.d.ts +37 -33
  101. package/dist/index.js +35 -34
  102. package/dist/index.js.map +1 -1
  103. package/dist/package.cjs +15 -36
  104. package/dist/package.cjs.map +1 -1
  105. package/dist/package.js +14 -14
  106. package/dist/package.js.map +1 -1
  107. package/dist/platforma.cjs +119 -148
  108. package/dist/platforma.cjs.map +1 -1
  109. package/dist/platforma.js +114 -122
  110. package/dist/platforma.js.map +1 -1
  111. package/dist/run.cjs +55 -58
  112. package/dist/run.cjs.map +1 -1
  113. package/dist/run.js +56 -56
  114. package/dist/run.js.map +1 -1
  115. package/dist/state.cjs +114 -141
  116. package/dist/state.cjs.map +1 -1
  117. package/dist/state.js +110 -139
  118. package/dist/state.js.map +1 -1
  119. package/dist/templates/compose.cjs +38 -65
  120. package/dist/templates/compose.cjs.map +1 -1
  121. package/dist/templates/compose.js +35 -63
  122. package/dist/templates/compose.js.map +1 -1
  123. package/dist/templates/pl-config.cjs +163 -165
  124. package/dist/templates/pl-config.cjs.map +1 -1
  125. package/dist/templates/pl-config.js +161 -163
  126. package/dist/templates/pl-config.js.map +1 -1
  127. package/dist/templates/types.cjs +24 -23
  128. package/dist/templates/types.cjs.map +1 -1
  129. package/dist/templates/types.js +24 -22
  130. package/dist/templates/types.js.map +1 -1
  131. package/dist/util.cjs +57 -74
  132. package/dist/util.cjs.map +1 -1
  133. package/dist/util.js +51 -72
  134. package/dist/util.js.map +1 -1
  135. package/package.json +7 -7
  136. package/dist/block.d.ts +0 -25
  137. package/dist/block.d.ts.map +0 -1
  138. package/dist/cmd-opts.d.ts +0 -89
  139. package/dist/cmd-opts.d.ts.map +0 -1
  140. package/dist/commands/create-block.d.ts.map +0 -1
  141. package/dist/commands/reset.d.ts.map +0 -1
  142. package/dist/commands/start/docker/s3.d.ts.map +0 -1
  143. package/dist/commands/start/docker.d.ts.map +0 -1
  144. package/dist/commands/start/local/s3.d.ts.map +0 -1
  145. package/dist/commands/start/local.d.ts.map +0 -1
  146. package/dist/commands/start.d.ts.map +0 -1
  147. package/dist/commands/stop.d.ts.map +0 -1
  148. package/dist/commands/svc/create/arg-parser.d.ts +0 -43
  149. package/dist/commands/svc/create/arg-parser.d.ts.map +0 -1
  150. package/dist/commands/svc/create/docker/s3.d.ts.map +0 -1
  151. package/dist/commands/svc/create/docker.d.ts.map +0 -1
  152. package/dist/commands/svc/create/local/s3.d.ts.map +0 -1
  153. package/dist/commands/svc/create/local.d.ts.map +0 -1
  154. package/dist/commands/svc/delete.d.ts.map +0 -1
  155. package/dist/commands/svc/down.d.ts.map +0 -1
  156. package/dist/commands/svc/list.d.ts.map +0 -1
  157. package/dist/commands/svc/up.d.ts.map +0 -1
  158. package/dist/core.d.ts +0 -105
  159. package/dist/core.d.ts.map +0 -1
  160. package/dist/index.d.ts.map +0 -1
  161. package/dist/package.d.ts +0 -7
  162. package/dist/package.d.ts.map +0 -1
  163. package/dist/platforma.d.ts +0 -24
  164. package/dist/platforma.d.ts.map +0 -1
  165. package/dist/run.d.ts +0 -13
  166. package/dist/run.d.ts.map +0 -1
  167. package/dist/state.d.ts +0 -63
  168. package/dist/state.d.ts.map +0 -1
  169. package/dist/templates/compose.d.ts +0 -14
  170. package/dist/templates/compose.d.ts.map +0 -1
  171. package/dist/templates/pl-config.d.ts +0 -6
  172. package/dist/templates/pl-config.d.ts.map +0 -1
  173. package/dist/templates/types.d.ts +0 -138
  174. package/dist/templates/types.d.ts.map +0 -1
  175. package/dist/util.d.ts +0 -18
  176. package/dist/util.d.ts.map +0 -1
package/dist/platforma.js CHANGED
@@ -1,141 +1,133 @@
1
- import os__default from 'node:os';
2
- import fs__default from 'node:fs';
3
- import https from 'node:https';
4
- import path from 'node:path';
5
- import * as tar from 'tar';
6
- import state from './state.js';
7
- import { getDefaultPlVersion } from '@milaboratories/pl-deployments';
1
+ import state_default from "./state.js";
2
+ import os from "node:os";
3
+ import fs from "node:fs";
4
+ import path from "node:path";
5
+ import { getDefaultPlVersion } from "@milaboratories/pl-deployments";
6
+ import https from "https";
7
+ import * as tar from "tar";
8
8
 
9
- const OSes = ["linux", "macos", "windows"];
9
+ //#region src/platforma.ts
10
+ const OSes = [
11
+ "linux",
12
+ "macos",
13
+ "windows"
14
+ ];
10
15
  function archiveOS(osName) {
11
- const platform = os__default.platform();
12
- switch (platform) {
13
- case "darwin":
14
- return "macos";
15
- case "linux":
16
- return "linux";
17
- case "win32":
18
- return "windows";
19
- default:
20
- throw new Error(`operating system '${platform}' is not currently supported by Platforma ecosystem. The list of OSes supported: ` +
21
- JSON.stringify(OSes));
22
- }
16
+ const platform = osName ?? os.platform();
17
+ switch (platform) {
18
+ case "darwin": return "macos";
19
+ case "linux": return "linux";
20
+ case "win32": return "windows";
21
+ default: throw new Error(`operating system '${platform}' is not currently supported by Platforma ecosystem. The list of OSes supported: ` + JSON.stringify(OSes));
22
+ }
23
23
  }
24
24
  const Arches = ["amd64", "arm64"];
25
25
  function archiveArch(archName) {
26
- const arch = os__default.arch();
27
- switch (arch) {
28
- case "arm64":
29
- return "arm64";
30
- case "x64":
31
- return "amd64";
32
- default:
33
- throw new Error(`processor architecture '${arch}' is not currently supported by Platforma ecosystem. The list of architectures supported: ` +
34
- JSON.stringify(Arches));
35
- }
26
+ const arch = archName ?? os.arch();
27
+ switch (arch) {
28
+ case "arm64": return "arm64";
29
+ case "x64": return "amd64";
30
+ default: throw new Error(`processor architecture '${arch}' is not currently supported by Platforma ecosystem. The list of architectures supported: ` + JSON.stringify(Arches));
31
+ }
36
32
  }
37
33
  function downloadArchive(logger, options) {
38
- const version = options?.version ?? getDefaultPlVersion();
39
- const showProgress = options?.showProgress ?? process.stdout.isTTY;
40
- const archiveName = `pl-${version}-${archiveArch()}.tgz`;
41
- const downloadURL = options?.downloadURL ?? `https://cdn.platforma.bio/software/pl/${archiveOS()}/${archiveName}`;
42
- const archiveFilePath = options?.saveTo ?? state.binaries(archiveName);
43
- if (fs__default.existsSync(archiveFilePath)) {
44
- logger.info(`Platforma Backend archive download skipped: '${archiveFilePath}' already exists`);
45
- return Promise.resolve(archiveFilePath);
46
- }
47
- fs__default.mkdirSync(path.dirname(archiveFilePath), { recursive: true });
48
- logger.info(`Downloading Platforma Backend archive:\n URL: ${downloadURL}\n Save to: ${archiveFilePath}`);
49
- const request = https.get(downloadURL);
50
- return new Promise((resolve, reject) => {
51
- request.on("response", (response) => {
52
- if (!response.statusCode) {
53
- const err = new Error("failed to download archive: no HTTP status code in response from server");
54
- request.destroy();
55
- reject(err);
56
- return;
57
- }
58
- if (response.statusCode !== 200) {
59
- const err = new Error(`failed to download archive: ${response.statusCode} ${response.statusMessage}`);
60
- request.destroy();
61
- reject(err);
62
- return;
63
- }
64
- const totalBytes = parseInt(response.headers["content-length"] || "0", 10);
65
- let downloadedBytes = 0;
66
- const archive = fs__default.createWriteStream(archiveFilePath);
67
- response.pipe(archive);
68
- response.on("data", (chunk) => {
69
- downloadedBytes += chunk.length;
70
- const progress = (downloadedBytes / totalBytes) * 100;
71
- if (showProgress) {
72
- process.stdout.write(` downloading: ${progress.toFixed(2)}%\r`);
73
- }
74
- });
75
- response.on("error", (err) => {
76
- fs__default.unlinkSync(archiveFilePath);
77
- logger.error(`Failed to download Platforma Binary: ${err.message}`);
78
- request.destroy();
79
- reject(err);
80
- });
81
- archive.on("finish", () => {
82
- archive.close();
83
- logger.info(` ... download done.`);
84
- request.destroy();
85
- resolve(archiveFilePath);
86
- });
87
- });
88
- });
34
+ const version = options?.version ?? getDefaultPlVersion();
35
+ const showProgress = options?.showProgress ?? process.stdout.isTTY;
36
+ const archiveName = `pl-${version}-${archiveArch()}.tgz`;
37
+ const downloadURL = options?.downloadURL ?? `https://cdn.platforma.bio/software/pl/${archiveOS()}/${archiveName}`;
38
+ const archiveFilePath = options?.saveTo ?? state_default.binaries(archiveName);
39
+ if (fs.existsSync(archiveFilePath)) {
40
+ logger.info(`Platforma Backend archive download skipped: '${archiveFilePath}' already exists`);
41
+ return Promise.resolve(archiveFilePath);
42
+ }
43
+ fs.mkdirSync(path.dirname(archiveFilePath), { recursive: true });
44
+ logger.info(`Downloading Platforma Backend archive:\n URL: ${downloadURL}\n Save to: ${archiveFilePath}`);
45
+ const request = https.get(downloadURL);
46
+ return new Promise((resolve, reject) => {
47
+ request.on("response", (response) => {
48
+ if (!response.statusCode) {
49
+ const err = /* @__PURE__ */ new Error("failed to download archive: no HTTP status code in response from server");
50
+ request.destroy();
51
+ reject(err);
52
+ return;
53
+ }
54
+ if (response.statusCode !== 200) {
55
+ const err = /* @__PURE__ */ new Error(`failed to download archive: ${response.statusCode} ${response.statusMessage}`);
56
+ request.destroy();
57
+ reject(err);
58
+ return;
59
+ }
60
+ const totalBytes = parseInt(response.headers["content-length"] || "0", 10);
61
+ let downloadedBytes = 0;
62
+ const archive = fs.createWriteStream(archiveFilePath);
63
+ response.pipe(archive);
64
+ response.on("data", (chunk) => {
65
+ downloadedBytes += chunk.length;
66
+ const progress = downloadedBytes / totalBytes * 100;
67
+ if (showProgress) process.stdout.write(` downloading: ${progress.toFixed(2)}%\r`);
68
+ });
69
+ response.on("error", (err) => {
70
+ fs.unlinkSync(archiveFilePath);
71
+ logger.error(`Failed to download Platforma Binary: ${err.message}`);
72
+ request.destroy();
73
+ reject(err);
74
+ });
75
+ archive.on("finish", () => {
76
+ archive.close();
77
+ logger.info(` ... download done.`);
78
+ request.destroy();
79
+ resolve(archiveFilePath);
80
+ });
81
+ });
82
+ });
89
83
  }
90
84
  function extractArchive(logger, options) {
91
- logger.debug("extracting archive...");
92
- const version = options?.version ?? getDefaultPlVersion();
93
- logger.debug(` version: '${version}'`);
94
- const archiveName = `${binaryDirName({ version })}.tgz`;
95
- const archivePath = options?.archivePath ?? state.binaries(archiveName);
96
- logger.debug(` archive path: '${archivePath}'`);
97
- const targetDir = options?.extractTo ?? trimExtension(archivePath);
98
- logger.debug(` target dir: '${targetDir}'`);
99
- if (fs__default.existsSync(targetDir)) {
100
- logger.info(`Platforma Backend binaries unpack skipped: '${targetDir}' exists`);
101
- return targetDir;
102
- }
103
- if (!fs__default.existsSync(archivePath)) {
104
- const msg = `Platforma Backend binary archive not found at '${archivePath}'`;
105
- logger.error(msg);
106
- throw new Error(msg);
107
- }
108
- if (!fs__default.existsSync(targetDir)) {
109
- logger.debug(` creating target dir '${targetDir}'`);
110
- fs__default.mkdirSync(targetDir, { recursive: true });
111
- }
112
- logger.info(`Unpacking Platforma Backend archive:\n Archive: ${archivePath}\n Target dir: ${targetDir}`);
113
- tar.x({
114
- file: archivePath,
115
- cwd: targetDir,
116
- gzip: true,
117
- sync: true,
118
- });
119
- logger.info(` ... unpack done.`);
120
- return targetDir;
85
+ logger.debug("extracting archive...");
86
+ const version = options?.version ?? getDefaultPlVersion();
87
+ logger.debug(` version: '${version}'`);
88
+ const archiveName = `${binaryDirName({ version })}.tgz`;
89
+ const archivePath = options?.archivePath ?? state_default.binaries(archiveName);
90
+ logger.debug(` archive path: '${archivePath}'`);
91
+ const targetDir = options?.extractTo ?? trimExtension(archivePath);
92
+ logger.debug(` target dir: '${targetDir}'`);
93
+ if (fs.existsSync(targetDir)) {
94
+ logger.info(`Platforma Backend binaries unpack skipped: '${targetDir}' exists`);
95
+ return targetDir;
96
+ }
97
+ if (!fs.existsSync(archivePath)) {
98
+ const msg = `Platforma Backend binary archive not found at '${archivePath}'`;
99
+ logger.error(msg);
100
+ throw new Error(msg);
101
+ }
102
+ if (!fs.existsSync(targetDir)) {
103
+ logger.debug(` creating target dir '${targetDir}'`);
104
+ fs.mkdirSync(targetDir, { recursive: true });
105
+ }
106
+ logger.info(`Unpacking Platforma Backend archive:\n Archive: ${archivePath}\n Target dir: ${targetDir}`);
107
+ tar.x({
108
+ file: archivePath,
109
+ cwd: targetDir,
110
+ gzip: true,
111
+ sync: true
112
+ });
113
+ logger.info(` ... unpack done.`);
114
+ return targetDir;
121
115
  }
122
116
  function getBinary(logger, options) {
123
- return downloadArchive(logger, options).then((archivePath) => extractArchive(logger, { archivePath }));
117
+ return downloadArchive(logger, options).then((archivePath) => extractArchive(logger, { archivePath }));
124
118
  }
125
119
  function binaryDirName(options) {
126
- const version = options?.version ?? getDefaultPlVersion();
127
- return `pl-${version}-${archiveArch()}`;
120
+ return `pl-${options?.version ?? getDefaultPlVersion()}-${archiveArch()}`;
128
121
  }
129
122
  function binaryPath(version, ...p) {
130
- return state.binaries(binaryDirName({ version }), ...p);
123
+ return state_default.binaries(binaryDirName({ version }), ...p);
131
124
  }
132
125
  function trimExtension(filename) {
133
- const lastDotIndex = filename.lastIndexOf(".");
134
- if (lastDotIndex === -1) {
135
- return filename;
136
- }
137
- return filename.slice(0, lastDotIndex);
126
+ const lastDotIndex = filename.lastIndexOf(".");
127
+ if (lastDotIndex === -1) return filename;
128
+ return filename.slice(0, lastDotIndex);
138
129
  }
139
130
 
140
- export { Arches, OSes, archiveArch, archiveOS, binaryPath, downloadArchive, extractArchive, getBinary };
141
- //# sourceMappingURL=platforma.js.map
131
+ //#endregion
132
+ export { binaryPath, getBinary };
133
+ //# sourceMappingURL=platforma.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platforma.js","sources":["../src/platforma.ts"],"sourcesContent":["import os from \"node:os\";\nimport fs from \"node:fs\";\nimport https from \"https\";\nimport path from \"node:path\";\n\nimport * as tar from \"tar\";\nimport type winston from \"winston\";\nimport state from \"./state\";\nimport { getDefaultPlVersion } from \"@milaboratories/pl-deployments\";\n\nexport const OSes = [\"linux\", \"macos\", \"windows\"] as const;\nexport type OSType = (typeof OSes)[number];\n\nexport function archiveOS(osName?: string): OSType {\n const platform = osName ?? os.platform();\n\n switch (platform) {\n case \"darwin\":\n return \"macos\";\n case \"linux\":\n return \"linux\";\n case \"win32\":\n return \"windows\";\n default:\n throw new Error(\n `operating system '${platform}' is not currently supported by Platforma ecosystem. The list of OSes supported: ` +\n JSON.stringify(OSes),\n );\n }\n}\n\nexport const Arches = [\"amd64\", \"arm64\"] as const;\nexport type ArchType = (typeof Arches)[number];\n\nexport function archiveArch(archName?: string): ArchType {\n const arch = archName ?? os.arch();\n\n switch (arch) {\n case \"arm64\":\n return \"arm64\";\n case \"x64\":\n return \"amd64\";\n default:\n throw new Error(\n `processor architecture '${arch}' is not currently supported by Platforma ecosystem. The list of architectures supported: ` +\n JSON.stringify(Arches),\n );\n }\n}\n\nexport function downloadArchive(\n logger: winston.Logger,\n options?: {\n version?: string;\n showProgress?: boolean;\n downloadURL?: string;\n saveTo?: string;\n },\n): Promise<string> {\n const version = options?.version ?? getDefaultPlVersion();\n const showProgress = options?.showProgress ?? process.stdout.isTTY;\n\n const archiveName = `pl-${version}-${archiveArch()}.tgz`;\n const downloadURL =\n options?.downloadURL ?? `https://cdn.platforma.bio/software/pl/${archiveOS()}/${archiveName}`;\n\n const archiveFilePath = options?.saveTo ?? state.binaries(archiveName);\n if (fs.existsSync(archiveFilePath)) {\n logger.info(`Platforma Backend archive download skipped: '${archiveFilePath}' already exists`);\n return Promise.resolve(archiveFilePath);\n }\n\n fs.mkdirSync(path.dirname(archiveFilePath), { recursive: true });\n\n logger.info(\n `Downloading Platforma Backend archive:\\n URL: ${downloadURL}\\n Save to: ${archiveFilePath}`,\n );\n\n const request = https.get(downloadURL);\n\n return new Promise((resolve, reject) => {\n request.on(\"response\", (response) => {\n if (!response.statusCode) {\n const err = new Error(\n \"failed to download archive: no HTTP status code in response from server\",\n );\n request.destroy();\n reject(err);\n return;\n }\n if (response.statusCode !== 200) {\n const err = new Error(\n `failed to download archive: ${response.statusCode} ${response.statusMessage}`,\n );\n request.destroy();\n reject(err);\n return;\n }\n\n const totalBytes = parseInt(response.headers[\"content-length\"] || \"0\", 10);\n let downloadedBytes = 0;\n\n const archive = fs.createWriteStream(archiveFilePath);\n\n response.pipe(archive);\n response.on(\"data\", (chunk) => {\n downloadedBytes += chunk.length;\n const progress = (downloadedBytes / totalBytes) * 100;\n if (showProgress) {\n process.stdout.write(` downloading: ${progress.toFixed(2)}%\\r`);\n }\n });\n\n response.on(\"error\", (err: Error) => {\n fs.unlinkSync(archiveFilePath);\n logger.error(`Failed to download Platforma Binary: ${err.message}`);\n request.destroy();\n reject(err);\n });\n\n archive.on(\"finish\", () => {\n archive.close();\n logger.info(` ... download done.`);\n request.destroy();\n resolve(archiveFilePath);\n });\n });\n });\n}\n\nexport function extractArchive(\n logger: winston.Logger,\n options?: {\n version?: string;\n archivePath?: string;\n extractTo?: string;\n },\n): string {\n logger.debug(\"extracting archive...\");\n\n const version = options?.version ?? getDefaultPlVersion();\n logger.debug(` version: '${version}'`);\n const archiveName = `${binaryDirName({ version })}.tgz`;\n\n const archivePath = options?.archivePath ?? state.binaries(archiveName);\n logger.debug(` archive path: '${archivePath}'`);\n\n const targetDir = options?.extractTo ?? trimExtension(archivePath);\n logger.debug(` target dir: '${targetDir}'`);\n\n if (fs.existsSync(targetDir)) {\n logger.info(`Platforma Backend binaries unpack skipped: '${targetDir}' exists`);\n return targetDir;\n }\n\n if (!fs.existsSync(archivePath)) {\n const msg = `Platforma Backend binary archive not found at '${archivePath}'`;\n logger.error(msg);\n throw new Error(msg);\n }\n\n if (!fs.existsSync(targetDir)) {\n logger.debug(` creating target dir '${targetDir}'`);\n fs.mkdirSync(targetDir, { recursive: true });\n }\n\n logger.info(\n `Unpacking Platforma Backend archive:\\n Archive: ${archivePath}\\n Target dir: ${targetDir}`,\n );\n\n tar.x({\n file: archivePath,\n cwd: targetDir,\n gzip: true,\n sync: true,\n });\n\n logger.info(` ... unpack done.`);\n\n return targetDir;\n}\n\nexport function getBinary(\n logger: winston.Logger,\n options?: { version?: string; showProgress?: boolean },\n): Promise<string> {\n return downloadArchive(logger, options).then((archivePath) =>\n extractArchive(logger, { archivePath }),\n );\n}\n\nfunction binaryDirName(options?: { version?: string }): string {\n const version = options?.version ?? getDefaultPlVersion();\n return `pl-${version}-${archiveArch()}`;\n}\n\nexport function binaryPath(version?: string, ...p: string[]): string {\n return state.binaries(binaryDirName({ version }), ...p);\n}\n\nfunction trimExtension(filename: string): string {\n const lastDotIndex = filename.lastIndexOf(\".\");\n if (lastDotIndex === -1) {\n return filename;\n }\n return filename.slice(0, lastDotIndex);\n}\n"],"names":["os","fs"],"mappings":"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"}
1
+ {"version":3,"file":"platforma.js","names":["state"],"sources":["../src/platforma.ts"],"sourcesContent":["import os from \"node:os\";\nimport fs from \"node:fs\";\nimport https from \"https\";\nimport path from \"node:path\";\n\nimport * as tar from \"tar\";\nimport type winston from \"winston\";\nimport state from \"./state\";\nimport { getDefaultPlVersion } from \"@milaboratories/pl-deployments\";\n\nexport const OSes = [\"linux\", \"macos\", \"windows\"] as const;\nexport type OSType = (typeof OSes)[number];\n\nexport function archiveOS(osName?: string): OSType {\n const platform = osName ?? os.platform();\n\n switch (platform) {\n case \"darwin\":\n return \"macos\";\n case \"linux\":\n return \"linux\";\n case \"win32\":\n return \"windows\";\n default:\n throw new Error(\n `operating system '${platform}' is not currently supported by Platforma ecosystem. The list of OSes supported: ` +\n JSON.stringify(OSes),\n );\n }\n}\n\nexport const Arches = [\"amd64\", \"arm64\"] as const;\nexport type ArchType = (typeof Arches)[number];\n\nexport function archiveArch(archName?: string): ArchType {\n const arch = archName ?? os.arch();\n\n switch (arch) {\n case \"arm64\":\n return \"arm64\";\n case \"x64\":\n return \"amd64\";\n default:\n throw new Error(\n `processor architecture '${arch}' is not currently supported by Platforma ecosystem. The list of architectures supported: ` +\n JSON.stringify(Arches),\n );\n }\n}\n\nexport function downloadArchive(\n logger: winston.Logger,\n options?: {\n version?: string;\n showProgress?: boolean;\n downloadURL?: string;\n saveTo?: string;\n },\n): Promise<string> {\n const version = options?.version ?? getDefaultPlVersion();\n const showProgress = options?.showProgress ?? process.stdout.isTTY;\n\n const archiveName = `pl-${version}-${archiveArch()}.tgz`;\n const downloadURL =\n options?.downloadURL ?? `https://cdn.platforma.bio/software/pl/${archiveOS()}/${archiveName}`;\n\n const archiveFilePath = options?.saveTo ?? state.binaries(archiveName);\n if (fs.existsSync(archiveFilePath)) {\n logger.info(`Platforma Backend archive download skipped: '${archiveFilePath}' already exists`);\n return Promise.resolve(archiveFilePath);\n }\n\n fs.mkdirSync(path.dirname(archiveFilePath), { recursive: true });\n\n logger.info(\n `Downloading Platforma Backend archive:\\n URL: ${downloadURL}\\n Save to: ${archiveFilePath}`,\n );\n\n const request = https.get(downloadURL);\n\n return new Promise((resolve, reject) => {\n request.on(\"response\", (response) => {\n if (!response.statusCode) {\n const err = new Error(\n \"failed to download archive: no HTTP status code in response from server\",\n );\n request.destroy();\n reject(err);\n return;\n }\n if (response.statusCode !== 200) {\n const err = new Error(\n `failed to download archive: ${response.statusCode} ${response.statusMessage}`,\n );\n request.destroy();\n reject(err);\n return;\n }\n\n const totalBytes = parseInt(response.headers[\"content-length\"] || \"0\", 10);\n let downloadedBytes = 0;\n\n const archive = fs.createWriteStream(archiveFilePath);\n\n response.pipe(archive);\n response.on(\"data\", (chunk) => {\n downloadedBytes += chunk.length;\n const progress = (downloadedBytes / totalBytes) * 100;\n if (showProgress) {\n process.stdout.write(` downloading: ${progress.toFixed(2)}%\\r`);\n }\n });\n\n response.on(\"error\", (err: Error) => {\n fs.unlinkSync(archiveFilePath);\n logger.error(`Failed to download Platforma Binary: ${err.message}`);\n request.destroy();\n reject(err);\n });\n\n archive.on(\"finish\", () => {\n archive.close();\n logger.info(` ... download done.`);\n request.destroy();\n resolve(archiveFilePath);\n });\n });\n });\n}\n\nexport function extractArchive(\n logger: winston.Logger,\n options?: {\n version?: string;\n archivePath?: string;\n extractTo?: string;\n },\n): string {\n logger.debug(\"extracting archive...\");\n\n const version = options?.version ?? getDefaultPlVersion();\n logger.debug(` version: '${version}'`);\n const archiveName = `${binaryDirName({ version })}.tgz`;\n\n const archivePath = options?.archivePath ?? state.binaries(archiveName);\n logger.debug(` archive path: '${archivePath}'`);\n\n const targetDir = options?.extractTo ?? trimExtension(archivePath);\n logger.debug(` target dir: '${targetDir}'`);\n\n if (fs.existsSync(targetDir)) {\n logger.info(`Platforma Backend binaries unpack skipped: '${targetDir}' exists`);\n return targetDir;\n }\n\n if (!fs.existsSync(archivePath)) {\n const msg = `Platforma Backend binary archive not found at '${archivePath}'`;\n logger.error(msg);\n throw new Error(msg);\n }\n\n if (!fs.existsSync(targetDir)) {\n logger.debug(` creating target dir '${targetDir}'`);\n fs.mkdirSync(targetDir, { recursive: true });\n }\n\n logger.info(\n `Unpacking Platforma Backend archive:\\n Archive: ${archivePath}\\n Target dir: ${targetDir}`,\n );\n\n tar.x({\n file: archivePath,\n cwd: targetDir,\n gzip: true,\n sync: true,\n });\n\n logger.info(` ... unpack done.`);\n\n return targetDir;\n}\n\nexport function getBinary(\n logger: winston.Logger,\n options?: { version?: string; showProgress?: boolean },\n): Promise<string> {\n return downloadArchive(logger, options).then((archivePath) =>\n extractArchive(logger, { archivePath }),\n );\n}\n\nfunction binaryDirName(options?: { version?: string }): string {\n const version = options?.version ?? getDefaultPlVersion();\n return `pl-${version}-${archiveArch()}`;\n}\n\nexport function binaryPath(version?: string, ...p: string[]): string {\n return state.binaries(binaryDirName({ version }), ...p);\n}\n\nfunction trimExtension(filename: string): string {\n const lastDotIndex = filename.lastIndexOf(\".\");\n if (lastDotIndex === -1) {\n return filename;\n }\n return filename.slice(0, lastDotIndex);\n}\n"],"mappings":"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"}
package/dist/run.cjs CHANGED
@@ -1,68 +1,65 @@
1
- 'use strict';
2
-
3
- var node_child_process = require('node:child_process');
1
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
4
2
  require('./state.cjs');
3
+ let node_child_process = require("node:child_process");
5
4
 
5
+ //#region src/run.ts
6
6
  function runCommands(logger, cmds, options) {
7
- const buffers = [];
8
- const children = [];
9
- for (const cmd of cmds) {
10
- const opts = {
11
- cwd: cmd.workdir,
12
- env: {
13
- ...cmd.envs,
14
- ...options?.env,
15
- },
16
- ...cmd.runOpts,
17
- ...options,
18
- };
19
- if (cmd.async) {
20
- const child = run(logger, cmd.cmd, cmd.args, opts);
21
- children.push(child);
22
- }
23
- else {
24
- const result = runSync(logger, cmd.cmd, cmd.args, opts);
25
- buffers.push(result);
26
- if (result.error || result.status !== 0) {
27
- break;
28
- }
29
- }
30
- }
31
- return {
32
- executed: buffers,
33
- spawned: children,
34
- };
7
+ const buffers = [];
8
+ const children = [];
9
+ for (const cmd of cmds) {
10
+ const opts = {
11
+ cwd: cmd.workdir,
12
+ env: {
13
+ ...cmd.envs,
14
+ ...options?.env
15
+ },
16
+ ...cmd.runOpts,
17
+ ...options
18
+ };
19
+ if (cmd.async) {
20
+ const child = run(logger, cmd.cmd, cmd.args, opts);
21
+ children.push(child);
22
+ } else {
23
+ const result = runSync(logger, cmd.cmd, cmd.args, opts);
24
+ buffers.push(result);
25
+ if (result.error || result.status !== 0) break;
26
+ }
27
+ }
28
+ return {
29
+ executed: buffers,
30
+ spawned: children
31
+ };
35
32
  }
36
33
  function run(logger, cmd, args, options) {
37
- logger.debug(`Running:\n cmd: ${JSON.stringify([cmd, ...args])}\n wd: ${options.cwd?.toString()}`);
38
- options.env = { ...process.env, ...options.env };
39
- logger.debug(" spawning child process");
40
- const child = node_child_process.spawn(cmd, args, options);
41
- let exitAfterChild = false;
42
- //
43
- // Ensure Ctrl+C causes right finalization order: first stop child process, then stop the parent.
44
- //
45
- const sigintHandler = () => {
46
- child.kill("SIGINT");
47
- exitAfterChild = true;
48
- };
49
- logger.debug(" setting up signal handler");
50
- process.on("SIGINT", sigintHandler);
51
- child.on("close", (code) => {
52
- process.removeListener("SIGINT", sigintHandler);
53
- if (exitAfterChild) {
54
- process.exit(code);
55
- }
56
- });
57
- return child;
34
+ logger.debug(`Running:\n cmd: ${JSON.stringify([cmd, ...args])}\n wd: ${options.cwd?.toString()}`);
35
+ options.env = {
36
+ ...process.env,
37
+ ...options.env
38
+ };
39
+ logger.debug(" spawning child process");
40
+ const child = (0, node_child_process.spawn)(cmd, args, options);
41
+ let exitAfterChild = false;
42
+ const sigintHandler = () => {
43
+ child.kill("SIGINT");
44
+ exitAfterChild = true;
45
+ };
46
+ logger.debug(" setting up signal handler");
47
+ process.on("SIGINT", sigintHandler);
48
+ child.on("close", (code) => {
49
+ process.removeListener("SIGINT", sigintHandler);
50
+ if (exitAfterChild) process.exit(code);
51
+ });
52
+ return child;
58
53
  }
59
54
  function runSync(logger, cmd, args, options) {
60
- logger.debug(`Running:\n cmd: ${JSON.stringify([cmd, ...args])}\n opts: ${JSON.stringify(options)}`);
61
- options.env = { ...process.env, ...options.env };
62
- return node_child_process.spawnSync(cmd, args, options);
55
+ logger.debug(`Running:\n cmd: ${JSON.stringify([cmd, ...args])}\n opts: ${JSON.stringify(options)}`);
56
+ options.env = {
57
+ ...process.env,
58
+ ...options.env
59
+ };
60
+ return (0, node_child_process.spawnSync)(cmd, args, options);
63
61
  }
64
62
 
65
- exports.run = run;
63
+ //#endregion
66
64
  exports.runCommands = runCommands;
67
- exports.runSync = runSync;
68
- //# sourceMappingURL=run.cjs.map
65
+ //# sourceMappingURL=run.cjs.map
package/dist/run.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.cjs","sources":["../src/run.ts"],"sourcesContent":["import type { SpawnOptions, SpawnSyncReturns, ChildProcess } from \"node:child_process\";\nimport { spawnSync, spawn } from \"node:child_process\";\nimport type { instanceCommand } from \"./state\";\nimport state from \"./state\";\nimport type winston from \"winston\";\n\ntype runResult = {\n executed: SpawnSyncReturns<Buffer>[];\n spawned: ChildProcess[];\n};\n\nexport function runCommands(\n logger: winston.Logger,\n cmds: instanceCommand[],\n options?: SpawnOptions,\n): runResult {\n const buffers: SpawnSyncReturns<Buffer>[] = [];\n const children: ChildProcess[] = [];\n for (const cmd of cmds) {\n const opts = {\n cwd: cmd.workdir,\n env: {\n ...cmd.envs,\n ...options?.env,\n },\n ...cmd.runOpts,\n ...options,\n };\n\n if (cmd.async) {\n const child = run(logger, cmd.cmd, cmd.args, opts);\n children.push(child);\n } else {\n const result = runSync(logger, cmd.cmd, cmd.args, opts);\n buffers.push(result);\n if (result.error || result.status !== 0) {\n break;\n }\n }\n }\n\n return {\n executed: buffers,\n spawned: children,\n };\n}\n\nexport function rerunLast(logger: winston.Logger, options: SpawnOptions): runResult {\n const instance = state.currentInstance;\n\n if (!instance) {\n throw new Error(\"no previous run info found: this is the first run after package installation\");\n }\n\n return runCommands(logger, instance.upCommands, options);\n}\n\nexport function run(\n logger: winston.Logger,\n cmd: string,\n args: readonly string[],\n options: SpawnOptions,\n): ChildProcess {\n logger.debug(\n `Running:\\n cmd: ${JSON.stringify([cmd, ...args])}\\n wd: ${options.cwd?.toString()}`,\n );\n\n options.env = { ...process.env, ...options.env };\n logger.debug(\" spawning child process\");\n const child = spawn(cmd, args, options);\n let exitAfterChild: boolean = false;\n\n //\n // Ensure Ctrl+C causes right finalization order: first stop child process, then stop the parent.\n //\n const sigintHandler = () => {\n child.kill(\"SIGINT\");\n exitAfterChild = true;\n };\n\n logger.debug(\" setting up signal handler\");\n process.on(\"SIGINT\", sigintHandler);\n\n child.on(\"close\", (code) => {\n process.removeListener(\"SIGINT\", sigintHandler);\n if (exitAfterChild) {\n process.exit(code);\n }\n });\n\n return child;\n}\n\nexport function runSync(\n logger: winston.Logger,\n cmd: string,\n args: readonly string[],\n options: SpawnOptions,\n): SpawnSyncReturns<Buffer> {\n logger.debug(\n `Running:\\n cmd: ${JSON.stringify([cmd, ...args])}\\n opts: ${JSON.stringify(options)}`,\n );\n\n options.env = { ...process.env, ...options.env };\n return spawnSync(cmd, args, options);\n}\n"],"names":["spawn","spawnSync"],"mappings":"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"}
1
+ {"version":3,"file":"run.cjs","names":[],"sources":["../src/run.ts"],"sourcesContent":["import type { SpawnOptions, SpawnSyncReturns, ChildProcess } from \"node:child_process\";\nimport { spawnSync, spawn } from \"node:child_process\";\nimport type { instanceCommand } from \"./state\";\nimport state from \"./state\";\nimport type winston from \"winston\";\n\ntype runResult = {\n executed: SpawnSyncReturns<Buffer>[];\n spawned: ChildProcess[];\n};\n\nexport function runCommands(\n logger: winston.Logger,\n cmds: instanceCommand[],\n options?: SpawnOptions,\n): runResult {\n const buffers: SpawnSyncReturns<Buffer>[] = [];\n const children: ChildProcess[] = [];\n for (const cmd of cmds) {\n const opts = {\n cwd: cmd.workdir,\n env: {\n ...cmd.envs,\n ...options?.env,\n },\n ...cmd.runOpts,\n ...options,\n };\n\n if (cmd.async) {\n const child = run(logger, cmd.cmd, cmd.args, opts);\n children.push(child);\n } else {\n const result = runSync(logger, cmd.cmd, cmd.args, opts);\n buffers.push(result);\n if (result.error || result.status !== 0) {\n break;\n }\n }\n }\n\n return {\n executed: buffers,\n spawned: children,\n };\n}\n\nexport function rerunLast(logger: winston.Logger, options: SpawnOptions): runResult {\n const instance = state.currentInstance;\n\n if (!instance) {\n throw new Error(\"no previous run info found: this is the first run after package installation\");\n }\n\n return runCommands(logger, instance.upCommands, options);\n}\n\nexport function run(\n logger: winston.Logger,\n cmd: string,\n args: readonly string[],\n options: SpawnOptions,\n): ChildProcess {\n logger.debug(\n `Running:\\n cmd: ${JSON.stringify([cmd, ...args])}\\n wd: ${options.cwd?.toString()}`,\n );\n\n options.env = { ...process.env, ...options.env };\n logger.debug(\" spawning child process\");\n const child = spawn(cmd, args, options);\n let exitAfterChild: boolean = false;\n\n //\n // Ensure Ctrl+C causes right finalization order: first stop child process, then stop the parent.\n //\n const sigintHandler = () => {\n child.kill(\"SIGINT\");\n exitAfterChild = true;\n };\n\n logger.debug(\" setting up signal handler\");\n process.on(\"SIGINT\", sigintHandler);\n\n child.on(\"close\", (code) => {\n process.removeListener(\"SIGINT\", sigintHandler);\n if (exitAfterChild) {\n process.exit(code);\n }\n });\n\n return child;\n}\n\nexport function runSync(\n logger: winston.Logger,\n cmd: string,\n args: readonly string[],\n options: SpawnOptions,\n): SpawnSyncReturns<Buffer> {\n logger.debug(\n `Running:\\n cmd: ${JSON.stringify([cmd, ...args])}\\n opts: ${JSON.stringify(options)}`,\n );\n\n options.env = { ...process.env, ...options.env };\n return spawnSync(cmd, args, options);\n}\n"],"mappings":";;;;;AAWA,SAAgB,YACd,QACA,MACA,SACW;CACX,MAAM,UAAsC,EAAE;CAC9C,MAAM,WAA2B,EAAE;AACnC,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,OAAO;GACX,KAAK,IAAI;GACT,KAAK;IACH,GAAG,IAAI;IACP,GAAG,SAAS;IACb;GACD,GAAG,IAAI;GACP,GAAG;GACJ;AAED,MAAI,IAAI,OAAO;GACb,MAAM,QAAQ,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM,KAAK;AAClD,YAAS,KAAK,MAAM;SACf;GACL,MAAM,SAAS,QAAQ,QAAQ,IAAI,KAAK,IAAI,MAAM,KAAK;AACvD,WAAQ,KAAK,OAAO;AACpB,OAAI,OAAO,SAAS,OAAO,WAAW,EACpC;;;AAKN,QAAO;EACL,UAAU;EACV,SAAS;EACV;;AAaH,SAAgB,IACd,QACA,KACA,MACA,SACc;AACd,QAAO,MACL,oBAAoB,KAAK,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,UAAU,QAAQ,KAAK,UAAU,GACrF;AAED,SAAQ,MAAM;EAAE,GAAG,QAAQ;EAAK,GAAG,QAAQ;EAAK;AAChD,QAAO,MAAM,2BAA2B;CACxC,MAAM,sCAAc,KAAK,MAAM,QAAQ;CACvC,IAAI,iBAA0B;CAK9B,MAAM,sBAAsB;AAC1B,QAAM,KAAK,SAAS;AACpB,mBAAiB;;AAGnB,QAAO,MAAM,8BAA8B;AAC3C,SAAQ,GAAG,UAAU,cAAc;AAEnC,OAAM,GAAG,UAAU,SAAS;AAC1B,UAAQ,eAAe,UAAU,cAAc;AAC/C,MAAI,eACF,SAAQ,KAAK,KAAK;GAEpB;AAEF,QAAO;;AAGT,SAAgB,QACd,QACA,KACA,MACA,SAC0B;AAC1B,QAAO,MACL,oBAAoB,KAAK,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,YAAY,KAAK,UAAU,QAAQ,GACvF;AAED,SAAQ,MAAM;EAAE,GAAG,QAAQ;EAAK,GAAG,QAAQ;EAAK;AAChD,0CAAiB,KAAK,MAAM,QAAQ"}
package/dist/run.js CHANGED
@@ -1,64 +1,64 @@
1
- import { spawn, spawnSync } from 'node:child_process';
2
- import './state.js';
1
+ import "./state.js";
2
+ import { spawn, spawnSync } from "node:child_process";
3
3
 
4
+ //#region src/run.ts
4
5
  function runCommands(logger, cmds, options) {
5
- const buffers = [];
6
- const children = [];
7
- for (const cmd of cmds) {
8
- const opts = {
9
- cwd: cmd.workdir,
10
- env: {
11
- ...cmd.envs,
12
- ...options?.env,
13
- },
14
- ...cmd.runOpts,
15
- ...options,
16
- };
17
- if (cmd.async) {
18
- const child = run(logger, cmd.cmd, cmd.args, opts);
19
- children.push(child);
20
- }
21
- else {
22
- const result = runSync(logger, cmd.cmd, cmd.args, opts);
23
- buffers.push(result);
24
- if (result.error || result.status !== 0) {
25
- break;
26
- }
27
- }
28
- }
29
- return {
30
- executed: buffers,
31
- spawned: children,
32
- };
6
+ const buffers = [];
7
+ const children = [];
8
+ for (const cmd of cmds) {
9
+ const opts = {
10
+ cwd: cmd.workdir,
11
+ env: {
12
+ ...cmd.envs,
13
+ ...options?.env
14
+ },
15
+ ...cmd.runOpts,
16
+ ...options
17
+ };
18
+ if (cmd.async) {
19
+ const child = run(logger, cmd.cmd, cmd.args, opts);
20
+ children.push(child);
21
+ } else {
22
+ const result = runSync(logger, cmd.cmd, cmd.args, opts);
23
+ buffers.push(result);
24
+ if (result.error || result.status !== 0) break;
25
+ }
26
+ }
27
+ return {
28
+ executed: buffers,
29
+ spawned: children
30
+ };
33
31
  }
34
32
  function run(logger, cmd, args, options) {
35
- logger.debug(`Running:\n cmd: ${JSON.stringify([cmd, ...args])}\n wd: ${options.cwd?.toString()}`);
36
- options.env = { ...process.env, ...options.env };
37
- logger.debug(" spawning child process");
38
- const child = spawn(cmd, args, options);
39
- let exitAfterChild = false;
40
- //
41
- // Ensure Ctrl+C causes right finalization order: first stop child process, then stop the parent.
42
- //
43
- const sigintHandler = () => {
44
- child.kill("SIGINT");
45
- exitAfterChild = true;
46
- };
47
- logger.debug(" setting up signal handler");
48
- process.on("SIGINT", sigintHandler);
49
- child.on("close", (code) => {
50
- process.removeListener("SIGINT", sigintHandler);
51
- if (exitAfterChild) {
52
- process.exit(code);
53
- }
54
- });
55
- return child;
33
+ logger.debug(`Running:\n cmd: ${JSON.stringify([cmd, ...args])}\n wd: ${options.cwd?.toString()}`);
34
+ options.env = {
35
+ ...process.env,
36
+ ...options.env
37
+ };
38
+ logger.debug(" spawning child process");
39
+ const child = spawn(cmd, args, options);
40
+ let exitAfterChild = false;
41
+ const sigintHandler = () => {
42
+ child.kill("SIGINT");
43
+ exitAfterChild = true;
44
+ };
45
+ logger.debug(" setting up signal handler");
46
+ process.on("SIGINT", sigintHandler);
47
+ child.on("close", (code) => {
48
+ process.removeListener("SIGINT", sigintHandler);
49
+ if (exitAfterChild) process.exit(code);
50
+ });
51
+ return child;
56
52
  }
57
53
  function runSync(logger, cmd, args, options) {
58
- logger.debug(`Running:\n cmd: ${JSON.stringify([cmd, ...args])}\n opts: ${JSON.stringify(options)}`);
59
- options.env = { ...process.env, ...options.env };
60
- return spawnSync(cmd, args, options);
54
+ logger.debug(`Running:\n cmd: ${JSON.stringify([cmd, ...args])}\n opts: ${JSON.stringify(options)}`);
55
+ options.env = {
56
+ ...process.env,
57
+ ...options.env
58
+ };
59
+ return spawnSync(cmd, args, options);
61
60
  }
62
61
 
63
- export { run, runCommands, runSync };
64
- //# sourceMappingURL=run.js.map
62
+ //#endregion
63
+ export { runCommands };
64
+ //# sourceMappingURL=run.js.map
package/dist/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sources":["../src/run.ts"],"sourcesContent":["import type { SpawnOptions, SpawnSyncReturns, ChildProcess } from \"node:child_process\";\nimport { spawnSync, spawn } from \"node:child_process\";\nimport type { instanceCommand } from \"./state\";\nimport state from \"./state\";\nimport type winston from \"winston\";\n\ntype runResult = {\n executed: SpawnSyncReturns<Buffer>[];\n spawned: ChildProcess[];\n};\n\nexport function runCommands(\n logger: winston.Logger,\n cmds: instanceCommand[],\n options?: SpawnOptions,\n): runResult {\n const buffers: SpawnSyncReturns<Buffer>[] = [];\n const children: ChildProcess[] = [];\n for (const cmd of cmds) {\n const opts = {\n cwd: cmd.workdir,\n env: {\n ...cmd.envs,\n ...options?.env,\n },\n ...cmd.runOpts,\n ...options,\n };\n\n if (cmd.async) {\n const child = run(logger, cmd.cmd, cmd.args, opts);\n children.push(child);\n } else {\n const result = runSync(logger, cmd.cmd, cmd.args, opts);\n buffers.push(result);\n if (result.error || result.status !== 0) {\n break;\n }\n }\n }\n\n return {\n executed: buffers,\n spawned: children,\n };\n}\n\nexport function rerunLast(logger: winston.Logger, options: SpawnOptions): runResult {\n const instance = state.currentInstance;\n\n if (!instance) {\n throw new Error(\"no previous run info found: this is the first run after package installation\");\n }\n\n return runCommands(logger, instance.upCommands, options);\n}\n\nexport function run(\n logger: winston.Logger,\n cmd: string,\n args: readonly string[],\n options: SpawnOptions,\n): ChildProcess {\n logger.debug(\n `Running:\\n cmd: ${JSON.stringify([cmd, ...args])}\\n wd: ${options.cwd?.toString()}`,\n );\n\n options.env = { ...process.env, ...options.env };\n logger.debug(\" spawning child process\");\n const child = spawn(cmd, args, options);\n let exitAfterChild: boolean = false;\n\n //\n // Ensure Ctrl+C causes right finalization order: first stop child process, then stop the parent.\n //\n const sigintHandler = () => {\n child.kill(\"SIGINT\");\n exitAfterChild = true;\n };\n\n logger.debug(\" setting up signal handler\");\n process.on(\"SIGINT\", sigintHandler);\n\n child.on(\"close\", (code) => {\n process.removeListener(\"SIGINT\", sigintHandler);\n if (exitAfterChild) {\n process.exit(code);\n }\n });\n\n return child;\n}\n\nexport function runSync(\n logger: winston.Logger,\n cmd: string,\n args: readonly string[],\n options: SpawnOptions,\n): SpawnSyncReturns<Buffer> {\n logger.debug(\n `Running:\\n cmd: ${JSON.stringify([cmd, ...args])}\\n opts: ${JSON.stringify(options)}`,\n );\n\n options.env = { ...process.env, ...options.env };\n return spawnSync(cmd, args, options);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","names":[],"sources":["../src/run.ts"],"sourcesContent":["import type { SpawnOptions, SpawnSyncReturns, ChildProcess } from \"node:child_process\";\nimport { spawnSync, spawn } from \"node:child_process\";\nimport type { instanceCommand } from \"./state\";\nimport state from \"./state\";\nimport type winston from \"winston\";\n\ntype runResult = {\n executed: SpawnSyncReturns<Buffer>[];\n spawned: ChildProcess[];\n};\n\nexport function runCommands(\n logger: winston.Logger,\n cmds: instanceCommand[],\n options?: SpawnOptions,\n): runResult {\n const buffers: SpawnSyncReturns<Buffer>[] = [];\n const children: ChildProcess[] = [];\n for (const cmd of cmds) {\n const opts = {\n cwd: cmd.workdir,\n env: {\n ...cmd.envs,\n ...options?.env,\n },\n ...cmd.runOpts,\n ...options,\n };\n\n if (cmd.async) {\n const child = run(logger, cmd.cmd, cmd.args, opts);\n children.push(child);\n } else {\n const result = runSync(logger, cmd.cmd, cmd.args, opts);\n buffers.push(result);\n if (result.error || result.status !== 0) {\n break;\n }\n }\n }\n\n return {\n executed: buffers,\n spawned: children,\n };\n}\n\nexport function rerunLast(logger: winston.Logger, options: SpawnOptions): runResult {\n const instance = state.currentInstance;\n\n if (!instance) {\n throw new Error(\"no previous run info found: this is the first run after package installation\");\n }\n\n return runCommands(logger, instance.upCommands, options);\n}\n\nexport function run(\n logger: winston.Logger,\n cmd: string,\n args: readonly string[],\n options: SpawnOptions,\n): ChildProcess {\n logger.debug(\n `Running:\\n cmd: ${JSON.stringify([cmd, ...args])}\\n wd: ${options.cwd?.toString()}`,\n );\n\n options.env = { ...process.env, ...options.env };\n logger.debug(\" spawning child process\");\n const child = spawn(cmd, args, options);\n let exitAfterChild: boolean = false;\n\n //\n // Ensure Ctrl+C causes right finalization order: first stop child process, then stop the parent.\n //\n const sigintHandler = () => {\n child.kill(\"SIGINT\");\n exitAfterChild = true;\n };\n\n logger.debug(\" setting up signal handler\");\n process.on(\"SIGINT\", sigintHandler);\n\n child.on(\"close\", (code) => {\n process.removeListener(\"SIGINT\", sigintHandler);\n if (exitAfterChild) {\n process.exit(code);\n }\n });\n\n return child;\n}\n\nexport function runSync(\n logger: winston.Logger,\n cmd: string,\n args: readonly string[],\n options: SpawnOptions,\n): SpawnSyncReturns<Buffer> {\n logger.debug(\n `Running:\\n cmd: ${JSON.stringify([cmd, ...args])}\\n opts: ${JSON.stringify(options)}`,\n );\n\n options.env = { ...process.env, ...options.env };\n return spawnSync(cmd, args, options);\n}\n"],"mappings":";;;;AAWA,SAAgB,YACd,QACA,MACA,SACW;CACX,MAAM,UAAsC,EAAE;CAC9C,MAAM,WAA2B,EAAE;AACnC,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,OAAO;GACX,KAAK,IAAI;GACT,KAAK;IACH,GAAG,IAAI;IACP,GAAG,SAAS;IACb;GACD,GAAG,IAAI;GACP,GAAG;GACJ;AAED,MAAI,IAAI,OAAO;GACb,MAAM,QAAQ,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM,KAAK;AAClD,YAAS,KAAK,MAAM;SACf;GACL,MAAM,SAAS,QAAQ,QAAQ,IAAI,KAAK,IAAI,MAAM,KAAK;AACvD,WAAQ,KAAK,OAAO;AACpB,OAAI,OAAO,SAAS,OAAO,WAAW,EACpC;;;AAKN,QAAO;EACL,UAAU;EACV,SAAS;EACV;;AAaH,SAAgB,IACd,QACA,KACA,MACA,SACc;AACd,QAAO,MACL,oBAAoB,KAAK,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,UAAU,QAAQ,KAAK,UAAU,GACrF;AAED,SAAQ,MAAM;EAAE,GAAG,QAAQ;EAAK,GAAG,QAAQ;EAAK;AAChD,QAAO,MAAM,2BAA2B;CACxC,MAAM,QAAQ,MAAM,KAAK,MAAM,QAAQ;CACvC,IAAI,iBAA0B;CAK9B,MAAM,sBAAsB;AAC1B,QAAM,KAAK,SAAS;AACpB,mBAAiB;;AAGnB,QAAO,MAAM,8BAA8B;AAC3C,SAAQ,GAAG,UAAU,cAAc;AAEnC,OAAM,GAAG,UAAU,SAAS;AAC1B,UAAQ,eAAe,UAAU,cAAc;AAC/C,MAAI,eACF,SAAQ,KAAK,KAAK;GAEpB;AAEF,QAAO;;AAGT,SAAgB,QACd,QACA,KACA,MACA,SAC0B;AAC1B,QAAO,MACL,oBAAoB,KAAK,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,YAAY,KAAK,UAAU,QAAQ,GACvF;AAED,SAAQ,MAAM;EAAE,GAAG,QAAQ;EAAK,GAAG,QAAQ;EAAK;AAChD,QAAO,UAAU,KAAK,MAAM,QAAQ"}