@platforma-sdk/bootstrap 5.3.36 → 5.3.38
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/dist/block.cjs.map +1 -1
- package/dist/block.js.map +1 -1
- package/dist/cli.cjs +0 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/cmd-opts.cjs +0 -1
- package/dist/cmd-opts.cjs.map +1 -1
- package/dist/cmd-opts.js.map +1 -1
- package/dist/commands/create-block.cjs +0 -1
- package/dist/commands/create-block.cjs.map +1 -1
- package/dist/commands/create-block.js.map +1 -1
- package/dist/commands/reset.cjs +0 -1
- package/dist/commands/reset.cjs.map +1 -1
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/start/docker/s3.cjs.map +1 -1
- package/dist/commands/start/docker/s3.js.map +1 -1
- package/dist/commands/start/docker.cjs.map +1 -1
- package/dist/commands/start/docker.js.map +1 -1
- package/dist/commands/start/local/s3.cjs.map +1 -1
- package/dist/commands/start/local/s3.js.map +1 -1
- package/dist/commands/start/local.cjs.map +1 -1
- package/dist/commands/start/local.js.map +1 -1
- package/dist/commands/start.cjs +0 -1
- package/dist/commands/start.cjs.map +1 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stop.cjs +0 -1
- package/dist/commands/stop.cjs.map +1 -1
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/svc/create/arg-parser.cjs.map +1 -1
- package/dist/commands/svc/create/arg-parser.js.map +1 -1
- package/dist/commands/svc/create/docker/s3.cjs.map +1 -1
- package/dist/commands/svc/create/docker/s3.js.map +1 -1
- package/dist/commands/svc/create/docker.cjs.map +1 -1
- package/dist/commands/svc/create/docker.js.map +1 -1
- package/dist/commands/svc/create/local/s3.cjs.map +1 -1
- package/dist/commands/svc/create/local/s3.js.map +1 -1
- package/dist/commands/svc/create/local.cjs.map +1 -1
- package/dist/commands/svc/create/local.js.map +1 -1
- package/dist/commands/svc/delete.cjs +0 -1
- package/dist/commands/svc/delete.cjs.map +1 -1
- package/dist/commands/svc/delete.js.map +1 -1
- package/dist/commands/svc/down.cjs +0 -1
- package/dist/commands/svc/down.cjs.map +1 -1
- package/dist/commands/svc/down.js.map +1 -1
- package/dist/commands/svc/list.cjs +0 -1
- package/dist/commands/svc/list.cjs.map +1 -1
- package/dist/commands/svc/list.js.map +1 -1
- package/dist/commands/svc/up.cjs +0 -1
- package/dist/commands/svc/up.cjs.map +1 -1
- package/dist/commands/svc/up.js.map +1 -1
- package/dist/core.cjs +5 -3
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +5 -4
- package/dist/core.js.map +1 -1
- package/dist/package.cjs +1 -0
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/dist/platforma.cjs +6 -0
- package/dist/platforma.cjs.map +1 -1
- package/dist/platforma.js +1 -1
- package/dist/platforma.js.map +1 -1
- package/dist/run.cjs +2 -1
- package/dist/run.cjs.map +1 -1
- package/dist/run.js +1 -1
- package/dist/run.js.map +1 -1
- package/dist/state.cjs.map +1 -1
- package/dist/state.js.map +1 -1
- package/dist/templates/compose.cjs.map +1 -1
- package/dist/templates/compose.js.map +1 -1
- package/dist/templates/pl-config.cjs.map +1 -1
- package/dist/templates/pl-config.js.map +1 -1
- package/dist/templates/types.cjs.map +1 -1
- package/dist/templates/types.js.map +1 -1
- package/dist/util.cjs.map +1 -1
- package/dist/util.js.map +1 -1
- package/package.json +5 -5
package/dist/block.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.cjs","names":["z","path","readlineSync","fs","os","Writable"],"sources":["../src/block.ts"],"sourcesContent":["import { createWriteStream } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type winston from \"winston\";\nimport { Writable } from \"node:stream\";\nimport os from \"node:os\";\nimport readlineSync from \"readline-sync\";\nimport { z } from \"zod\";\nimport decompress from \"decompress\";\n\nconst blockPlatformsToChoose = [\"Python\"];\nconst allPlatforms = [\"Tengo\", \"Python\"] as const;\nconst CreateBlockPlatforms = z.union([z.literal(\"Tengo\"), z.literal(\"Python\")]);\nexport type CreateBlockPlatform = z.infer<typeof CreateBlockPlatforms>;\n\nconst CreateBlockOptions = z.object({\n npmOrgName: z.string().min(1),\n orgName: z.string().min(1, { message: `Organization name must be provided` }),\n blockName: z.string().min(1, { message: `Block name must be provided` }),\n softwarePlatforms: z.array(CreateBlockPlatforms).refine((p) => new Set(p).size === p.length, {\n message: \"Must be an array of unique software platforms\",\n }),\n});\nexport type CreateBlockOptions = z.infer<typeof CreateBlockOptions>;\n\n/** Creates a block by cloning block-boilerplate repository. */\nexport async function createBlock(logger: winston.Logger) {\n const { npmOrgName, orgName, blockName, softwarePlatforms } = askForOptions();\n const targetPath = path.join(process.cwd(), blockName);\n\n logger.info(`Downloading boilerplate code...`);\n await downloadAndUnzip(\n // 'https://github.com/milaboratory/platforma-block-boilerplate/archive/refs/heads/software_platforms.zip',\n // 'platforma-block-boilerplate-software_platforms',\n \"https://github.com/milaboratory/platforma-block-boilerplate/archive/refs/heads/main.zip\",\n \"platforma-block-boilerplate-main\",\n targetPath,\n );\n\n const platformsToRemove = allPlatforms.filter((p) => softwarePlatforms.indexOf(p) < 0);\n const noPlatforms = blockPlatformsToChoose.length == platformsToRemove.length;\n logger.info(\n `Keep platforms '${softwarePlatforms}', remove: '${platformsToRemove}'. Will remove all platforms? ${noPlatforms}`,\n );\n for (const p of platformsToRemove) {\n await removePlatform(targetPath, p);\n }\n if (noPlatforms) {\n await removePlatformsCompletely(targetPath);\n }\n\n logger.info(`Replace everything in the template with provided options...`);\n replaceRegexInAllFiles(targetPath, [\n // '@' literal ensures only npm org name will be renamed,\n // as public registry for software also is called platforma-open, but without '@'.\n // Also, don't rename an organization for runenv-python-3 package.\n { from: /@platforma-open(?!.*runenv-python-3)/g, to: `@${npmOrgName}` },\n\n { from: /my-org/g, to: orgName },\n\n { from: /block-boilerplate/g, to: blockName },\n ]);\n}\n\nfunction askForOptions(): CreateBlockOptions {\n let npmOrgName = readlineSync.question(\n 'Write an organization name for npm. Default is \"platforma-open\": ',\n );\n if (npmOrgName === \"\") {\n npmOrgName = \"platforma-open\";\n }\n\n let orgName = \"\";\n while (orgName.length < 1)\n orgName = readlineSync.question('Write an organization name, e.g. \"my-org\": ');\n\n let blockName = \"\";\n while (blockName.length < 1)\n blockName = readlineSync.question('Write a name of the block, e.g. \"hello-world\": ');\n\n const needSoftware = readlineSync.keyInYN(\"Create package for block's software?\");\n let softwarePlatforms = [\"Tengo\"];\n if (needSoftware) {\n while (softwarePlatforms.length < allPlatforms.length) {\n const index = readlineSync.keyInSelect(blockPlatformsToChoose, \"Choose software platform:\");\n if (index < 0) break;\n softwarePlatforms.push(blockPlatformsToChoose[index]);\n }\n }\n softwarePlatforms = Array.from(new Set(softwarePlatforms)).sort();\n\n const result = CreateBlockOptions.safeParse({\n npmOrgName,\n orgName,\n blockName,\n softwarePlatforms,\n });\n if (!result.success && result.error.issues.length) {\n throw new Error(result.error.issues.map((i) => i.message).join(\"; \"));\n }\n\n return result.data!;\n}\n\nasync function downloadAndUnzip(url: string, pathInArchive: string, outputPath: string) {\n const response = await fetch(url);\n const content = await response.blob();\n\n const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), \"create-repo\"));\n\n const tmpFile = path.join(tmpDir, \"packed-repo.zip\");\n const f = Writable.toWeb(createWriteStream(tmpFile));\n await content.stream().pipeTo(f);\n\n const tmpRepo = path.join(tmpDir, \"unpacked-repo\");\n await fs.mkdir(tmpRepo);\n await decompress(tmpFile, tmpRepo);\n\n await fs.cp(path.join(tmpRepo, pathInArchive), outputPath, { recursive: true });\n}\n\n/** Removes a bunch of dependencies to the platform. */\nasync function removePlatform(dir: string, platform: CreateBlockPlatform) {\n const p = platform.toLowerCase();\n\n // Remove <PlAlert> line from MainPage.vue\n // https://regex101.com/r/oCTyHk/1\n await deleteRegexInFile(\n path.join(dir, \"ui\", \"src\", \"pages\", \"MainPage.vue\"),\n new RegExp(`.*${p}Message.*\\\\n`, \"g\"),\n );\n\n // Remove an output from the model.\n await deleteRegexInFile(\n path.join(dir, \"model\", \"src\", \"index.ts\"),\n new RegExp(`.*${p}Message.*\\\\n\\\\n`, \"g\"),\n );\n\n // This regexp represents a block of code until the empty line.\n // https://regex101.com/r/Os8kX1/1\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"main.tpl.tengo\"),\n new RegExp(`.*${p}.*exec.builder.*[\\\\s\\\\S]*?\\\\n\\\\n`, \"g\"),\n );\n\n // Remove a line from the workflow output.\n // https://regex101.com/r/PkHwQ8/1\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"main.tpl.tengo\"),\n new RegExp(`.*${p}Message.*\\\\n`, \"g\"),\n );\n\n // Remove 2 lines: the one with the language message and the one with expect\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"wf.test.ts\"),\n new RegExp(`.*${p}Message.*\\\\n.*expect.*\\\\n\\\\n`, \"g\"),\n );\n\n await fs.rm(path.join(dir, \"software\", `src_${p}`), { recursive: true });\n\n await replaceInFile(path.join(dir, \"software\", \"package.json\"), (content) => {\n const json = JSON.parse(content);\n delete json[\"block-software\"][\"artifacts\"][`hello-${p}-artifact`];\n delete json[\"block-software\"][\"entrypoints\"][`hello-world-${p}`];\n return JSON.stringify(json, null, 2);\n });\n}\n\n/** Removes software directory completely and all references to it from the workspace. */\nasync function removePlatformsCompletely(dir: string) {\n await fs.rm(path.join(dir, \"software\"), { recursive: true });\n\n await replaceInFile(path.join(dir, \"workflow\", \"package.json\"), (content) => {\n const json = JSON.parse(content);\n delete json[\"dependencies\"][\"@platforma-open/my-org.block-boilerplate.software\"];\n return JSON.stringify(json, null, 2);\n });\n\n await deleteRegexInFile(path.join(dir, \"pnpm-workspace.yaml\"), /.*- software$\\n/gm);\n}\n\nasync function replaceRegexInAllFiles(dir: string, patterns: { from: RegExp; to: string }[]) {\n const files = await getAllFiles(dir);\n for (const { from, to } of patterns) {\n for (const fPath of files) {\n await replaceRegexInFile(fPath, from, to);\n }\n }\n}\n\nasync function getAllFiles(dir: string): Promise<string[]> {\n const allDirents = await fs.readdir(dir, {\n withFileTypes: true,\n recursive: true,\n });\n\n return allDirents.filter((f: any) => f.isFile()).map((f: any) => path.join(f.parentPath, f.name));\n}\n\nasync function replaceInFile(fPath: string, replacer: (content: string) => any) {\n const content = await fs.readFile(fPath);\n const newContent = replacer(content.toString());\n await fs.writeFile(fPath, newContent);\n}\n\nasync function replaceRegexInFile(fPath: string, from: RegExp, to: string) {\n return await replaceInFile(fPath, (content) => content.replaceAll(from, to));\n}\n\nasync function deleteRegexInFile(fPath: string, what: RegExp) {\n return await replaceRegexInFile(fPath, what, \"\");\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"block.cjs","names":["z","path","readlineSync","fs","os","Writable"],"sources":["../src/block.ts"],"sourcesContent":["import { createWriteStream } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type winston from \"winston\";\nimport { Writable } from \"node:stream\";\nimport os from \"node:os\";\nimport readlineSync from \"readline-sync\";\nimport { z } from \"zod\";\nimport decompress from \"decompress\";\n\nconst blockPlatformsToChoose = [\"Python\"];\nconst allPlatforms = [\"Tengo\", \"Python\"] as const;\nconst CreateBlockPlatforms = z.union([z.literal(\"Tengo\"), z.literal(\"Python\")]);\nexport type CreateBlockPlatform = z.infer<typeof CreateBlockPlatforms>;\n\nconst CreateBlockOptions = z.object({\n npmOrgName: z.string().min(1),\n orgName: z.string().min(1, { message: `Organization name must be provided` }),\n blockName: z.string().min(1, { message: `Block name must be provided` }),\n softwarePlatforms: z.array(CreateBlockPlatforms).refine((p) => new Set(p).size === p.length, {\n message: \"Must be an array of unique software platforms\",\n }),\n});\nexport type CreateBlockOptions = z.infer<typeof CreateBlockOptions>;\n\n/** Creates a block by cloning block-boilerplate repository. */\nexport async function createBlock(logger: winston.Logger) {\n const { npmOrgName, orgName, blockName, softwarePlatforms } = askForOptions();\n const targetPath = path.join(process.cwd(), blockName);\n\n logger.info(`Downloading boilerplate code...`);\n await downloadAndUnzip(\n // 'https://github.com/milaboratory/platforma-block-boilerplate/archive/refs/heads/software_platforms.zip',\n // 'platforma-block-boilerplate-software_platforms',\n \"https://github.com/milaboratory/platforma-block-boilerplate/archive/refs/heads/main.zip\",\n \"platforma-block-boilerplate-main\",\n targetPath,\n );\n\n const platformsToRemove = allPlatforms.filter((p) => softwarePlatforms.indexOf(p) < 0);\n const noPlatforms = blockPlatformsToChoose.length == platformsToRemove.length;\n logger.info(\n `Keep platforms '${softwarePlatforms}', remove: '${platformsToRemove}'. Will remove all platforms? ${noPlatforms}`,\n );\n for (const p of platformsToRemove) {\n await removePlatform(targetPath, p);\n }\n if (noPlatforms) {\n await removePlatformsCompletely(targetPath);\n }\n\n logger.info(`Replace everything in the template with provided options...`);\n replaceRegexInAllFiles(targetPath, [\n // '@' literal ensures only npm org name will be renamed,\n // as public registry for software also is called platforma-open, but without '@'.\n // Also, don't rename an organization for runenv-python-3 package.\n { from: /@platforma-open(?!.*runenv-python-3)/g, to: `@${npmOrgName}` },\n\n { from: /my-org/g, to: orgName },\n\n { from: /block-boilerplate/g, to: blockName },\n ]);\n}\n\nfunction askForOptions(): CreateBlockOptions {\n let npmOrgName = readlineSync.question(\n 'Write an organization name for npm. Default is \"platforma-open\": ',\n );\n if (npmOrgName === \"\") {\n npmOrgName = \"platforma-open\";\n }\n\n let orgName = \"\";\n while (orgName.length < 1)\n orgName = readlineSync.question('Write an organization name, e.g. \"my-org\": ');\n\n let blockName = \"\";\n while (blockName.length < 1)\n blockName = readlineSync.question('Write a name of the block, e.g. \"hello-world\": ');\n\n const needSoftware = readlineSync.keyInYN(\"Create package for block's software?\");\n let softwarePlatforms = [\"Tengo\"];\n if (needSoftware) {\n while (softwarePlatforms.length < allPlatforms.length) {\n const index = readlineSync.keyInSelect(blockPlatformsToChoose, \"Choose software platform:\");\n if (index < 0) break;\n softwarePlatforms.push(blockPlatformsToChoose[index]);\n }\n }\n softwarePlatforms = Array.from(new Set(softwarePlatforms)).sort();\n\n const result = CreateBlockOptions.safeParse({\n npmOrgName,\n orgName,\n blockName,\n softwarePlatforms,\n });\n if (!result.success && result.error.issues.length) {\n throw new Error(result.error.issues.map((i) => i.message).join(\"; \"));\n }\n\n return result.data!;\n}\n\nasync function downloadAndUnzip(url: string, pathInArchive: string, outputPath: string) {\n const response = await fetch(url);\n const content = await response.blob();\n\n const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), \"create-repo\"));\n\n const tmpFile = path.join(tmpDir, \"packed-repo.zip\");\n const f = Writable.toWeb(createWriteStream(tmpFile));\n await content.stream().pipeTo(f);\n\n const tmpRepo = path.join(tmpDir, \"unpacked-repo\");\n await fs.mkdir(tmpRepo);\n await decompress(tmpFile, tmpRepo);\n\n await fs.cp(path.join(tmpRepo, pathInArchive), outputPath, { recursive: true });\n}\n\n/** Removes a bunch of dependencies to the platform. */\nasync function removePlatform(dir: string, platform: CreateBlockPlatform) {\n const p = platform.toLowerCase();\n\n // Remove <PlAlert> line from MainPage.vue\n // https://regex101.com/r/oCTyHk/1\n await deleteRegexInFile(\n path.join(dir, \"ui\", \"src\", \"pages\", \"MainPage.vue\"),\n new RegExp(`.*${p}Message.*\\\\n`, \"g\"),\n );\n\n // Remove an output from the model.\n await deleteRegexInFile(\n path.join(dir, \"model\", \"src\", \"index.ts\"),\n new RegExp(`.*${p}Message.*\\\\n\\\\n`, \"g\"),\n );\n\n // This regexp represents a block of code until the empty line.\n // https://regex101.com/r/Os8kX1/1\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"main.tpl.tengo\"),\n new RegExp(`.*${p}.*exec.builder.*[\\\\s\\\\S]*?\\\\n\\\\n`, \"g\"),\n );\n\n // Remove a line from the workflow output.\n // https://regex101.com/r/PkHwQ8/1\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"main.tpl.tengo\"),\n new RegExp(`.*${p}Message.*\\\\n`, \"g\"),\n );\n\n // Remove 2 lines: the one with the language message and the one with expect\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"wf.test.ts\"),\n new RegExp(`.*${p}Message.*\\\\n.*expect.*\\\\n\\\\n`, \"g\"),\n );\n\n await fs.rm(path.join(dir, \"software\", `src_${p}`), { recursive: true });\n\n await replaceInFile(path.join(dir, \"software\", \"package.json\"), (content) => {\n const json = JSON.parse(content);\n delete json[\"block-software\"][\"artifacts\"][`hello-${p}-artifact`];\n delete json[\"block-software\"][\"entrypoints\"][`hello-world-${p}`];\n return JSON.stringify(json, null, 2);\n });\n}\n\n/** Removes software directory completely and all references to it from the workspace. */\nasync function removePlatformsCompletely(dir: string) {\n await fs.rm(path.join(dir, \"software\"), { recursive: true });\n\n await replaceInFile(path.join(dir, \"workflow\", \"package.json\"), (content) => {\n const json = JSON.parse(content);\n delete json[\"dependencies\"][\"@platforma-open/my-org.block-boilerplate.software\"];\n return JSON.stringify(json, null, 2);\n });\n\n await deleteRegexInFile(path.join(dir, \"pnpm-workspace.yaml\"), /.*- software$\\n/gm);\n}\n\nasync function replaceRegexInAllFiles(dir: string, patterns: { from: RegExp; to: string }[]) {\n const files = await getAllFiles(dir);\n for (const { from, to } of patterns) {\n for (const fPath of files) {\n await replaceRegexInFile(fPath, from, to);\n }\n }\n}\n\nasync function getAllFiles(dir: string): Promise<string[]> {\n const allDirents = await fs.readdir(dir, {\n withFileTypes: true,\n recursive: true,\n });\n\n return allDirents.filter((f: any) => f.isFile()).map((f: any) => path.join(f.parentPath, f.name));\n}\n\nasync function replaceInFile(fPath: string, replacer: (content: string) => any) {\n const content = await fs.readFile(fPath);\n const newContent = replacer(content.toString());\n await fs.writeFile(fPath, newContent);\n}\n\nasync function replaceRegexInFile(fPath: string, from: RegExp, to: string) {\n return await replaceInFile(fPath, (content) => content.replaceAll(from, to));\n}\n\nasync function deleteRegexInFile(fPath: string, what: RegExp) {\n return await replaceRegexInFile(fPath, what, \"\");\n}\n"],"mappings":"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"}
|
package/dist/block.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","names":["fs"],"sources":["../src/block.ts"],"sourcesContent":["import { createWriteStream } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type winston from \"winston\";\nimport { Writable } from \"node:stream\";\nimport os from \"node:os\";\nimport readlineSync from \"readline-sync\";\nimport { z } from \"zod\";\nimport decompress from \"decompress\";\n\nconst blockPlatformsToChoose = [\"Python\"];\nconst allPlatforms = [\"Tengo\", \"Python\"] as const;\nconst CreateBlockPlatforms = z.union([z.literal(\"Tengo\"), z.literal(\"Python\")]);\nexport type CreateBlockPlatform = z.infer<typeof CreateBlockPlatforms>;\n\nconst CreateBlockOptions = z.object({\n npmOrgName: z.string().min(1),\n orgName: z.string().min(1, { message: `Organization name must be provided` }),\n blockName: z.string().min(1, { message: `Block name must be provided` }),\n softwarePlatforms: z.array(CreateBlockPlatforms).refine((p) => new Set(p).size === p.length, {\n message: \"Must be an array of unique software platforms\",\n }),\n});\nexport type CreateBlockOptions = z.infer<typeof CreateBlockOptions>;\n\n/** Creates a block by cloning block-boilerplate repository. */\nexport async function createBlock(logger: winston.Logger) {\n const { npmOrgName, orgName, blockName, softwarePlatforms } = askForOptions();\n const targetPath = path.join(process.cwd(), blockName);\n\n logger.info(`Downloading boilerplate code...`);\n await downloadAndUnzip(\n // 'https://github.com/milaboratory/platforma-block-boilerplate/archive/refs/heads/software_platforms.zip',\n // 'platforma-block-boilerplate-software_platforms',\n \"https://github.com/milaboratory/platforma-block-boilerplate/archive/refs/heads/main.zip\",\n \"platforma-block-boilerplate-main\",\n targetPath,\n );\n\n const platformsToRemove = allPlatforms.filter((p) => softwarePlatforms.indexOf(p) < 0);\n const noPlatforms = blockPlatformsToChoose.length == platformsToRemove.length;\n logger.info(\n `Keep platforms '${softwarePlatforms}', remove: '${platformsToRemove}'. Will remove all platforms? ${noPlatforms}`,\n );\n for (const p of platformsToRemove) {\n await removePlatform(targetPath, p);\n }\n if (noPlatforms) {\n await removePlatformsCompletely(targetPath);\n }\n\n logger.info(`Replace everything in the template with provided options...`);\n replaceRegexInAllFiles(targetPath, [\n // '@' literal ensures only npm org name will be renamed,\n // as public registry for software also is called platforma-open, but without '@'.\n // Also, don't rename an organization for runenv-python-3 package.\n { from: /@platforma-open(?!.*runenv-python-3)/g, to: `@${npmOrgName}` },\n\n { from: /my-org/g, to: orgName },\n\n { from: /block-boilerplate/g, to: blockName },\n ]);\n}\n\nfunction askForOptions(): CreateBlockOptions {\n let npmOrgName = readlineSync.question(\n 'Write an organization name for npm. Default is \"platforma-open\": ',\n );\n if (npmOrgName === \"\") {\n npmOrgName = \"platforma-open\";\n }\n\n let orgName = \"\";\n while (orgName.length < 1)\n orgName = readlineSync.question('Write an organization name, e.g. \"my-org\": ');\n\n let blockName = \"\";\n while (blockName.length < 1)\n blockName = readlineSync.question('Write a name of the block, e.g. \"hello-world\": ');\n\n const needSoftware = readlineSync.keyInYN(\"Create package for block's software?\");\n let softwarePlatforms = [\"Tengo\"];\n if (needSoftware) {\n while (softwarePlatforms.length < allPlatforms.length) {\n const index = readlineSync.keyInSelect(blockPlatformsToChoose, \"Choose software platform:\");\n if (index < 0) break;\n softwarePlatforms.push(blockPlatformsToChoose[index]);\n }\n }\n softwarePlatforms = Array.from(new Set(softwarePlatforms)).sort();\n\n const result = CreateBlockOptions.safeParse({\n npmOrgName,\n orgName,\n blockName,\n softwarePlatforms,\n });\n if (!result.success && result.error.issues.length) {\n throw new Error(result.error.issues.map((i) => i.message).join(\"; \"));\n }\n\n return result.data!;\n}\n\nasync function downloadAndUnzip(url: string, pathInArchive: string, outputPath: string) {\n const response = await fetch(url);\n const content = await response.blob();\n\n const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), \"create-repo\"));\n\n const tmpFile = path.join(tmpDir, \"packed-repo.zip\");\n const f = Writable.toWeb(createWriteStream(tmpFile));\n await content.stream().pipeTo(f);\n\n const tmpRepo = path.join(tmpDir, \"unpacked-repo\");\n await fs.mkdir(tmpRepo);\n await decompress(tmpFile, tmpRepo);\n\n await fs.cp(path.join(tmpRepo, pathInArchive), outputPath, { recursive: true });\n}\n\n/** Removes a bunch of dependencies to the platform. */\nasync function removePlatform(dir: string, platform: CreateBlockPlatform) {\n const p = platform.toLowerCase();\n\n // Remove <PlAlert> line from MainPage.vue\n // https://regex101.com/r/oCTyHk/1\n await deleteRegexInFile(\n path.join(dir, \"ui\", \"src\", \"pages\", \"MainPage.vue\"),\n new RegExp(`.*${p}Message.*\\\\n`, \"g\"),\n );\n\n // Remove an output from the model.\n await deleteRegexInFile(\n path.join(dir, \"model\", \"src\", \"index.ts\"),\n new RegExp(`.*${p}Message.*\\\\n\\\\n`, \"g\"),\n );\n\n // This regexp represents a block of code until the empty line.\n // https://regex101.com/r/Os8kX1/1\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"main.tpl.tengo\"),\n new RegExp(`.*${p}.*exec.builder.*[\\\\s\\\\S]*?\\\\n\\\\n`, \"g\"),\n );\n\n // Remove a line from the workflow output.\n // https://regex101.com/r/PkHwQ8/1\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"main.tpl.tengo\"),\n new RegExp(`.*${p}Message.*\\\\n`, \"g\"),\n );\n\n // Remove 2 lines: the one with the language message and the one with expect\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"wf.test.ts\"),\n new RegExp(`.*${p}Message.*\\\\n.*expect.*\\\\n\\\\n`, \"g\"),\n );\n\n await fs.rm(path.join(dir, \"software\", `src_${p}`), { recursive: true });\n\n await replaceInFile(path.join(dir, \"software\", \"package.json\"), (content) => {\n const json = JSON.parse(content);\n delete json[\"block-software\"][\"artifacts\"][`hello-${p}-artifact`];\n delete json[\"block-software\"][\"entrypoints\"][`hello-world-${p}`];\n return JSON.stringify(json, null, 2);\n });\n}\n\n/** Removes software directory completely and all references to it from the workspace. */\nasync function removePlatformsCompletely(dir: string) {\n await fs.rm(path.join(dir, \"software\"), { recursive: true });\n\n await replaceInFile(path.join(dir, \"workflow\", \"package.json\"), (content) => {\n const json = JSON.parse(content);\n delete json[\"dependencies\"][\"@platforma-open/my-org.block-boilerplate.software\"];\n return JSON.stringify(json, null, 2);\n });\n\n await deleteRegexInFile(path.join(dir, \"pnpm-workspace.yaml\"), /.*- software$\\n/gm);\n}\n\nasync function replaceRegexInAllFiles(dir: string, patterns: { from: RegExp; to: string }[]) {\n const files = await getAllFiles(dir);\n for (const { from, to } of patterns) {\n for (const fPath of files) {\n await replaceRegexInFile(fPath, from, to);\n }\n }\n}\n\nasync function getAllFiles(dir: string): Promise<string[]> {\n const allDirents = await fs.readdir(dir, {\n withFileTypes: true,\n recursive: true,\n });\n\n return allDirents.filter((f: any) => f.isFile()).map((f: any) => path.join(f.parentPath, f.name));\n}\n\nasync function replaceInFile(fPath: string, replacer: (content: string) => any) {\n const content = await fs.readFile(fPath);\n const newContent = replacer(content.toString());\n await fs.writeFile(fPath, newContent);\n}\n\nasync function replaceRegexInFile(fPath: string, from: RegExp, to: string) {\n return await replaceInFile(fPath, (content) => content.replaceAll(from, to));\n}\n\nasync function deleteRegexInFile(fPath: string, what: RegExp) {\n return await replaceRegexInFile(fPath, what, \"\");\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"block.js","names":["fs"],"sources":["../src/block.ts"],"sourcesContent":["import { createWriteStream } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type winston from \"winston\";\nimport { Writable } from \"node:stream\";\nimport os from \"node:os\";\nimport readlineSync from \"readline-sync\";\nimport { z } from \"zod\";\nimport decompress from \"decompress\";\n\nconst blockPlatformsToChoose = [\"Python\"];\nconst allPlatforms = [\"Tengo\", \"Python\"] as const;\nconst CreateBlockPlatforms = z.union([z.literal(\"Tengo\"), z.literal(\"Python\")]);\nexport type CreateBlockPlatform = z.infer<typeof CreateBlockPlatforms>;\n\nconst CreateBlockOptions = z.object({\n npmOrgName: z.string().min(1),\n orgName: z.string().min(1, { message: `Organization name must be provided` }),\n blockName: z.string().min(1, { message: `Block name must be provided` }),\n softwarePlatforms: z.array(CreateBlockPlatforms).refine((p) => new Set(p).size === p.length, {\n message: \"Must be an array of unique software platforms\",\n }),\n});\nexport type CreateBlockOptions = z.infer<typeof CreateBlockOptions>;\n\n/** Creates a block by cloning block-boilerplate repository. */\nexport async function createBlock(logger: winston.Logger) {\n const { npmOrgName, orgName, blockName, softwarePlatforms } = askForOptions();\n const targetPath = path.join(process.cwd(), blockName);\n\n logger.info(`Downloading boilerplate code...`);\n await downloadAndUnzip(\n // 'https://github.com/milaboratory/platforma-block-boilerplate/archive/refs/heads/software_platforms.zip',\n // 'platforma-block-boilerplate-software_platforms',\n \"https://github.com/milaboratory/platforma-block-boilerplate/archive/refs/heads/main.zip\",\n \"platforma-block-boilerplate-main\",\n targetPath,\n );\n\n const platformsToRemove = allPlatforms.filter((p) => softwarePlatforms.indexOf(p) < 0);\n const noPlatforms = blockPlatformsToChoose.length == platformsToRemove.length;\n logger.info(\n `Keep platforms '${softwarePlatforms}', remove: '${platformsToRemove}'. Will remove all platforms? ${noPlatforms}`,\n );\n for (const p of platformsToRemove) {\n await removePlatform(targetPath, p);\n }\n if (noPlatforms) {\n await removePlatformsCompletely(targetPath);\n }\n\n logger.info(`Replace everything in the template with provided options...`);\n replaceRegexInAllFiles(targetPath, [\n // '@' literal ensures only npm org name will be renamed,\n // as public registry for software also is called platforma-open, but without '@'.\n // Also, don't rename an organization for runenv-python-3 package.\n { from: /@platforma-open(?!.*runenv-python-3)/g, to: `@${npmOrgName}` },\n\n { from: /my-org/g, to: orgName },\n\n { from: /block-boilerplate/g, to: blockName },\n ]);\n}\n\nfunction askForOptions(): CreateBlockOptions {\n let npmOrgName = readlineSync.question(\n 'Write an organization name for npm. Default is \"platforma-open\": ',\n );\n if (npmOrgName === \"\") {\n npmOrgName = \"platforma-open\";\n }\n\n let orgName = \"\";\n while (orgName.length < 1)\n orgName = readlineSync.question('Write an organization name, e.g. \"my-org\": ');\n\n let blockName = \"\";\n while (blockName.length < 1)\n blockName = readlineSync.question('Write a name of the block, e.g. \"hello-world\": ');\n\n const needSoftware = readlineSync.keyInYN(\"Create package for block's software?\");\n let softwarePlatforms = [\"Tengo\"];\n if (needSoftware) {\n while (softwarePlatforms.length < allPlatforms.length) {\n const index = readlineSync.keyInSelect(blockPlatformsToChoose, \"Choose software platform:\");\n if (index < 0) break;\n softwarePlatforms.push(blockPlatformsToChoose[index]);\n }\n }\n softwarePlatforms = Array.from(new Set(softwarePlatforms)).sort();\n\n const result = CreateBlockOptions.safeParse({\n npmOrgName,\n orgName,\n blockName,\n softwarePlatforms,\n });\n if (!result.success && result.error.issues.length) {\n throw new Error(result.error.issues.map((i) => i.message).join(\"; \"));\n }\n\n return result.data!;\n}\n\nasync function downloadAndUnzip(url: string, pathInArchive: string, outputPath: string) {\n const response = await fetch(url);\n const content = await response.blob();\n\n const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), \"create-repo\"));\n\n const tmpFile = path.join(tmpDir, \"packed-repo.zip\");\n const f = Writable.toWeb(createWriteStream(tmpFile));\n await content.stream().pipeTo(f);\n\n const tmpRepo = path.join(tmpDir, \"unpacked-repo\");\n await fs.mkdir(tmpRepo);\n await decompress(tmpFile, tmpRepo);\n\n await fs.cp(path.join(tmpRepo, pathInArchive), outputPath, { recursive: true });\n}\n\n/** Removes a bunch of dependencies to the platform. */\nasync function removePlatform(dir: string, platform: CreateBlockPlatform) {\n const p = platform.toLowerCase();\n\n // Remove <PlAlert> line from MainPage.vue\n // https://regex101.com/r/oCTyHk/1\n await deleteRegexInFile(\n path.join(dir, \"ui\", \"src\", \"pages\", \"MainPage.vue\"),\n new RegExp(`.*${p}Message.*\\\\n`, \"g\"),\n );\n\n // Remove an output from the model.\n await deleteRegexInFile(\n path.join(dir, \"model\", \"src\", \"index.ts\"),\n new RegExp(`.*${p}Message.*\\\\n\\\\n`, \"g\"),\n );\n\n // This regexp represents a block of code until the empty line.\n // https://regex101.com/r/Os8kX1/1\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"main.tpl.tengo\"),\n new RegExp(`.*${p}.*exec.builder.*[\\\\s\\\\S]*?\\\\n\\\\n`, \"g\"),\n );\n\n // Remove a line from the workflow output.\n // https://regex101.com/r/PkHwQ8/1\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"main.tpl.tengo\"),\n new RegExp(`.*${p}Message.*\\\\n`, \"g\"),\n );\n\n // Remove 2 lines: the one with the language message and the one with expect\n await deleteRegexInFile(\n path.join(dir, \"workflow\", \"src\", \"wf.test.ts\"),\n new RegExp(`.*${p}Message.*\\\\n.*expect.*\\\\n\\\\n`, \"g\"),\n );\n\n await fs.rm(path.join(dir, \"software\", `src_${p}`), { recursive: true });\n\n await replaceInFile(path.join(dir, \"software\", \"package.json\"), (content) => {\n const json = JSON.parse(content);\n delete json[\"block-software\"][\"artifacts\"][`hello-${p}-artifact`];\n delete json[\"block-software\"][\"entrypoints\"][`hello-world-${p}`];\n return JSON.stringify(json, null, 2);\n });\n}\n\n/** Removes software directory completely and all references to it from the workspace. */\nasync function removePlatformsCompletely(dir: string) {\n await fs.rm(path.join(dir, \"software\"), { recursive: true });\n\n await replaceInFile(path.join(dir, \"workflow\", \"package.json\"), (content) => {\n const json = JSON.parse(content);\n delete json[\"dependencies\"][\"@platforma-open/my-org.block-boilerplate.software\"];\n return JSON.stringify(json, null, 2);\n });\n\n await deleteRegexInFile(path.join(dir, \"pnpm-workspace.yaml\"), /.*- software$\\n/gm);\n}\n\nasync function replaceRegexInAllFiles(dir: string, patterns: { from: RegExp; to: string }[]) {\n const files = await getAllFiles(dir);\n for (const { from, to } of patterns) {\n for (const fPath of files) {\n await replaceRegexInFile(fPath, from, to);\n }\n }\n}\n\nasync function getAllFiles(dir: string): Promise<string[]> {\n const allDirents = await fs.readdir(dir, {\n withFileTypes: true,\n recursive: true,\n });\n\n return allDirents.filter((f: any) => f.isFile()).map((f: any) => path.join(f.parentPath, f.name));\n}\n\nasync function replaceInFile(fPath: string, replacer: (content: string) => any) {\n const content = await fs.readFile(fPath);\n const newContent = replacer(content.toString());\n await fs.writeFile(fPath, newContent);\n}\n\nasync function replaceRegexInFile(fPath: string, from: RegExp, to: string) {\n return await replaceInFile(fPath, (content) => content.replaceAll(from, to));\n}\n\nasync function deleteRegexInFile(fPath: string, what: RegExp) {\n return await replaceRegexInFile(fPath, what, \"\");\n}\n"],"mappings":"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"}
|
package/dist/cli.cjs
CHANGED
package/dist/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.cjs","names":["Command","createBlockCommand","resetCommand","stopCommand","startCommand","startDockerCommand","startDockerS3Command","startLocalCommand","startLocalS3Command","svcUpCommand","svcDownCommand","svcListCommand","svcDeleteCommand","svcCreateDockerCommand","svcCreateDockerS3Command","svcCreateLocalCommand","svcCreateLocalS3Command"],"sources":["../src/cli.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport createBlockCommand from \"./commands/create-block\";\nimport resetCommand from \"./commands/reset\";\nimport stopCommand from \"./commands/stop\";\nimport startCommand from \"./commands/start\";\nimport startDockerCommand from \"./commands/start/docker\";\nimport startDockerS3Command from \"./commands/start/docker/s3\";\nimport startLocalCommand from \"./commands/start/local\";\nimport startLocalS3Command from \"./commands/start/local/s3\";\nimport svcUpCommand from \"./commands/svc/up\";\nimport svcDownCommand from \"./commands/svc/down\";\nimport svcListCommand from \"./commands/svc/list\";\nimport svcDeleteCommand from \"./commands/svc/delete\";\nimport svcCreateDockerCommand from \"./commands/svc/create/docker\";\nimport svcCreateDockerS3Command from \"./commands/svc/create/docker/s3\";\nimport svcCreateLocalCommand from \"./commands/svc/create/local\";\nimport svcCreateLocalS3Command from \"./commands/svc/create/local/s3\";\n\nexport function buildProgram(): Command {\n const program = new Command();\n program.name(\"pl-dev\").description(\"Platforma development service manager\");\n\n program.addCommand(createBlockCommand());\n program.addCommand(resetCommand());\n program.addCommand(stopCommand());\n\n // `start` is runnable (= start last) and the parent of its storage variants.\n const start = startCommand();\n const startDocker = startDockerCommand();\n startDocker.addCommand(startDockerS3Command());\n start.addCommand(startDocker);\n const startLocal = startLocalCommand();\n startLocal.addCommand(startLocalS3Command());\n start.addCommand(startLocal);\n program.addCommand(start);\n\n const svc = new Command(\"svc\").description(\"Manage named service instances\");\n svc.addCommand(svcUpCommand());\n svc.addCommand(svcDownCommand());\n svc.addCommand(svcListCommand());\n svc.addCommand(svcDeleteCommand());\n\n const svcCreate = new Command(\"create\").description(\"Create a new service instance\");\n const svcCreateDocker = svcCreateDockerCommand();\n svcCreateDocker.addCommand(svcCreateDockerS3Command());\n svcCreate.addCommand(svcCreateDocker);\n const svcCreateLocal = svcCreateLocalCommand();\n svcCreateLocal.addCommand(svcCreateLocalS3Command());\n svcCreate.addCommand(svcCreateLocal);\n svc.addCommand(svcCreate);\n\n program.addCommand(svc);\n\n return program;\n}\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n await buildProgram().parseAsync(argv);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.cjs","names":["Command","createBlockCommand","resetCommand","stopCommand","startCommand","startDockerCommand","startDockerS3Command","startLocalCommand","startLocalS3Command","svcUpCommand","svcDownCommand","svcListCommand","svcDeleteCommand","svcCreateDockerCommand","svcCreateDockerS3Command","svcCreateLocalCommand","svcCreateLocalS3Command"],"sources":["../src/cli.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport createBlockCommand from \"./commands/create-block\";\nimport resetCommand from \"./commands/reset\";\nimport stopCommand from \"./commands/stop\";\nimport startCommand from \"./commands/start\";\nimport startDockerCommand from \"./commands/start/docker\";\nimport startDockerS3Command from \"./commands/start/docker/s3\";\nimport startLocalCommand from \"./commands/start/local\";\nimport startLocalS3Command from \"./commands/start/local/s3\";\nimport svcUpCommand from \"./commands/svc/up\";\nimport svcDownCommand from \"./commands/svc/down\";\nimport svcListCommand from \"./commands/svc/list\";\nimport svcDeleteCommand from \"./commands/svc/delete\";\nimport svcCreateDockerCommand from \"./commands/svc/create/docker\";\nimport svcCreateDockerS3Command from \"./commands/svc/create/docker/s3\";\nimport svcCreateLocalCommand from \"./commands/svc/create/local\";\nimport svcCreateLocalS3Command from \"./commands/svc/create/local/s3\";\n\nexport function buildProgram(): Command {\n const program = new Command();\n program.name(\"pl-dev\").description(\"Platforma development service manager\");\n\n program.addCommand(createBlockCommand());\n program.addCommand(resetCommand());\n program.addCommand(stopCommand());\n\n // `start` is runnable (= start last) and the parent of its storage variants.\n const start = startCommand();\n const startDocker = startDockerCommand();\n startDocker.addCommand(startDockerS3Command());\n start.addCommand(startDocker);\n const startLocal = startLocalCommand();\n startLocal.addCommand(startLocalS3Command());\n start.addCommand(startLocal);\n program.addCommand(start);\n\n const svc = new Command(\"svc\").description(\"Manage named service instances\");\n svc.addCommand(svcUpCommand());\n svc.addCommand(svcDownCommand());\n svc.addCommand(svcListCommand());\n svc.addCommand(svcDeleteCommand());\n\n const svcCreate = new Command(\"create\").description(\"Create a new service instance\");\n const svcCreateDocker = svcCreateDockerCommand();\n svcCreateDocker.addCommand(svcCreateDockerS3Command());\n svcCreate.addCommand(svcCreateDocker);\n const svcCreateLocal = svcCreateLocalCommand();\n svcCreateLocal.addCommand(svcCreateLocalS3Command());\n svcCreate.addCommand(svcCreateLocal);\n svc.addCommand(svcCreate);\n\n program.addCommand(svc);\n\n return program;\n}\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n await buildProgram().parseAsync(argv);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAgB,eAAwB;CACtC,MAAM,UAAU,IAAIA,UAAAA,QAAQ;CAC5B,QAAQ,KAAK,QAAQ,CAAC,CAAC,YAAY,uCAAuC;CAE1E,QAAQ,WAAWC,qBAAAA,QAAmB,CAAC;CACvC,QAAQ,WAAWC,cAAAA,QAAa,CAAC;CACjC,QAAQ,WAAWC,aAAAA,QAAY,CAAC;CAGhC,MAAM,QAAQC,cAAAA,QAAa;CAC3B,MAAM,cAAcC,eAAAA,QAAmB;CACvC,YAAY,WAAWC,WAAAA,QAAqB,CAAC;CAC7C,MAAM,WAAW,WAAW;CAC5B,MAAM,aAAaC,cAAAA,QAAkB;CACrC,WAAW,WAAWC,aAAAA,QAAoB,CAAC;CAC3C,MAAM,WAAW,UAAU;CAC3B,QAAQ,WAAW,KAAK;CAExB,MAAM,MAAM,IAAIR,UAAAA,QAAQ,KAAK,CAAC,CAAC,YAAY,gCAAgC;CAC3E,IAAI,WAAWS,WAAAA,QAAa,CAAC;CAC7B,IAAI,WAAWC,aAAAA,QAAe,CAAC;CAC/B,IAAI,WAAWC,aAAAA,QAAe,CAAC;CAC/B,IAAI,WAAWC,eAAAA,QAAiB,CAAC;CAEjC,MAAM,YAAY,IAAIZ,UAAAA,QAAQ,QAAQ,CAAC,CAAC,YAAY,+BAA+B;CACnF,MAAM,kBAAkBa,iBAAAA,QAAuB;CAC/C,gBAAgB,WAAWC,aAAAA,QAAyB,CAAC;CACrD,UAAU,WAAW,eAAe;CACpC,MAAM,iBAAiBC,gBAAAA,QAAsB;CAC7C,eAAe,WAAWC,aAAAA,QAAwB,CAAC;CACnD,UAAU,WAAW,cAAc;CACnC,IAAI,WAAW,SAAS;CAExB,QAAQ,WAAW,GAAG;CAEtB,OAAO;AACT;AAEA,eAAsB,IAAI,OAAiB,QAAQ,MAAqB;CACtE,MAAM,aAAa,CAAC,CAAC,WAAW,IAAI;AACtC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","names":[],"sources":["../src/cli.ts"],"mappings":";;;iBAkBgB,YAAA,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","names":[],"sources":["../src/cli.ts"],"mappings":";;;iBAkBgB,YAAA,IAAgB,OAAO;AAAA,iBAsCjB,GAAA,CAAI,IAAA,cAAgC,OAAO"}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","names":[],"sources":["../src/cli.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport createBlockCommand from \"./commands/create-block\";\nimport resetCommand from \"./commands/reset\";\nimport stopCommand from \"./commands/stop\";\nimport startCommand from \"./commands/start\";\nimport startDockerCommand from \"./commands/start/docker\";\nimport startDockerS3Command from \"./commands/start/docker/s3\";\nimport startLocalCommand from \"./commands/start/local\";\nimport startLocalS3Command from \"./commands/start/local/s3\";\nimport svcUpCommand from \"./commands/svc/up\";\nimport svcDownCommand from \"./commands/svc/down\";\nimport svcListCommand from \"./commands/svc/list\";\nimport svcDeleteCommand from \"./commands/svc/delete\";\nimport svcCreateDockerCommand from \"./commands/svc/create/docker\";\nimport svcCreateDockerS3Command from \"./commands/svc/create/docker/s3\";\nimport svcCreateLocalCommand from \"./commands/svc/create/local\";\nimport svcCreateLocalS3Command from \"./commands/svc/create/local/s3\";\n\nexport function buildProgram(): Command {\n const program = new Command();\n program.name(\"pl-dev\").description(\"Platforma development service manager\");\n\n program.addCommand(createBlockCommand());\n program.addCommand(resetCommand());\n program.addCommand(stopCommand());\n\n // `start` is runnable (= start last) and the parent of its storage variants.\n const start = startCommand();\n const startDocker = startDockerCommand();\n startDocker.addCommand(startDockerS3Command());\n start.addCommand(startDocker);\n const startLocal = startLocalCommand();\n startLocal.addCommand(startLocalS3Command());\n start.addCommand(startLocal);\n program.addCommand(start);\n\n const svc = new Command(\"svc\").description(\"Manage named service instances\");\n svc.addCommand(svcUpCommand());\n svc.addCommand(svcDownCommand());\n svc.addCommand(svcListCommand());\n svc.addCommand(svcDeleteCommand());\n\n const svcCreate = new Command(\"create\").description(\"Create a new service instance\");\n const svcCreateDocker = svcCreateDockerCommand();\n svcCreateDocker.addCommand(svcCreateDockerS3Command());\n svcCreate.addCommand(svcCreateDocker);\n const svcCreateLocal = svcCreateLocalCommand();\n svcCreateLocal.addCommand(svcCreateLocalS3Command());\n svcCreate.addCommand(svcCreateLocal);\n svc.addCommand(svcCreate);\n\n program.addCommand(svc);\n\n return program;\n}\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n await buildProgram().parseAsync(argv);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAgB,eAAwB;CACtC,MAAM,UAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"cli.js","names":[],"sources":["../src/cli.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport createBlockCommand from \"./commands/create-block\";\nimport resetCommand from \"./commands/reset\";\nimport stopCommand from \"./commands/stop\";\nimport startCommand from \"./commands/start\";\nimport startDockerCommand from \"./commands/start/docker\";\nimport startDockerS3Command from \"./commands/start/docker/s3\";\nimport startLocalCommand from \"./commands/start/local\";\nimport startLocalS3Command from \"./commands/start/local/s3\";\nimport svcUpCommand from \"./commands/svc/up\";\nimport svcDownCommand from \"./commands/svc/down\";\nimport svcListCommand from \"./commands/svc/list\";\nimport svcDeleteCommand from \"./commands/svc/delete\";\nimport svcCreateDockerCommand from \"./commands/svc/create/docker\";\nimport svcCreateDockerS3Command from \"./commands/svc/create/docker/s3\";\nimport svcCreateLocalCommand from \"./commands/svc/create/local\";\nimport svcCreateLocalS3Command from \"./commands/svc/create/local/s3\";\n\nexport function buildProgram(): Command {\n const program = new Command();\n program.name(\"pl-dev\").description(\"Platforma development service manager\");\n\n program.addCommand(createBlockCommand());\n program.addCommand(resetCommand());\n program.addCommand(stopCommand());\n\n // `start` is runnable (= start last) and the parent of its storage variants.\n const start = startCommand();\n const startDocker = startDockerCommand();\n startDocker.addCommand(startDockerS3Command());\n start.addCommand(startDocker);\n const startLocal = startLocalCommand();\n startLocal.addCommand(startLocalS3Command());\n start.addCommand(startLocal);\n program.addCommand(start);\n\n const svc = new Command(\"svc\").description(\"Manage named service instances\");\n svc.addCommand(svcUpCommand());\n svc.addCommand(svcDownCommand());\n svc.addCommand(svcListCommand());\n svc.addCommand(svcDeleteCommand());\n\n const svcCreate = new Command(\"create\").description(\"Create a new service instance\");\n const svcCreateDocker = svcCreateDockerCommand();\n svcCreateDocker.addCommand(svcCreateDockerS3Command());\n svcCreate.addCommand(svcCreateDocker);\n const svcCreateLocal = svcCreateLocalCommand();\n svcCreateLocal.addCommand(svcCreateLocalS3Command());\n svcCreate.addCommand(svcCreateLocal);\n svc.addCommand(svcCreate);\n\n program.addCommand(svc);\n\n return program;\n}\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n await buildProgram().parseAsync(argv);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAgB,eAAwB;CACtC,MAAM,UAAU,IAAI,QAAQ;CAC5B,QAAQ,KAAK,QAAQ,CAAC,CAAC,YAAY,uCAAuC;CAE1E,QAAQ,WAAW,mBAAmB,CAAC;CACvC,QAAQ,WAAW,aAAa,CAAC;CACjC,QAAQ,WAAW,YAAY,CAAC;CAGhC,MAAM,QAAQ,aAAa;CAC3B,MAAM,cAAc,mBAAmB;CACvC,YAAY,WAAW,qBAAqB,CAAC;CAC7C,MAAM,WAAW,WAAW;CAC5B,MAAM,aAAa,kBAAkB;CACrC,WAAW,WAAW,oBAAoB,CAAC;CAC3C,MAAM,WAAW,UAAU;CAC3B,QAAQ,WAAW,KAAK;CAExB,MAAM,MAAM,IAAI,QAAQ,KAAK,CAAC,CAAC,YAAY,gCAAgC;CAC3E,IAAI,WAAW,aAAa,CAAC;CAC7B,IAAI,WAAW,eAAe,CAAC;CAC/B,IAAI,WAAW,eAAe,CAAC;CAC/B,IAAI,WAAW,iBAAiB,CAAC;CAEjC,MAAM,YAAY,IAAI,QAAQ,QAAQ,CAAC,CAAC,YAAY,+BAA+B;CACnF,MAAM,kBAAkB,uBAAuB;CAC/C,gBAAgB,WAAW,yBAAyB,CAAC;CACrD,UAAU,WAAW,eAAe;CACpC,MAAM,iBAAiB,sBAAsB;CAC7C,eAAe,WAAW,wBAAwB,CAAC;CACnD,UAAU,WAAW,cAAc;CACnC,IAAI,WAAW,SAAS;CAExB,QAAQ,WAAW,GAAG;CAEtB,OAAO;AACT;AAEA,eAAsB,IAAI,OAAiB,QAAQ,MAAqB;CACtE,MAAM,aAAa,CAAC,CAAC,WAAW,IAAI;AACtC"}
|
package/dist/cmd-opts.cjs
CHANGED
package/dist/cmd-opts.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-opts.cjs","names":["Option"],"sources":["../src/cmd-opts.ts"],"sourcesContent":["import { Command, Option } from \"commander\";\nimport type { FlagDefinition } from \"./commands/svc/create/arg-parser\";\n\n/** Add one or more groups of options to a command, preserving group order. */\nexport function addOptions(cmd: Command, ...optionGroups: Option[][]): Command {\n for (const group of optionGroups) {\n for (const opt of group) cmd.addOption(opt);\n }\n return cmd;\n}\n\nconst toInt = (v: string): number => parseInt(v, 10);\n\n// Repeatable option collector: `--mount a --mount b` -> [\"a\",\"b\"].\nconst collect = (value: string, previous?: string[]): string[] => [...(previous ?? []), value];\n\nexport const GlobalOptions = (): Option[] => [\n new Option(\"--log-level <level>\", \"logging level\")\n .choices([\"error\", \"warn\", \"info\", \"debug\"])\n .default(\"info\"),\n];\n\nexport const ImageOptions = (): Option[] => [\n new Option(\"--image <image>\", \"use custom docker image to run platforma\"),\n];\n\nexport const VersionOptions = (): Option[] => [\n new Option(\n \"--version <version>\",\n \"use custom platforma release (official docker image or binary package)\",\n ),\n];\n\nexport const ArchOptions = (): Option[] => [\n new Option(\n \"--arch <arch>\",\n \"override architecture. You can start amd64 linux image on arm-based host (say, Apple M family processor). I.e. arm64, amd64, amd64/v2\",\n ),\n];\n\nexport const LicenseOptions = (): Option[] => [\n new Option(\n \"--license <license>\",\n 'pass a license code. The license can be got from \"https://platforma.bio/getlicense\".',\n ),\n new Option(\n \"--license-file <path>\",\n \"specify a path to the file with a license. The license can be got from 'https://platforma.bio/getlicense'.\",\n ),\n];\n\nexport const AddressesOptions = (): Option[] => [\n new Option(\"--grpc-port <port>\", \"port for Platforma Backend gRPC API. Default is 6345\")\n .argParser(toInt)\n .env(\"PLATFORMA_GRPC_PORT\"),\n new Option(\n \"--grpc-listen <addr>\",\n \"full listen addr for Platforma Backend gRPC API. Default is 127.0.0.1:6345\",\n ).env(\"PLATFORMA_GRPC_LISTEN\"),\n new Option(\n \"--monitoring-port <port>\",\n \"port for Platforma Backend monitoring API. Default is 9090\",\n )\n .argParser(toInt)\n .env(\"PLATFORMA_MONITORING_PORT\"),\n new Option(\n \"--monitoring-listen <addr>\",\n \"full listen addr for Platforma Backend monitoring API. Default is 127.0.0.1:9090\",\n ).env(\"PLATFORMA_MONITORING_LISTEN\"),\n new Option(\"--debug-port <port>\", \"port for Platforma Backend debug API. Default is 9091\")\n .argParser(toInt)\n .env(\"PLATFORMA_DEBUG_PORT\"),\n new Option(\n \"--debug-listen <addr>\",\n \"full listen addr for Platforma Backend debug API. Default is 127.0.0.1:9091\",\n ).env(\"PLATFORMA_DEBUG_LISTEN\"),\n];\n\nexport const S3AddressesOptions = (): Option[] => [\n new Option(\"--s3-port <port>\", \"port that S3 will listen, default is 9000\")\n .argParser(toInt)\n .default(9000)\n .env(\"PLATFORMA_S3_PORT\"),\n new Option(\"--s3-console-port <port>\", \"port that a console of S3 will listen, default is 9001\")\n .argParser(toInt)\n .default(9001)\n .env(\"PLATFORMA_S3_CONSOLE_PORT\"),\n];\n\nexport const StorageOptions = (): Option[] => [\n new Option(\n \"--storage <path>\",\n \"specify path on host to be used as storage for all Platforma Backend data\",\n ),\n];\n\nexport const MinioPresignHostOptions = (): Option[] => [\n new Option(\"--minio-presign-host\", \"use 'minio' host instead of 'localhost' in presign URLs\"),\n];\n\nexport const MountOptions = (): Option[] => [\n new Option(\n \"--mount <path>\",\n \"things to be mounted into platforma docker container. Targets will appear inside the container under the same absolute paths\",\n ).argParser(collect),\n];\n\nexport const PlLogFileOptions = (): Option[] => [\n new Option(\"--pl-log-file <path>\", \"specify path for Platforma Backend log file\"),\n];\n\nexport const PlWorkdirOptions = (): Option[] => [\n new Option(\"--pl-workdir <path>\", \"specify working directory for Platforma Backend process\"),\n];\n\nexport const PlBinaryOptions = (): Option[] => [\n new Option(\n \"--pl-binary <path>\",\n \"start given Platforma Backend binary instead of automatically downloaded version\",\n ),\n];\n\nexport const PlSourcesOptions = (): Option[] => [\n new Option(\n \"--pl-sources <path>\",\n \"path to pl repository root: build Platforma Backend from sources and start the resulting binary\",\n ),\n];\n\nexport const ConfigOptions = (): Option[] => [\n new Option(\"--config <path>\", \"use custom Platforma Backend config\"),\n];\n\nexport const StoragePrimaryURLOptions = (): Option[] => [\n new Option(\n \"--storage-primary <url>\",\n \"specify 'primary' storage destination URL.\\n\" +\n \"\\tfile:/path/to/dir for directory on local FS\\n\" +\n \"\\ts3://<bucket>/?region=<name> for real AWS bucket\\n\" +\n \"\\ts3e://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via http\\n\" +\n \"\\ts3es://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via https\",\n ),\n];\n\nexport const StorageWorkPathOptions = (): Option[] => [\n new Option(\"--storage-work <path>\", \"specify path on host to be used as 'work' storage\"),\n];\n\nexport const StorageLibraryURLOptions = (): Option[] => [\n new Option(\n \"--storage-library <url>\",\n \"specify 'library' storage destination URL.\\n\" +\n \"\\tfile:/path/to/dir for directory on local FS\\n\" +\n \"\\ts3://<bucket>/?region=<name> for real AWS bucket\\n\" +\n \"\\ts3e://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via http\\n\" +\n \"\\ts3es://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via https\",\n ),\n];\n\nexport const AuthOptions = (): Option[] => [\n new Option(\"--auth-enabled\", \"enable authorization\"),\n new Option(\n \"--auth-htpasswd-file <path>\",\n \"path to .htpasswd file with Platforma users (static user DB auth source)\",\n ),\n new Option(\n \"--auth-ldap-server <addr>\",\n \"address of LDAP server to use for auth in Platforma (auth source)\",\n ),\n new Option(\n \"--auth-ldap-default-dn <dn>\",\n \"DN to use when checking user with LDAP bind operation: e.g. cn=%u,ou=users,dc=example,dc=com\",\n ),\n];\n\n/** Flag bag keyed by CLI flag name; `toFlags` adapts commander's camelCased\n * option values into this shape, which command bodies and `core.*` helpers read. */\nexport interface Flags {\n \"log-level\"?: string;\n image?: string;\n version?: string;\n arch?: string;\n license?: string;\n \"license-file\"?: string;\n \"grpc-port\"?: number;\n \"grpc-listen\"?: string;\n \"monitoring-port\"?: number;\n \"monitoring-listen\"?: string;\n \"debug-port\"?: number;\n \"debug-listen\"?: string;\n \"s3-port\"?: number;\n \"s3-console-port\"?: number;\n storage?: string;\n \"minio-presign-host\"?: boolean;\n mount?: string[];\n \"pl-log-file\"?: string;\n \"pl-workdir\"?: string;\n \"pl-binary\"?: string;\n \"pl-sources\"?: string;\n config?: string;\n \"storage-primary\"?: string;\n \"storage-work\"?: string;\n \"storage-library\"?: string;\n \"auth-enabled\"?: boolean;\n \"auth-htpasswd-file\"?: string;\n \"auth-ldap-server\"?: string;\n \"auth-ldap-default-dn\"?: string;\n}\n\nexport function toFlags(o: Record<string, unknown>): Flags {\n return {\n \"log-level\": o.logLevel as string | undefined,\n image: o.image as string | undefined,\n version: o.version as string | undefined,\n arch: o.arch as string | undefined,\n license: o.license as string | undefined,\n \"license-file\": o.licenseFile as string | undefined,\n \"grpc-port\": o.grpcPort as number | undefined,\n \"grpc-listen\": o.grpcListen as string | undefined,\n \"monitoring-port\": o.monitoringPort as number | undefined,\n \"monitoring-listen\": o.monitoringListen as string | undefined,\n \"debug-port\": o.debugPort as number | undefined,\n \"debug-listen\": o.debugListen as string | undefined,\n \"s3-port\": o.s3Port as number | undefined,\n \"s3-console-port\": o.s3ConsolePort as number | undefined,\n storage: o.storage as string | undefined,\n \"minio-presign-host\": o.minioPresignHost as boolean | undefined,\n mount: o.mount as string[] | undefined,\n \"pl-log-file\": o.plLogFile as string | undefined,\n \"pl-workdir\": o.plWorkdir as string | undefined,\n \"pl-binary\": o.plBinary as string | undefined,\n \"pl-sources\": o.plSources as string | undefined,\n config: o.config as string | undefined,\n \"storage-primary\": o.storagePrimary as string | undefined,\n \"storage-work\": o.storageWork as string | undefined,\n \"storage-library\": o.storageLibrary as string | undefined,\n \"auth-enabled\": o.authEnabled as boolean | undefined,\n \"auth-htpasswd-file\": o.authHtpasswdFile as string | undefined,\n \"auth-ldap-server\": o.authLdapServer as string | undefined,\n \"auth-ldap-default-dn\": o.authLdapDefaultDn as string | undefined,\n };\n}\n\n/** ArgParser flag-defs derived from commander Options, for the `svc create`\n * passthrough commands: booleans are value-less, the rest are plain string\n * options (value passed through verbatim), defaults carried over. */\nexport function argDefs(...optionGroups: Option[][]): Record<string, FlagDefinition> {\n const defs: Record<string, FlagDefinition> = {};\n for (const group of optionGroups) {\n for (const opt of group) {\n const name = opt.long?.replace(/^--/, \"\");\n if (!name) continue;\n defs[name] = {\n name,\n type: opt.isBoolean() ? \"boolean\" : \"string\",\n default: opt.defaultValue,\n multiple: opt.variadic,\n };\n }\n }\n return defs;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmd-opts.cjs","names":["Option"],"sources":["../src/cmd-opts.ts"],"sourcesContent":["import { Command, Option } from \"commander\";\nimport type { FlagDefinition } from \"./commands/svc/create/arg-parser\";\n\n/** Add one or more groups of options to a command, preserving group order. */\nexport function addOptions(cmd: Command, ...optionGroups: Option[][]): Command {\n for (const group of optionGroups) {\n for (const opt of group) cmd.addOption(opt);\n }\n return cmd;\n}\n\nconst toInt = (v: string): number => parseInt(v, 10);\n\n// Repeatable option collector: `--mount a --mount b` -> [\"a\",\"b\"].\nconst collect = (value: string, previous?: string[]): string[] => [...(previous ?? []), value];\n\nexport const GlobalOptions = (): Option[] => [\n new Option(\"--log-level <level>\", \"logging level\")\n .choices([\"error\", \"warn\", \"info\", \"debug\"])\n .default(\"info\"),\n];\n\nexport const ImageOptions = (): Option[] => [\n new Option(\"--image <image>\", \"use custom docker image to run platforma\"),\n];\n\nexport const VersionOptions = (): Option[] => [\n new Option(\n \"--version <version>\",\n \"use custom platforma release (official docker image or binary package)\",\n ),\n];\n\nexport const ArchOptions = (): Option[] => [\n new Option(\n \"--arch <arch>\",\n \"override architecture. You can start amd64 linux image on arm-based host (say, Apple M family processor). I.e. arm64, amd64, amd64/v2\",\n ),\n];\n\nexport const LicenseOptions = (): Option[] => [\n new Option(\n \"--license <license>\",\n 'pass a license code. The license can be got from \"https://platforma.bio/getlicense\".',\n ),\n new Option(\n \"--license-file <path>\",\n \"specify a path to the file with a license. The license can be got from 'https://platforma.bio/getlicense'.\",\n ),\n];\n\nexport const AddressesOptions = (): Option[] => [\n new Option(\"--grpc-port <port>\", \"port for Platforma Backend gRPC API. Default is 6345\")\n .argParser(toInt)\n .env(\"PLATFORMA_GRPC_PORT\"),\n new Option(\n \"--grpc-listen <addr>\",\n \"full listen addr for Platforma Backend gRPC API. Default is 127.0.0.1:6345\",\n ).env(\"PLATFORMA_GRPC_LISTEN\"),\n new Option(\n \"--monitoring-port <port>\",\n \"port for Platforma Backend monitoring API. Default is 9090\",\n )\n .argParser(toInt)\n .env(\"PLATFORMA_MONITORING_PORT\"),\n new Option(\n \"--monitoring-listen <addr>\",\n \"full listen addr for Platforma Backend monitoring API. Default is 127.0.0.1:9090\",\n ).env(\"PLATFORMA_MONITORING_LISTEN\"),\n new Option(\"--debug-port <port>\", \"port for Platforma Backend debug API. Default is 9091\")\n .argParser(toInt)\n .env(\"PLATFORMA_DEBUG_PORT\"),\n new Option(\n \"--debug-listen <addr>\",\n \"full listen addr for Platforma Backend debug API. Default is 127.0.0.1:9091\",\n ).env(\"PLATFORMA_DEBUG_LISTEN\"),\n];\n\nexport const S3AddressesOptions = (): Option[] => [\n new Option(\"--s3-port <port>\", \"port that S3 will listen, default is 9000\")\n .argParser(toInt)\n .default(9000)\n .env(\"PLATFORMA_S3_PORT\"),\n new Option(\"--s3-console-port <port>\", \"port that a console of S3 will listen, default is 9001\")\n .argParser(toInt)\n .default(9001)\n .env(\"PLATFORMA_S3_CONSOLE_PORT\"),\n];\n\nexport const StorageOptions = (): Option[] => [\n new Option(\n \"--storage <path>\",\n \"specify path on host to be used as storage for all Platforma Backend data\",\n ),\n];\n\nexport const MinioPresignHostOptions = (): Option[] => [\n new Option(\"--minio-presign-host\", \"use 'minio' host instead of 'localhost' in presign URLs\"),\n];\n\nexport const MountOptions = (): Option[] => [\n new Option(\n \"--mount <path>\",\n \"things to be mounted into platforma docker container. Targets will appear inside the container under the same absolute paths\",\n ).argParser(collect),\n];\n\nexport const PlLogFileOptions = (): Option[] => [\n new Option(\"--pl-log-file <path>\", \"specify path for Platforma Backend log file\"),\n];\n\nexport const PlWorkdirOptions = (): Option[] => [\n new Option(\"--pl-workdir <path>\", \"specify working directory for Platforma Backend process\"),\n];\n\nexport const PlBinaryOptions = (): Option[] => [\n new Option(\n \"--pl-binary <path>\",\n \"start given Platforma Backend binary instead of automatically downloaded version\",\n ),\n];\n\nexport const PlSourcesOptions = (): Option[] => [\n new Option(\n \"--pl-sources <path>\",\n \"path to pl repository root: build Platforma Backend from sources and start the resulting binary\",\n ),\n];\n\nexport const ConfigOptions = (): Option[] => [\n new Option(\"--config <path>\", \"use custom Platforma Backend config\"),\n];\n\nexport const StoragePrimaryURLOptions = (): Option[] => [\n new Option(\n \"--storage-primary <url>\",\n \"specify 'primary' storage destination URL.\\n\" +\n \"\\tfile:/path/to/dir for directory on local FS\\n\" +\n \"\\ts3://<bucket>/?region=<name> for real AWS bucket\\n\" +\n \"\\ts3e://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via http\\n\" +\n \"\\ts3es://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via https\",\n ),\n];\n\nexport const StorageWorkPathOptions = (): Option[] => [\n new Option(\"--storage-work <path>\", \"specify path on host to be used as 'work' storage\"),\n];\n\nexport const StorageLibraryURLOptions = (): Option[] => [\n new Option(\n \"--storage-library <url>\",\n \"specify 'library' storage destination URL.\\n\" +\n \"\\tfile:/path/to/dir for directory on local FS\\n\" +\n \"\\ts3://<bucket>/?region=<name> for real AWS bucket\\n\" +\n \"\\ts3e://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via http\\n\" +\n \"\\ts3es://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via https\",\n ),\n];\n\nexport const AuthOptions = (): Option[] => [\n new Option(\"--auth-enabled\", \"enable authorization\"),\n new Option(\n \"--auth-htpasswd-file <path>\",\n \"path to .htpasswd file with Platforma users (static user DB auth source)\",\n ),\n new Option(\n \"--auth-ldap-server <addr>\",\n \"address of LDAP server to use for auth in Platforma (auth source)\",\n ),\n new Option(\n \"--auth-ldap-default-dn <dn>\",\n \"DN to use when checking user with LDAP bind operation: e.g. cn=%u,ou=users,dc=example,dc=com\",\n ),\n];\n\n/** Flag bag keyed by CLI flag name; `toFlags` adapts commander's camelCased\n * option values into this shape, which command bodies and `core.*` helpers read. */\nexport interface Flags {\n \"log-level\"?: string;\n image?: string;\n version?: string;\n arch?: string;\n license?: string;\n \"license-file\"?: string;\n \"grpc-port\"?: number;\n \"grpc-listen\"?: string;\n \"monitoring-port\"?: number;\n \"monitoring-listen\"?: string;\n \"debug-port\"?: number;\n \"debug-listen\"?: string;\n \"s3-port\"?: number;\n \"s3-console-port\"?: number;\n storage?: string;\n \"minio-presign-host\"?: boolean;\n mount?: string[];\n \"pl-log-file\"?: string;\n \"pl-workdir\"?: string;\n \"pl-binary\"?: string;\n \"pl-sources\"?: string;\n config?: string;\n \"storage-primary\"?: string;\n \"storage-work\"?: string;\n \"storage-library\"?: string;\n \"auth-enabled\"?: boolean;\n \"auth-htpasswd-file\"?: string;\n \"auth-ldap-server\"?: string;\n \"auth-ldap-default-dn\"?: string;\n}\n\nexport function toFlags(o: Record<string, unknown>): Flags {\n return {\n \"log-level\": o.logLevel as string | undefined,\n image: o.image as string | undefined,\n version: o.version as string | undefined,\n arch: o.arch as string | undefined,\n license: o.license as string | undefined,\n \"license-file\": o.licenseFile as string | undefined,\n \"grpc-port\": o.grpcPort as number | undefined,\n \"grpc-listen\": o.grpcListen as string | undefined,\n \"monitoring-port\": o.monitoringPort as number | undefined,\n \"monitoring-listen\": o.monitoringListen as string | undefined,\n \"debug-port\": o.debugPort as number | undefined,\n \"debug-listen\": o.debugListen as string | undefined,\n \"s3-port\": o.s3Port as number | undefined,\n \"s3-console-port\": o.s3ConsolePort as number | undefined,\n storage: o.storage as string | undefined,\n \"minio-presign-host\": o.minioPresignHost as boolean | undefined,\n mount: o.mount as string[] | undefined,\n \"pl-log-file\": o.plLogFile as string | undefined,\n \"pl-workdir\": o.plWorkdir as string | undefined,\n \"pl-binary\": o.plBinary as string | undefined,\n \"pl-sources\": o.plSources as string | undefined,\n config: o.config as string | undefined,\n \"storage-primary\": o.storagePrimary as string | undefined,\n \"storage-work\": o.storageWork as string | undefined,\n \"storage-library\": o.storageLibrary as string | undefined,\n \"auth-enabled\": o.authEnabled as boolean | undefined,\n \"auth-htpasswd-file\": o.authHtpasswdFile as string | undefined,\n \"auth-ldap-server\": o.authLdapServer as string | undefined,\n \"auth-ldap-default-dn\": o.authLdapDefaultDn as string | undefined,\n };\n}\n\n/** ArgParser flag-defs derived from commander Options, for the `svc create`\n * passthrough commands: booleans are value-less, the rest are plain string\n * options (value passed through verbatim), defaults carried over. */\nexport function argDefs(...optionGroups: Option[][]): Record<string, FlagDefinition> {\n const defs: Record<string, FlagDefinition> = {};\n for (const group of optionGroups) {\n for (const opt of group) {\n const name = opt.long?.replace(/^--/, \"\");\n if (!name) continue;\n defs[name] = {\n name,\n type: opt.isBoolean() ? \"boolean\" : \"string\",\n default: opt.defaultValue,\n multiple: opt.variadic,\n };\n }\n }\n return defs;\n}\n"],"mappings":"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"}
|
package/dist/cmd-opts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-opts.js","names":[],"sources":["../src/cmd-opts.ts"],"sourcesContent":["import { Command, Option } from \"commander\";\nimport type { FlagDefinition } from \"./commands/svc/create/arg-parser\";\n\n/** Add one or more groups of options to a command, preserving group order. */\nexport function addOptions(cmd: Command, ...optionGroups: Option[][]): Command {\n for (const group of optionGroups) {\n for (const opt of group) cmd.addOption(opt);\n }\n return cmd;\n}\n\nconst toInt = (v: string): number => parseInt(v, 10);\n\n// Repeatable option collector: `--mount a --mount b` -> [\"a\",\"b\"].\nconst collect = (value: string, previous?: string[]): string[] => [...(previous ?? []), value];\n\nexport const GlobalOptions = (): Option[] => [\n new Option(\"--log-level <level>\", \"logging level\")\n .choices([\"error\", \"warn\", \"info\", \"debug\"])\n .default(\"info\"),\n];\n\nexport const ImageOptions = (): Option[] => [\n new Option(\"--image <image>\", \"use custom docker image to run platforma\"),\n];\n\nexport const VersionOptions = (): Option[] => [\n new Option(\n \"--version <version>\",\n \"use custom platforma release (official docker image or binary package)\",\n ),\n];\n\nexport const ArchOptions = (): Option[] => [\n new Option(\n \"--arch <arch>\",\n \"override architecture. You can start amd64 linux image on arm-based host (say, Apple M family processor). I.e. arm64, amd64, amd64/v2\",\n ),\n];\n\nexport const LicenseOptions = (): Option[] => [\n new Option(\n \"--license <license>\",\n 'pass a license code. The license can be got from \"https://platforma.bio/getlicense\".',\n ),\n new Option(\n \"--license-file <path>\",\n \"specify a path to the file with a license. The license can be got from 'https://platforma.bio/getlicense'.\",\n ),\n];\n\nexport const AddressesOptions = (): Option[] => [\n new Option(\"--grpc-port <port>\", \"port for Platforma Backend gRPC API. Default is 6345\")\n .argParser(toInt)\n .env(\"PLATFORMA_GRPC_PORT\"),\n new Option(\n \"--grpc-listen <addr>\",\n \"full listen addr for Platforma Backend gRPC API. Default is 127.0.0.1:6345\",\n ).env(\"PLATFORMA_GRPC_LISTEN\"),\n new Option(\n \"--monitoring-port <port>\",\n \"port for Platforma Backend monitoring API. Default is 9090\",\n )\n .argParser(toInt)\n .env(\"PLATFORMA_MONITORING_PORT\"),\n new Option(\n \"--monitoring-listen <addr>\",\n \"full listen addr for Platforma Backend monitoring API. Default is 127.0.0.1:9090\",\n ).env(\"PLATFORMA_MONITORING_LISTEN\"),\n new Option(\"--debug-port <port>\", \"port for Platforma Backend debug API. Default is 9091\")\n .argParser(toInt)\n .env(\"PLATFORMA_DEBUG_PORT\"),\n new Option(\n \"--debug-listen <addr>\",\n \"full listen addr for Platforma Backend debug API. Default is 127.0.0.1:9091\",\n ).env(\"PLATFORMA_DEBUG_LISTEN\"),\n];\n\nexport const S3AddressesOptions = (): Option[] => [\n new Option(\"--s3-port <port>\", \"port that S3 will listen, default is 9000\")\n .argParser(toInt)\n .default(9000)\n .env(\"PLATFORMA_S3_PORT\"),\n new Option(\"--s3-console-port <port>\", \"port that a console of S3 will listen, default is 9001\")\n .argParser(toInt)\n .default(9001)\n .env(\"PLATFORMA_S3_CONSOLE_PORT\"),\n];\n\nexport const StorageOptions = (): Option[] => [\n new Option(\n \"--storage <path>\",\n \"specify path on host to be used as storage for all Platforma Backend data\",\n ),\n];\n\nexport const MinioPresignHostOptions = (): Option[] => [\n new Option(\"--minio-presign-host\", \"use 'minio' host instead of 'localhost' in presign URLs\"),\n];\n\nexport const MountOptions = (): Option[] => [\n new Option(\n \"--mount <path>\",\n \"things to be mounted into platforma docker container. Targets will appear inside the container under the same absolute paths\",\n ).argParser(collect),\n];\n\nexport const PlLogFileOptions = (): Option[] => [\n new Option(\"--pl-log-file <path>\", \"specify path for Platforma Backend log file\"),\n];\n\nexport const PlWorkdirOptions = (): Option[] => [\n new Option(\"--pl-workdir <path>\", \"specify working directory for Platforma Backend process\"),\n];\n\nexport const PlBinaryOptions = (): Option[] => [\n new Option(\n \"--pl-binary <path>\",\n \"start given Platforma Backend binary instead of automatically downloaded version\",\n ),\n];\n\nexport const PlSourcesOptions = (): Option[] => [\n new Option(\n \"--pl-sources <path>\",\n \"path to pl repository root: build Platforma Backend from sources and start the resulting binary\",\n ),\n];\n\nexport const ConfigOptions = (): Option[] => [\n new Option(\"--config <path>\", \"use custom Platforma Backend config\"),\n];\n\nexport const StoragePrimaryURLOptions = (): Option[] => [\n new Option(\n \"--storage-primary <url>\",\n \"specify 'primary' storage destination URL.\\n\" +\n \"\\tfile:/path/to/dir for directory on local FS\\n\" +\n \"\\ts3://<bucket>/?region=<name> for real AWS bucket\\n\" +\n \"\\ts3e://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via http\\n\" +\n \"\\ts3es://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via https\",\n ),\n];\n\nexport const StorageWorkPathOptions = (): Option[] => [\n new Option(\"--storage-work <path>\", \"specify path on host to be used as 'work' storage\"),\n];\n\nexport const StorageLibraryURLOptions = (): Option[] => [\n new Option(\n \"--storage-library <url>\",\n \"specify 'library' storage destination URL.\\n\" +\n \"\\tfile:/path/to/dir for directory on local FS\\n\" +\n \"\\ts3://<bucket>/?region=<name> for real AWS bucket\\n\" +\n \"\\ts3e://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via http\\n\" +\n \"\\ts3es://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via https\",\n ),\n];\n\nexport const AuthOptions = (): Option[] => [\n new Option(\"--auth-enabled\", \"enable authorization\"),\n new Option(\n \"--auth-htpasswd-file <path>\",\n \"path to .htpasswd file with Platforma users (static user DB auth source)\",\n ),\n new Option(\n \"--auth-ldap-server <addr>\",\n \"address of LDAP server to use for auth in Platforma (auth source)\",\n ),\n new Option(\n \"--auth-ldap-default-dn <dn>\",\n \"DN to use when checking user with LDAP bind operation: e.g. cn=%u,ou=users,dc=example,dc=com\",\n ),\n];\n\n/** Flag bag keyed by CLI flag name; `toFlags` adapts commander's camelCased\n * option values into this shape, which command bodies and `core.*` helpers read. */\nexport interface Flags {\n \"log-level\"?: string;\n image?: string;\n version?: string;\n arch?: string;\n license?: string;\n \"license-file\"?: string;\n \"grpc-port\"?: number;\n \"grpc-listen\"?: string;\n \"monitoring-port\"?: number;\n \"monitoring-listen\"?: string;\n \"debug-port\"?: number;\n \"debug-listen\"?: string;\n \"s3-port\"?: number;\n \"s3-console-port\"?: number;\n storage?: string;\n \"minio-presign-host\"?: boolean;\n mount?: string[];\n \"pl-log-file\"?: string;\n \"pl-workdir\"?: string;\n \"pl-binary\"?: string;\n \"pl-sources\"?: string;\n config?: string;\n \"storage-primary\"?: string;\n \"storage-work\"?: string;\n \"storage-library\"?: string;\n \"auth-enabled\"?: boolean;\n \"auth-htpasswd-file\"?: string;\n \"auth-ldap-server\"?: string;\n \"auth-ldap-default-dn\"?: string;\n}\n\nexport function toFlags(o: Record<string, unknown>): Flags {\n return {\n \"log-level\": o.logLevel as string | undefined,\n image: o.image as string | undefined,\n version: o.version as string | undefined,\n arch: o.arch as string | undefined,\n license: o.license as string | undefined,\n \"license-file\": o.licenseFile as string | undefined,\n \"grpc-port\": o.grpcPort as number | undefined,\n \"grpc-listen\": o.grpcListen as string | undefined,\n \"monitoring-port\": o.monitoringPort as number | undefined,\n \"monitoring-listen\": o.monitoringListen as string | undefined,\n \"debug-port\": o.debugPort as number | undefined,\n \"debug-listen\": o.debugListen as string | undefined,\n \"s3-port\": o.s3Port as number | undefined,\n \"s3-console-port\": o.s3ConsolePort as number | undefined,\n storage: o.storage as string | undefined,\n \"minio-presign-host\": o.minioPresignHost as boolean | undefined,\n mount: o.mount as string[] | undefined,\n \"pl-log-file\": o.plLogFile as string | undefined,\n \"pl-workdir\": o.plWorkdir as string | undefined,\n \"pl-binary\": o.plBinary as string | undefined,\n \"pl-sources\": o.plSources as string | undefined,\n config: o.config as string | undefined,\n \"storage-primary\": o.storagePrimary as string | undefined,\n \"storage-work\": o.storageWork as string | undefined,\n \"storage-library\": o.storageLibrary as string | undefined,\n \"auth-enabled\": o.authEnabled as boolean | undefined,\n \"auth-htpasswd-file\": o.authHtpasswdFile as string | undefined,\n \"auth-ldap-server\": o.authLdapServer as string | undefined,\n \"auth-ldap-default-dn\": o.authLdapDefaultDn as string | undefined,\n };\n}\n\n/** ArgParser flag-defs derived from commander Options, for the `svc create`\n * passthrough commands: booleans are value-less, the rest are plain string\n * options (value passed through verbatim), defaults carried over. */\nexport function argDefs(...optionGroups: Option[][]): Record<string, FlagDefinition> {\n const defs: Record<string, FlagDefinition> = {};\n for (const group of optionGroups) {\n for (const opt of group) {\n const name = opt.long?.replace(/^--/, \"\");\n if (!name) continue;\n defs[name] = {\n name,\n type: opt.isBoolean() ? \"boolean\" : \"string\",\n default: opt.defaultValue,\n multiple: opt.variadic,\n };\n }\n }\n return defs;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmd-opts.js","names":[],"sources":["../src/cmd-opts.ts"],"sourcesContent":["import { Command, Option } from \"commander\";\nimport type { FlagDefinition } from \"./commands/svc/create/arg-parser\";\n\n/** Add one or more groups of options to a command, preserving group order. */\nexport function addOptions(cmd: Command, ...optionGroups: Option[][]): Command {\n for (const group of optionGroups) {\n for (const opt of group) cmd.addOption(opt);\n }\n return cmd;\n}\n\nconst toInt = (v: string): number => parseInt(v, 10);\n\n// Repeatable option collector: `--mount a --mount b` -> [\"a\",\"b\"].\nconst collect = (value: string, previous?: string[]): string[] => [...(previous ?? []), value];\n\nexport const GlobalOptions = (): Option[] => [\n new Option(\"--log-level <level>\", \"logging level\")\n .choices([\"error\", \"warn\", \"info\", \"debug\"])\n .default(\"info\"),\n];\n\nexport const ImageOptions = (): Option[] => [\n new Option(\"--image <image>\", \"use custom docker image to run platforma\"),\n];\n\nexport const VersionOptions = (): Option[] => [\n new Option(\n \"--version <version>\",\n \"use custom platforma release (official docker image or binary package)\",\n ),\n];\n\nexport const ArchOptions = (): Option[] => [\n new Option(\n \"--arch <arch>\",\n \"override architecture. You can start amd64 linux image on arm-based host (say, Apple M family processor). I.e. arm64, amd64, amd64/v2\",\n ),\n];\n\nexport const LicenseOptions = (): Option[] => [\n new Option(\n \"--license <license>\",\n 'pass a license code. The license can be got from \"https://platforma.bio/getlicense\".',\n ),\n new Option(\n \"--license-file <path>\",\n \"specify a path to the file with a license. The license can be got from 'https://platforma.bio/getlicense'.\",\n ),\n];\n\nexport const AddressesOptions = (): Option[] => [\n new Option(\"--grpc-port <port>\", \"port for Platforma Backend gRPC API. Default is 6345\")\n .argParser(toInt)\n .env(\"PLATFORMA_GRPC_PORT\"),\n new Option(\n \"--grpc-listen <addr>\",\n \"full listen addr for Platforma Backend gRPC API. Default is 127.0.0.1:6345\",\n ).env(\"PLATFORMA_GRPC_LISTEN\"),\n new Option(\n \"--monitoring-port <port>\",\n \"port for Platforma Backend monitoring API. Default is 9090\",\n )\n .argParser(toInt)\n .env(\"PLATFORMA_MONITORING_PORT\"),\n new Option(\n \"--monitoring-listen <addr>\",\n \"full listen addr for Platforma Backend monitoring API. Default is 127.0.0.1:9090\",\n ).env(\"PLATFORMA_MONITORING_LISTEN\"),\n new Option(\"--debug-port <port>\", \"port for Platforma Backend debug API. Default is 9091\")\n .argParser(toInt)\n .env(\"PLATFORMA_DEBUG_PORT\"),\n new Option(\n \"--debug-listen <addr>\",\n \"full listen addr for Platforma Backend debug API. Default is 127.0.0.1:9091\",\n ).env(\"PLATFORMA_DEBUG_LISTEN\"),\n];\n\nexport const S3AddressesOptions = (): Option[] => [\n new Option(\"--s3-port <port>\", \"port that S3 will listen, default is 9000\")\n .argParser(toInt)\n .default(9000)\n .env(\"PLATFORMA_S3_PORT\"),\n new Option(\"--s3-console-port <port>\", \"port that a console of S3 will listen, default is 9001\")\n .argParser(toInt)\n .default(9001)\n .env(\"PLATFORMA_S3_CONSOLE_PORT\"),\n];\n\nexport const StorageOptions = (): Option[] => [\n new Option(\n \"--storage <path>\",\n \"specify path on host to be used as storage for all Platforma Backend data\",\n ),\n];\n\nexport const MinioPresignHostOptions = (): Option[] => [\n new Option(\"--minio-presign-host\", \"use 'minio' host instead of 'localhost' in presign URLs\"),\n];\n\nexport const MountOptions = (): Option[] => [\n new Option(\n \"--mount <path>\",\n \"things to be mounted into platforma docker container. Targets will appear inside the container under the same absolute paths\",\n ).argParser(collect),\n];\n\nexport const PlLogFileOptions = (): Option[] => [\n new Option(\"--pl-log-file <path>\", \"specify path for Platforma Backend log file\"),\n];\n\nexport const PlWorkdirOptions = (): Option[] => [\n new Option(\"--pl-workdir <path>\", \"specify working directory for Platforma Backend process\"),\n];\n\nexport const PlBinaryOptions = (): Option[] => [\n new Option(\n \"--pl-binary <path>\",\n \"start given Platforma Backend binary instead of automatically downloaded version\",\n ),\n];\n\nexport const PlSourcesOptions = (): Option[] => [\n new Option(\n \"--pl-sources <path>\",\n \"path to pl repository root: build Platforma Backend from sources and start the resulting binary\",\n ),\n];\n\nexport const ConfigOptions = (): Option[] => [\n new Option(\"--config <path>\", \"use custom Platforma Backend config\"),\n];\n\nexport const StoragePrimaryURLOptions = (): Option[] => [\n new Option(\n \"--storage-primary <url>\",\n \"specify 'primary' storage destination URL.\\n\" +\n \"\\tfile:/path/to/dir for directory on local FS\\n\" +\n \"\\ts3://<bucket>/?region=<name> for real AWS bucket\\n\" +\n \"\\ts3e://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via http\\n\" +\n \"\\ts3es://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via https\",\n ),\n];\n\nexport const StorageWorkPathOptions = (): Option[] => [\n new Option(\"--storage-work <path>\", \"specify path on host to be used as 'work' storage\"),\n];\n\nexport const StorageLibraryURLOptions = (): Option[] => [\n new Option(\n \"--storage-library <url>\",\n \"specify 'library' storage destination URL.\\n\" +\n \"\\tfile:/path/to/dir for directory on local FS\\n\" +\n \"\\ts3://<bucket>/?region=<name> for real AWS bucket\\n\" +\n \"\\ts3e://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via http\\n\" +\n \"\\ts3es://<endpoint>/<bucket>/?region=<name> for bucket behind custom endpoint via https\",\n ),\n];\n\nexport const AuthOptions = (): Option[] => [\n new Option(\"--auth-enabled\", \"enable authorization\"),\n new Option(\n \"--auth-htpasswd-file <path>\",\n \"path to .htpasswd file with Platforma users (static user DB auth source)\",\n ),\n new Option(\n \"--auth-ldap-server <addr>\",\n \"address of LDAP server to use for auth in Platforma (auth source)\",\n ),\n new Option(\n \"--auth-ldap-default-dn <dn>\",\n \"DN to use when checking user with LDAP bind operation: e.g. cn=%u,ou=users,dc=example,dc=com\",\n ),\n];\n\n/** Flag bag keyed by CLI flag name; `toFlags` adapts commander's camelCased\n * option values into this shape, which command bodies and `core.*` helpers read. */\nexport interface Flags {\n \"log-level\"?: string;\n image?: string;\n version?: string;\n arch?: string;\n license?: string;\n \"license-file\"?: string;\n \"grpc-port\"?: number;\n \"grpc-listen\"?: string;\n \"monitoring-port\"?: number;\n \"monitoring-listen\"?: string;\n \"debug-port\"?: number;\n \"debug-listen\"?: string;\n \"s3-port\"?: number;\n \"s3-console-port\"?: number;\n storage?: string;\n \"minio-presign-host\"?: boolean;\n mount?: string[];\n \"pl-log-file\"?: string;\n \"pl-workdir\"?: string;\n \"pl-binary\"?: string;\n \"pl-sources\"?: string;\n config?: string;\n \"storage-primary\"?: string;\n \"storage-work\"?: string;\n \"storage-library\"?: string;\n \"auth-enabled\"?: boolean;\n \"auth-htpasswd-file\"?: string;\n \"auth-ldap-server\"?: string;\n \"auth-ldap-default-dn\"?: string;\n}\n\nexport function toFlags(o: Record<string, unknown>): Flags {\n return {\n \"log-level\": o.logLevel as string | undefined,\n image: o.image as string | undefined,\n version: o.version as string | undefined,\n arch: o.arch as string | undefined,\n license: o.license as string | undefined,\n \"license-file\": o.licenseFile as string | undefined,\n \"grpc-port\": o.grpcPort as number | undefined,\n \"grpc-listen\": o.grpcListen as string | undefined,\n \"monitoring-port\": o.monitoringPort as number | undefined,\n \"monitoring-listen\": o.monitoringListen as string | undefined,\n \"debug-port\": o.debugPort as number | undefined,\n \"debug-listen\": o.debugListen as string | undefined,\n \"s3-port\": o.s3Port as number | undefined,\n \"s3-console-port\": o.s3ConsolePort as number | undefined,\n storage: o.storage as string | undefined,\n \"minio-presign-host\": o.minioPresignHost as boolean | undefined,\n mount: o.mount as string[] | undefined,\n \"pl-log-file\": o.plLogFile as string | undefined,\n \"pl-workdir\": o.plWorkdir as string | undefined,\n \"pl-binary\": o.plBinary as string | undefined,\n \"pl-sources\": o.plSources as string | undefined,\n config: o.config as string | undefined,\n \"storage-primary\": o.storagePrimary as string | undefined,\n \"storage-work\": o.storageWork as string | undefined,\n \"storage-library\": o.storageLibrary as string | undefined,\n \"auth-enabled\": o.authEnabled as boolean | undefined,\n \"auth-htpasswd-file\": o.authHtpasswdFile as string | undefined,\n \"auth-ldap-server\": o.authLdapServer as string | undefined,\n \"auth-ldap-default-dn\": o.authLdapDefaultDn as string | undefined,\n };\n}\n\n/** ArgParser flag-defs derived from commander Options, for the `svc create`\n * passthrough commands: booleans are value-less, the rest are plain string\n * options (value passed through verbatim), defaults carried over. */\nexport function argDefs(...optionGroups: Option[][]): Record<string, FlagDefinition> {\n const defs: Record<string, FlagDefinition> = {};\n for (const group of optionGroups) {\n for (const opt of group) {\n const name = opt.long?.replace(/^--/, \"\");\n if (!name) continue;\n defs[name] = {\n name,\n type: opt.isBoolean() ? \"boolean\" : \"string\",\n default: opt.defaultValue,\n multiple: opt.variadic,\n };\n }\n }\n return defs;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-block.cjs","names":["Command"],"sources":["../../src/commands/create-block.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as cmdOpts from \"../cmd-opts\";\nimport * as util from \"../util\";\nimport * as block from \"../block\";\n\nexport default function createBlockCommand(): Command {\n const cmd = new Command(\"create-block\").description(\n \"Helps to create a new block by downloading a block's template.\",\n );\n\n cmdOpts.addOptions(cmd, cmdOpts.GlobalOptions());\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n const logger = util.createLogger(flags[\"log-level\"]);\n\n await block.createBlock(logger);\n });\n\n return cmd;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-block.cjs","names":["Command"],"sources":["../../src/commands/create-block.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as cmdOpts from \"../cmd-opts\";\nimport * as util from \"../util\";\nimport * as block from \"../block\";\n\nexport default function createBlockCommand(): Command {\n const cmd = new Command(\"create-block\").description(\n \"Helps to create a new block by downloading a block's template.\",\n );\n\n cmdOpts.addOptions(cmd, cmdOpts.GlobalOptions());\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n const logger = util.createLogger(flags[\"log-level\"]);\n\n await block.createBlock(logger);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;AAKA,SAAwB,qBAA8B;CACpD,MAAM,MAAM,IAAIA,UAAAA,QAAQ,cAAc,CAAC,CAAC,YACtC,gEACF;CAEA,iBAAA,WAAmB,KAAA,iBAAA,cAA2B,CAAC;CAE/C,IAAI,OAAO,OAAO,MAAM;EACtB,MAAM,QAAA,iBAAA,QAAwB,CAAC;EAC/B,MAAM,SAAA,aAAA,aAA2B,MAAM,YAAY;EAEnD,MAAA,cAAA,YAAwB,MAAM;CAChC,CAAC;CAED,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-block.js","names":["cmdOpts.GlobalOptions","cmdOpts.toFlags","util.createLogger","block.createBlock"],"sources":["../../src/commands/create-block.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as cmdOpts from \"../cmd-opts\";\nimport * as util from \"../util\";\nimport * as block from \"../block\";\n\nexport default function createBlockCommand(): Command {\n const cmd = new Command(\"create-block\").description(\n \"Helps to create a new block by downloading a block's template.\",\n );\n\n cmdOpts.addOptions(cmd, cmdOpts.GlobalOptions());\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n const logger = util.createLogger(flags[\"log-level\"]);\n\n await block.createBlock(logger);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;AAKA,SAAwB,qBAA8B;CACpD,MAAM,MAAM,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"create-block.js","names":["cmdOpts.GlobalOptions","cmdOpts.toFlags","util.createLogger","block.createBlock"],"sources":["../../src/commands/create-block.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as cmdOpts from \"../cmd-opts\";\nimport * as util from \"../util\";\nimport * as block from \"../block\";\n\nexport default function createBlockCommand(): Command {\n const cmd = new Command(\"create-block\").description(\n \"Helps to create a new block by downloading a block's template.\",\n );\n\n cmdOpts.addOptions(cmd, cmdOpts.GlobalOptions());\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n const logger = util.createLogger(flags[\"log-level\"]);\n\n await block.createBlock(logger);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;AAKA,SAAwB,qBAA8B;CACpD,MAAM,MAAM,IAAI,QAAQ,cAAc,CAAC,CAAC,YACtC,gEACF;CAEA,WAAmB,KAAKA,cAAsB,CAAC;CAE/C,IAAI,OAAO,OAAO,MAAM;EAItB,MAAMG,YAFSD,aADDD,QAAgB,CACG,CAAA,CAAM,YAEf,CAAM;CAChC,CAAC;CAED,OAAO;AACT"}
|
package/dist/commands/reset.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.cjs","names":["Command","Core"],"sources":["../../src/commands/reset.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport Core from \"../core\";\nimport * as cmdOpts from \"../cmd-opts\";\nimport * as util from \"../util\";\n\nexport default function resetCommand(): Command {\n const cmd = new Command(\"reset\").description(\n \"Clear service state (forget last run command, destroy docker services, volumes and so on)\",\n );\n\n cmdOpts.addOptions(cmd, cmdOpts.GlobalOptions());\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.cleanupInstance();\n });\n\n return cmd;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"reset.cjs","names":["Command","Core"],"sources":["../../src/commands/reset.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport Core from \"../core\";\nimport * as cmdOpts from \"../cmd-opts\";\nimport * as util from \"../util\";\n\nexport default function resetCommand(): Command {\n const cmd = new Command(\"reset\").description(\n \"Clear service state (forget last run command, destroy docker services, volumes and so on)\",\n );\n\n cmdOpts.addOptions(cmd, cmdOpts.GlobalOptions());\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.cleanupInstance();\n });\n\n return cmd;\n}\n"],"mappings":";;;;;AAKA,SAAwB,eAAwB;CAC9C,MAAM,MAAM,IAAIA,UAAAA,QAAQ,OAAO,CAAC,CAAC,YAC/B,2FACF;CAEA,iBAAA,WAAmB,KAAA,iBAAA,cAA2B,CAAC;CAE/C,IAAI,OAAO,OAAO,MAAM;EACtB,MAAM,QAAA,iBAAA,QAAwB,CAAC;EAI/B,IADiBC,aAAAA,QAAAA,aAAAA,aADgB,MAAM,YACZ,CACxB,CAAC,CAAC,gBAAgB;CACvB,CAAC;CAED,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","names":["cmdOpts.GlobalOptions","cmdOpts.toFlags","util.createLogger"],"sources":["../../src/commands/reset.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport Core from \"../core\";\nimport * as cmdOpts from \"../cmd-opts\";\nimport * as util from \"../util\";\n\nexport default function resetCommand(): Command {\n const cmd = new Command(\"reset\").description(\n \"Clear service state (forget last run command, destroy docker services, volumes and so on)\",\n );\n\n cmdOpts.addOptions(cmd, cmdOpts.GlobalOptions());\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.cleanupInstance();\n });\n\n return cmd;\n}\n"],"mappings":";;;;;AAKA,SAAwB,eAAwB;CAC9C,MAAM,MAAM,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"reset.js","names":["cmdOpts.GlobalOptions","cmdOpts.toFlags","util.createLogger"],"sources":["../../src/commands/reset.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport Core from \"../core\";\nimport * as cmdOpts from \"../cmd-opts\";\nimport * as util from \"../util\";\n\nexport default function resetCommand(): Command {\n const cmd = new Command(\"reset\").description(\n \"Clear service state (forget last run command, destroy docker services, volumes and so on)\",\n );\n\n cmdOpts.addOptions(cmd, cmdOpts.GlobalOptions());\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.cleanupInstance();\n });\n\n return cmd;\n}\n"],"mappings":";;;;;AAKA,SAAwB,eAAwB;CAC9C,MAAM,MAAM,IAAI,QAAQ,OAAO,CAAC,CAAC,YAC/B,2FACF;CAEA,WAAmB,KAAKA,cAAsB,CAAC;CAE/C,IAAI,OAAO,OAAO,MAAM;EAKtB,IADiB,KADFE,aAFDD,QAAgB,CAEG,CAAA,CAAM,YACZ,CACxB,CAAC,CAAC,gBAAgB;CACvB,CAAC;CAED,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.cjs","names":["Command","Core","path","state"],"sources":["../../../../src/commands/start/docker/s3.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as util from \"../../../util\";\nimport type * as types from \"../../../templates/types\";\nimport state from \"../../../state\";\n\nexport default function startDockerS3Command(): Command {\n const cmd = new Command(\"s3\").description(\n \"Run platforma backend service with 'S3' primary storage type\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.S3AddressesOptions(),\n cmdOpts.ImageOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.ArchOptions(),\n cmdOpts.AuthOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.MountOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.MinioPresignHostOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"docker-s3\";\n\n const authEnabled = flags[\"auth-enabled\"];\n const authOptions: types.authOptions | undefined = authEnabled\n ? {\n enabled: authEnabled,\n drivers: core.initAuthDriversList(flags, \".\"),\n }\n : undefined;\n\n const storage = flags.storage ? path.join(\".\", flags.storage) : state.instanceDir(instanceName);\n\n const mounts: { hostPath: string; containerPath?: string }[] = [];\n for (const p of flags.mount ?? []) {\n mounts.push({ hostPath: p });\n }\n\n const platformOverride = flags.arch ? `linux/${flags.arch}` : undefined;\n const presignHost = flags[\"minio-presign-host\"] ? \"minio\" : \"localhost\";\n\n const instance = core.createDockerS3(instanceName, storage, {\n image: flags.image,\n version: flags.version,\n\n license: flags[\"license\"],\n licenseFile: flags[\"license-file\"],\n\n platformOverride: platformOverride,\n customMounts: mounts,\n\n auth: authOptions,\n\n grpcAddr: flags[\"grpc-listen\"],\n grpcPort: flags[\"grpc-port\"],\n\n monitoringAddr: flags[\"monitoring-listen\"],\n monitoringPort: flags[\"monitoring-port\"],\n\n debugAddr: flags[\"debug-listen\"],\n debugPort: flags[\"debug-port\"],\n\n s3Port: flags[\"s3-port\"],\n s3ConsolePort: flags[\"s3-console-port\"],\n\n presignHost: presignHost,\n });\n\n core.switchInstance(instance);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;;;AASA,SAAwB,uBAAgC;CACtD,MAAM,MAAM,IAAIA,UAAAA,QAAQ,
|
|
1
|
+
{"version":3,"file":"s3.cjs","names":["Command","Core","path","state"],"sources":["../../../../src/commands/start/docker/s3.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as util from \"../../../util\";\nimport type * as types from \"../../../templates/types\";\nimport state from \"../../../state\";\n\nexport default function startDockerS3Command(): Command {\n const cmd = new Command(\"s3\").description(\n \"Run platforma backend service with 'S3' primary storage type\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.S3AddressesOptions(),\n cmdOpts.ImageOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.ArchOptions(),\n cmdOpts.AuthOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.MountOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.MinioPresignHostOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"docker-s3\";\n\n const authEnabled = flags[\"auth-enabled\"];\n const authOptions: types.authOptions | undefined = authEnabled\n ? {\n enabled: authEnabled,\n drivers: core.initAuthDriversList(flags, \".\"),\n }\n : undefined;\n\n const storage = flags.storage ? path.join(\".\", flags.storage) : state.instanceDir(instanceName);\n\n const mounts: { hostPath: string; containerPath?: string }[] = [];\n for (const p of flags.mount ?? []) {\n mounts.push({ hostPath: p });\n }\n\n const platformOverride = flags.arch ? `linux/${flags.arch}` : undefined;\n const presignHost = flags[\"minio-presign-host\"] ? \"minio\" : \"localhost\";\n\n const instance = core.createDockerS3(instanceName, storage, {\n image: flags.image,\n version: flags.version,\n\n license: flags[\"license\"],\n licenseFile: flags[\"license-file\"],\n\n platformOverride: platformOverride,\n customMounts: mounts,\n\n auth: authOptions,\n\n grpcAddr: flags[\"grpc-listen\"],\n grpcPort: flags[\"grpc-port\"],\n\n monitoringAddr: flags[\"monitoring-listen\"],\n monitoringPort: flags[\"monitoring-port\"],\n\n debugAddr: flags[\"debug-listen\"],\n debugPort: flags[\"debug-port\"],\n\n s3Port: flags[\"s3-port\"],\n s3ConsolePort: flags[\"s3-console-port\"],\n\n presignHost: presignHost,\n });\n\n core.switchInstance(instance);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;;;AASA,SAAwB,uBAAgC;CACtD,MAAM,MAAM,IAAIA,UAAAA,QAAQ,IAAI,CAAC,CAAC,YAC5B,8DACF;CAEA,iBAAA,WACE,KAAA,iBAAA,cACsB,GAAA,iBAAA,iBACG,GAAA,iBAAA,mBACE,GAAA,iBAAA,aACN,GAAA,iBAAA,eACE,GAAA,iBAAA,YACH,GAAA,iBAAA,YACA,GAAA,iBAAA,eACG,GAAA,iBAAA,aACF,GAAA,iBAAA,eACE,GAAA,iBAAA,wBACS,CAClC;CAEA,IAAI,OAAO,OAAO,MAAM;EACtB,MAAM,QAAA,iBAAA,QAAwB,CAAC;EAG/B,MAAM,OAAO,IAAIC,aAAAA,QAAAA,aAAAA,aADgB,MAAM,YACZ,CAAC;EAC5B,KAAK,iBAAiB,KAAK;EAE3B,MAAM,eAAe;EAErB,MAAM,cAAc,MAAM;EAC1B,MAAM,cAA6C,cAC/C;GACE,SAAS;GACT,SAAS,KAAK,oBAAoB,OAAO,GAAG;EAC9C,IACA,KAAA;EAEJ,MAAM,UAAU,MAAM,UAAUC,UAAAA,QAAK,KAAK,KAAK,MAAM,OAAO,IAAIC,cAAAA,QAAM,YAAY,YAAY;EAE9F,MAAM,SAAyD,CAAC;EAChE,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC,GAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,CAAC;EAG7B,MAAM,mBAAmB,MAAM,OAAO,SAAS,MAAM,SAAS,KAAA;EAC9D,MAAM,cAAc,MAAM,wBAAwB,UAAU;EAE5D,MAAM,WAAW,KAAK,eAAe,cAAc,SAAS;GAC1D,OAAO,MAAM;GACb,SAAS,MAAM;GAEf,SAAS,MAAM;GACf,aAAa,MAAM;GAED;GAClB,cAAc;GAEd,MAAM;GAEN,UAAU,MAAM;GAChB,UAAU,MAAM;GAEhB,gBAAgB,MAAM;GACtB,gBAAgB,MAAM;GAEtB,WAAW,MAAM;GACjB,WAAW,MAAM;GAEjB,QAAQ,MAAM;GACd,eAAe,MAAM;GAER;EACf,CAAC;EAED,KAAK,eAAe,QAAQ;CAC9B,CAAC;CAED,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.js","names":["cmdOpts.GlobalOptions","cmdOpts.AddressesOptions","cmdOpts.S3AddressesOptions","cmdOpts.ImageOptions","cmdOpts.VersionOptions","cmdOpts.ArchOptions","cmdOpts.AuthOptions","cmdOpts.LicenseOptions","cmdOpts.MountOptions","cmdOpts.StorageOptions","cmdOpts.MinioPresignHostOptions","cmdOpts.toFlags","util.createLogger","state"],"sources":["../../../../src/commands/start/docker/s3.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as util from \"../../../util\";\nimport type * as types from \"../../../templates/types\";\nimport state from \"../../../state\";\n\nexport default function startDockerS3Command(): Command {\n const cmd = new Command(\"s3\").description(\n \"Run platforma backend service with 'S3' primary storage type\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.S3AddressesOptions(),\n cmdOpts.ImageOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.ArchOptions(),\n cmdOpts.AuthOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.MountOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.MinioPresignHostOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"docker-s3\";\n\n const authEnabled = flags[\"auth-enabled\"];\n const authOptions: types.authOptions | undefined = authEnabled\n ? {\n enabled: authEnabled,\n drivers: core.initAuthDriversList(flags, \".\"),\n }\n : undefined;\n\n const storage = flags.storage ? path.join(\".\", flags.storage) : state.instanceDir(instanceName);\n\n const mounts: { hostPath: string; containerPath?: string }[] = [];\n for (const p of flags.mount ?? []) {\n mounts.push({ hostPath: p });\n }\n\n const platformOverride = flags.arch ? `linux/${flags.arch}` : undefined;\n const presignHost = flags[\"minio-presign-host\"] ? \"minio\" : \"localhost\";\n\n const instance = core.createDockerS3(instanceName, storage, {\n image: flags.image,\n version: flags.version,\n\n license: flags[\"license\"],\n licenseFile: flags[\"license-file\"],\n\n platformOverride: platformOverride,\n customMounts: mounts,\n\n auth: authOptions,\n\n grpcAddr: flags[\"grpc-listen\"],\n grpcPort: flags[\"grpc-port\"],\n\n monitoringAddr: flags[\"monitoring-listen\"],\n monitoringPort: flags[\"monitoring-port\"],\n\n debugAddr: flags[\"debug-listen\"],\n debugPort: flags[\"debug-port\"],\n\n s3Port: flags[\"s3-port\"],\n s3ConsolePort: flags[\"s3-console-port\"],\n\n presignHost: presignHost,\n });\n\n core.switchInstance(instance);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;AASA,SAAwB,uBAAgC;CACtD,MAAM,MAAM,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"s3.js","names":["cmdOpts.GlobalOptions","cmdOpts.AddressesOptions","cmdOpts.S3AddressesOptions","cmdOpts.ImageOptions","cmdOpts.VersionOptions","cmdOpts.ArchOptions","cmdOpts.AuthOptions","cmdOpts.LicenseOptions","cmdOpts.MountOptions","cmdOpts.StorageOptions","cmdOpts.MinioPresignHostOptions","cmdOpts.toFlags","util.createLogger","state"],"sources":["../../../../src/commands/start/docker/s3.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as util from \"../../../util\";\nimport type * as types from \"../../../templates/types\";\nimport state from \"../../../state\";\n\nexport default function startDockerS3Command(): Command {\n const cmd = new Command(\"s3\").description(\n \"Run platforma backend service with 'S3' primary storage type\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.S3AddressesOptions(),\n cmdOpts.ImageOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.ArchOptions(),\n cmdOpts.AuthOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.MountOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.MinioPresignHostOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"docker-s3\";\n\n const authEnabled = flags[\"auth-enabled\"];\n const authOptions: types.authOptions | undefined = authEnabled\n ? {\n enabled: authEnabled,\n drivers: core.initAuthDriversList(flags, \".\"),\n }\n : undefined;\n\n const storage = flags.storage ? path.join(\".\", flags.storage) : state.instanceDir(instanceName);\n\n const mounts: { hostPath: string; containerPath?: string }[] = [];\n for (const p of flags.mount ?? []) {\n mounts.push({ hostPath: p });\n }\n\n const platformOverride = flags.arch ? `linux/${flags.arch}` : undefined;\n const presignHost = flags[\"minio-presign-host\"] ? \"minio\" : \"localhost\";\n\n const instance = core.createDockerS3(instanceName, storage, {\n image: flags.image,\n version: flags.version,\n\n license: flags[\"license\"],\n licenseFile: flags[\"license-file\"],\n\n platformOverride: platformOverride,\n customMounts: mounts,\n\n auth: authOptions,\n\n grpcAddr: flags[\"grpc-listen\"],\n grpcPort: flags[\"grpc-port\"],\n\n monitoringAddr: flags[\"monitoring-listen\"],\n monitoringPort: flags[\"monitoring-port\"],\n\n debugAddr: flags[\"debug-listen\"],\n debugPort: flags[\"debug-port\"],\n\n s3Port: flags[\"s3-port\"],\n s3ConsolePort: flags[\"s3-console-port\"],\n\n presignHost: presignHost,\n });\n\n core.switchInstance(instance);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;AASA,SAAwB,uBAAgC;CACtD,MAAM,MAAM,IAAI,QAAQ,IAAI,CAAC,CAAC,YAC5B,8DACF;CAEA,WACE,KACAA,cAAsB,GACtBC,iBAAyB,GACzBC,mBAA2B,GAC3BC,aAAqB,GACrBC,eAAuB,GACvBC,YAAoB,GACpBC,YAAoB,GACpBC,eAAuB,GACvBC,aAAqB,GACrBC,eAAuB,GACvBC,wBAAgC,CAClC;CAEA,IAAI,OAAO,OAAO,MAAM;EACtB,MAAM,QAAQC,QAAgB,CAAC;EAG/B,MAAM,OAAO,IAAI,KADFC,aAAkB,MAAM,YACZ,CAAC;EAC5B,KAAK,iBAAiB,KAAK;EAE3B,MAAM,eAAe;EAErB,MAAM,cAAc,MAAM;EAC1B,MAAM,cAA6C,cAC/C;GACE,SAAS;GACT,SAAS,KAAK,oBAAoB,OAAO,GAAG;EAC9C,IACA,KAAA;EAEJ,MAAM,UAAU,MAAM,UAAU,KAAK,KAAK,KAAK,MAAM,OAAO,IAAIC,cAAM,YAAY,YAAY;EAE9F,MAAM,SAAyD,CAAC;EAChE,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC,GAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,CAAC;EAG7B,MAAM,mBAAmB,MAAM,OAAO,SAAS,MAAM,SAAS,KAAA;EAC9D,MAAM,cAAc,MAAM,wBAAwB,UAAU;EAE5D,MAAM,WAAW,KAAK,eAAe,cAAc,SAAS;GAC1D,OAAO,MAAM;GACb,SAAS,MAAM;GAEf,SAAS,MAAM;GACf,aAAa,MAAM;GAED;GAClB,cAAc;GAEd,MAAM;GAEN,UAAU,MAAM;GAChB,UAAU,MAAM;GAEhB,gBAAgB,MAAM;GACtB,gBAAgB,MAAM;GAEtB,WAAW,MAAM;GACjB,WAAW,MAAM;GAEjB,QAAQ,MAAM;GACd,eAAe,MAAM;GAER;EACf,CAAC;EAED,KAAK,eAAe,QAAQ;CAC9B,CAAC;CAED,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.cjs","names":["Command","Core","path","state"],"sources":["../../../src/commands/start/docker.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport Core from \"../../core\";\nimport * as cmdOpts from \"../../cmd-opts\";\nimport * as util from \"../../util\";\nimport type * as types from \"../../templates/types\";\nimport state from \"../../state\";\n\nexport default function startDockerCommand(): Command {\n const cmd = new Command(\"docker\").description(\n \"Run platforma backend service with 'FS' primary storage type\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.ImageOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.ArchOptions(),\n cmdOpts.AuthOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.MountOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.StoragePrimaryURLOptions(),\n cmdOpts.StorageWorkPathOptions(),\n cmdOpts.StorageLibraryURLOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"docker\";\n\n const authEnabled = flags[\"auth-enabled\"];\n const authOptions: types.authOptions | undefined = authEnabled\n ? {\n enabled: authEnabled,\n drivers: core.initAuthDriversList(flags, \".\"),\n }\n : undefined;\n const storage = flags.storage ? path.join(\".\", flags.storage) : state.instanceDir(instanceName);\n\n const mounts: { hostPath: string; containerPath?: string }[] = [];\n for (const p of flags.mount ?? []) {\n mounts.push({ hostPath: p });\n }\n\n const platformOverride = flags.arch ? `linux/${flags.arch}` : undefined;\n\n const instance = core.createDocker(instanceName, storage, {\n primaryStorageURL: flags[\"storage-primary\"],\n workStoragePath: flags[\"storage-work\"],\n libraryStorageURL: flags[\"storage-library\"],\n\n image: flags.image,\n version: flags.version,\n\n platformOverride: platformOverride,\n customMounts: mounts,\n\n license: flags[\"license\"],\n licenseFile: flags[\"license-file\"],\n\n auth: authOptions,\n\n grpcAddr: flags[\"grpc-listen\"],\n grpcPort: flags[\"grpc-port\"],\n\n monitoringAddr: flags[\"monitoring-listen\"],\n monitoringPort: flags[\"monitoring-port\"],\n\n debugAddr: flags[\"debug-listen\"],\n debugPort: flags[\"debug-port\"],\n });\n\n core.switchInstance(instance);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;;;AASA,SAAwB,qBAA8B;CACpD,MAAM,MAAM,IAAIA,UAAAA,QAAQ,
|
|
1
|
+
{"version":3,"file":"docker.cjs","names":["Command","Core","path","state"],"sources":["../../../src/commands/start/docker.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport Core from \"../../core\";\nimport * as cmdOpts from \"../../cmd-opts\";\nimport * as util from \"../../util\";\nimport type * as types from \"../../templates/types\";\nimport state from \"../../state\";\n\nexport default function startDockerCommand(): Command {\n const cmd = new Command(\"docker\").description(\n \"Run platforma backend service with 'FS' primary storage type\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.ImageOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.ArchOptions(),\n cmdOpts.AuthOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.MountOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.StoragePrimaryURLOptions(),\n cmdOpts.StorageWorkPathOptions(),\n cmdOpts.StorageLibraryURLOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"docker\";\n\n const authEnabled = flags[\"auth-enabled\"];\n const authOptions: types.authOptions | undefined = authEnabled\n ? {\n enabled: authEnabled,\n drivers: core.initAuthDriversList(flags, \".\"),\n }\n : undefined;\n const storage = flags.storage ? path.join(\".\", flags.storage) : state.instanceDir(instanceName);\n\n const mounts: { hostPath: string; containerPath?: string }[] = [];\n for (const p of flags.mount ?? []) {\n mounts.push({ hostPath: p });\n }\n\n const platformOverride = flags.arch ? `linux/${flags.arch}` : undefined;\n\n const instance = core.createDocker(instanceName, storage, {\n primaryStorageURL: flags[\"storage-primary\"],\n workStoragePath: flags[\"storage-work\"],\n libraryStorageURL: flags[\"storage-library\"],\n\n image: flags.image,\n version: flags.version,\n\n platformOverride: platformOverride,\n customMounts: mounts,\n\n license: flags[\"license\"],\n licenseFile: flags[\"license-file\"],\n\n auth: authOptions,\n\n grpcAddr: flags[\"grpc-listen\"],\n grpcPort: flags[\"grpc-port\"],\n\n monitoringAddr: flags[\"monitoring-listen\"],\n monitoringPort: flags[\"monitoring-port\"],\n\n debugAddr: flags[\"debug-listen\"],\n debugPort: flags[\"debug-port\"],\n });\n\n core.switchInstance(instance);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;;;AASA,SAAwB,qBAA8B;CACpD,MAAM,MAAM,IAAIA,UAAAA,QAAQ,QAAQ,CAAC,CAAC,YAChC,8DACF;CAEA,iBAAA,WACE,KAAA,iBAAA,cACsB,GAAA,iBAAA,iBACG,GAAA,iBAAA,aACJ,GAAA,iBAAA,eACE,GAAA,iBAAA,YACH,GAAA,iBAAA,YACA,GAAA,iBAAA,eACG,GAAA,iBAAA,aACF,GAAA,iBAAA,eACE,GAAA,iBAAA,yBACU,GAAA,iBAAA,uBACF,GAAA,iBAAA,yBACE,CACnC;CAEA,IAAI,OAAO,OAAO,MAAM;EACtB,MAAM,QAAA,iBAAA,QAAwB,CAAC;EAG/B,MAAM,OAAO,IAAIC,aAAAA,QAAAA,aAAAA,aADgB,MAAM,YACZ,CAAC;EAC5B,KAAK,iBAAiB,KAAK;EAE3B,MAAM,eAAe;EAErB,MAAM,cAAc,MAAM;EAC1B,MAAM,cAA6C,cAC/C;GACE,SAAS;GACT,SAAS,KAAK,oBAAoB,OAAO,GAAG;EAC9C,IACA,KAAA;EACJ,MAAM,UAAU,MAAM,UAAUC,UAAAA,QAAK,KAAK,KAAK,MAAM,OAAO,IAAIC,cAAAA,QAAM,YAAY,YAAY;EAE9F,MAAM,SAAyD,CAAC;EAChE,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC,GAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,CAAC;EAG7B,MAAM,mBAAmB,MAAM,OAAO,SAAS,MAAM,SAAS,KAAA;EAE9D,MAAM,WAAW,KAAK,aAAa,cAAc,SAAS;GACxD,mBAAmB,MAAM;GACzB,iBAAiB,MAAM;GACvB,mBAAmB,MAAM;GAEzB,OAAO,MAAM;GACb,SAAS,MAAM;GAEG;GAClB,cAAc;GAEd,SAAS,MAAM;GACf,aAAa,MAAM;GAEnB,MAAM;GAEN,UAAU,MAAM;GAChB,UAAU,MAAM;GAEhB,gBAAgB,MAAM;GACtB,gBAAgB,MAAM;GAEtB,WAAW,MAAM;GACjB,WAAW,MAAM;EACnB,CAAC;EAED,KAAK,eAAe,QAAQ;CAC9B,CAAC;CAED,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","names":["cmdOpts.GlobalOptions","cmdOpts.AddressesOptions","cmdOpts.ImageOptions","cmdOpts.VersionOptions","cmdOpts.ArchOptions","cmdOpts.AuthOptions","cmdOpts.LicenseOptions","cmdOpts.MountOptions","cmdOpts.StorageOptions","cmdOpts.StoragePrimaryURLOptions","cmdOpts.StorageWorkPathOptions","cmdOpts.StorageLibraryURLOptions","cmdOpts.toFlags","util.createLogger","state"],"sources":["../../../src/commands/start/docker.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport Core from \"../../core\";\nimport * as cmdOpts from \"../../cmd-opts\";\nimport * as util from \"../../util\";\nimport type * as types from \"../../templates/types\";\nimport state from \"../../state\";\n\nexport default function startDockerCommand(): Command {\n const cmd = new Command(\"docker\").description(\n \"Run platforma backend service with 'FS' primary storage type\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.ImageOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.ArchOptions(),\n cmdOpts.AuthOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.MountOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.StoragePrimaryURLOptions(),\n cmdOpts.StorageWorkPathOptions(),\n cmdOpts.StorageLibraryURLOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"docker\";\n\n const authEnabled = flags[\"auth-enabled\"];\n const authOptions: types.authOptions | undefined = authEnabled\n ? {\n enabled: authEnabled,\n drivers: core.initAuthDriversList(flags, \".\"),\n }\n : undefined;\n const storage = flags.storage ? path.join(\".\", flags.storage) : state.instanceDir(instanceName);\n\n const mounts: { hostPath: string; containerPath?: string }[] = [];\n for (const p of flags.mount ?? []) {\n mounts.push({ hostPath: p });\n }\n\n const platformOverride = flags.arch ? `linux/${flags.arch}` : undefined;\n\n const instance = core.createDocker(instanceName, storage, {\n primaryStorageURL: flags[\"storage-primary\"],\n workStoragePath: flags[\"storage-work\"],\n libraryStorageURL: flags[\"storage-library\"],\n\n image: flags.image,\n version: flags.version,\n\n platformOverride: platformOverride,\n customMounts: mounts,\n\n license: flags[\"license\"],\n licenseFile: flags[\"license-file\"],\n\n auth: authOptions,\n\n grpcAddr: flags[\"grpc-listen\"],\n grpcPort: flags[\"grpc-port\"],\n\n monitoringAddr: flags[\"monitoring-listen\"],\n monitoringPort: flags[\"monitoring-port\"],\n\n debugAddr: flags[\"debug-listen\"],\n debugPort: flags[\"debug-port\"],\n });\n\n core.switchInstance(instance);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;AASA,SAAwB,qBAA8B;CACpD,MAAM,MAAM,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"docker.js","names":["cmdOpts.GlobalOptions","cmdOpts.AddressesOptions","cmdOpts.ImageOptions","cmdOpts.VersionOptions","cmdOpts.ArchOptions","cmdOpts.AuthOptions","cmdOpts.LicenseOptions","cmdOpts.MountOptions","cmdOpts.StorageOptions","cmdOpts.StoragePrimaryURLOptions","cmdOpts.StorageWorkPathOptions","cmdOpts.StorageLibraryURLOptions","cmdOpts.toFlags","util.createLogger","state"],"sources":["../../../src/commands/start/docker.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport Core from \"../../core\";\nimport * as cmdOpts from \"../../cmd-opts\";\nimport * as util from \"../../util\";\nimport type * as types from \"../../templates/types\";\nimport state from \"../../state\";\n\nexport default function startDockerCommand(): Command {\n const cmd = new Command(\"docker\").description(\n \"Run platforma backend service with 'FS' primary storage type\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.ImageOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.ArchOptions(),\n cmdOpts.AuthOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.MountOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.StoragePrimaryURLOptions(),\n cmdOpts.StorageWorkPathOptions(),\n cmdOpts.StorageLibraryURLOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"docker\";\n\n const authEnabled = flags[\"auth-enabled\"];\n const authOptions: types.authOptions | undefined = authEnabled\n ? {\n enabled: authEnabled,\n drivers: core.initAuthDriversList(flags, \".\"),\n }\n : undefined;\n const storage = flags.storage ? path.join(\".\", flags.storage) : state.instanceDir(instanceName);\n\n const mounts: { hostPath: string; containerPath?: string }[] = [];\n for (const p of flags.mount ?? []) {\n mounts.push({ hostPath: p });\n }\n\n const platformOverride = flags.arch ? `linux/${flags.arch}` : undefined;\n\n const instance = core.createDocker(instanceName, storage, {\n primaryStorageURL: flags[\"storage-primary\"],\n workStoragePath: flags[\"storage-work\"],\n libraryStorageURL: flags[\"storage-library\"],\n\n image: flags.image,\n version: flags.version,\n\n platformOverride: platformOverride,\n customMounts: mounts,\n\n license: flags[\"license\"],\n licenseFile: flags[\"license-file\"],\n\n auth: authOptions,\n\n grpcAddr: flags[\"grpc-listen\"],\n grpcPort: flags[\"grpc-port\"],\n\n monitoringAddr: flags[\"monitoring-listen\"],\n monitoringPort: flags[\"monitoring-port\"],\n\n debugAddr: flags[\"debug-listen\"],\n debugPort: flags[\"debug-port\"],\n });\n\n core.switchInstance(instance);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;AASA,SAAwB,qBAA8B;CACpD,MAAM,MAAM,IAAI,QAAQ,QAAQ,CAAC,CAAC,YAChC,8DACF;CAEA,WACE,KACAA,cAAsB,GACtBC,iBAAyB,GACzBC,aAAqB,GACrBC,eAAuB,GACvBC,YAAoB,GACpBC,YAAoB,GACpBC,eAAuB,GACvBC,aAAqB,GACrBC,eAAuB,GACvBC,yBAAiC,GACjCC,uBAA+B,GAC/BC,yBAAiC,CACnC;CAEA,IAAI,OAAO,OAAO,MAAM;EACtB,MAAM,QAAQC,QAAgB,CAAC;EAG/B,MAAM,OAAO,IAAI,KADFC,aAAkB,MAAM,YACZ,CAAC;EAC5B,KAAK,iBAAiB,KAAK;EAE3B,MAAM,eAAe;EAErB,MAAM,cAAc,MAAM;EAC1B,MAAM,cAA6C,cAC/C;GACE,SAAS;GACT,SAAS,KAAK,oBAAoB,OAAO,GAAG;EAC9C,IACA,KAAA;EACJ,MAAM,UAAU,MAAM,UAAU,KAAK,KAAK,KAAK,MAAM,OAAO,IAAIC,cAAM,YAAY,YAAY;EAE9F,MAAM,SAAyD,CAAC;EAChE,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC,GAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,CAAC;EAG7B,MAAM,mBAAmB,MAAM,OAAO,SAAS,MAAM,SAAS,KAAA;EAE9D,MAAM,WAAW,KAAK,aAAa,cAAc,SAAS;GACxD,mBAAmB,MAAM;GACzB,iBAAiB,MAAM;GACvB,mBAAmB,MAAM;GAEzB,OAAO,MAAM;GACb,SAAS,MAAM;GAEG;GAClB,cAAc;GAEd,SAAS,MAAM;GACf,aAAa,MAAM;GAEnB,MAAM;GAEN,UAAU,MAAM;GAChB,UAAU,MAAM;GAEhB,gBAAgB,MAAM;GACtB,gBAAgB,MAAM;GAEtB,WAAW,MAAM;GACjB,WAAW,MAAM;EACnB,CAAC;EAED,KAAK,eAAe,QAAQ;CAC9B,CAAC;CAED,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.cjs","names":["Command","Core","path","state","os"],"sources":["../../../../src/commands/start/local/s3.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport type { createLocalS3Options } from \"../../../core\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as platforma from \"../../../platforma\";\nimport * as util from \"../../../util\";\nimport state from \"../../../state\";\nimport * as os from \"node:os\";\n\nexport default function startLocalS3Command(): Command {\n const cmd = new Command(\"s3\").description(\n \"Run Platforma Backend service as local process on current host (no docker container)\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.S3AddressesOptions(),\n cmdOpts.PlBinaryOptions(),\n cmdOpts.PlSourcesOptions(),\n cmdOpts.ConfigOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.StoragePrimaryURLOptions(),\n cmdOpts.StorageWorkPathOptions(),\n cmdOpts.StorageLibraryURLOptions(),\n cmdOpts.PlLogFileOptions(),\n cmdOpts.PlWorkdirOptions(),\n cmdOpts.AuthOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"local-s3\";\n\n const workdir = flags[\"pl-workdir\"] ?? \".\";\n const storage = flags.storage\n ? path.join(workdir, flags.storage)\n : state.instanceDir(instanceName);\n const logFile = flags[\"pl-log-file\"] ? path.join(workdir, flags[\"pl-log-file\"]) : undefined;\n\n const authDrivers = core.initAuthDriversList(flags, workdir);\n const authEnabled = flags[\"auth-enabled\"] ?? authDrivers !== undefined;\n\n let listenGrpc: string = \"127.0.0.1:6345\";\n if (flags[\"grpc-listen\"]) listenGrpc = flags[\"grpc-listen\"];\n else if (flags[\"grpc-port\"]) listenGrpc = `127.0.0.1:${flags[\"grpc-port\"]}`;\n\n let listenMon: string = \"127.0.0.1:9090\";\n if (flags[\"monitoring-listen\"]) listenMon = flags[\"monitoring-listen\"];\n else if (flags[\"monitoring-port\"]) listenMon = `127.0.0.1:${flags[\"monitoring-port\"]}`;\n\n let listenDbg: string = \"127.0.0.1:9091\";\n if (flags[\"debug-listen\"]) listenDbg = flags[\"debug-listen\"];\n else if (flags[\"debug-port\"]) listenDbg = `127.0.0.1:${flags[\"debug-port\"]}`;\n\n const startOptions: createLocalS3Options = {\n sourcesPath: flags[\"pl-sources\"],\n binaryPath: flags[\"pl-binary\"],\n\n version: flags.version,\n configPath: flags.config,\n workdir: flags[\"pl-workdir\"],\n\n primaryURL: flags[\"storage-primary\"],\n libraryURL: flags[\"storage-library\"],\n\n minioPort: flags[\"s3-port\"],\n minioConsolePort: flags[\"s3-console-port\"],\n\n configOptions: {\n grpc: { listen: listenGrpc },\n monitoring: { listen: listenMon },\n debug: { listen: listenDbg },\n license: { value: flags[\"license\"], file: flags[\"license-file\"] },\n log: { path: logFile },\n localRoot: storage,\n core: {\n auth: { enabled: authEnabled, drivers: authDrivers },\n },\n\n // Backend could consume a lot of CPU power,\n // we want to keep at least a couple for UI and other apps to work.\n numCpu: Math.max(os.cpus().length - 2, 1),\n\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\n },\n },\n };\n\n const instance = core.createLocalS3(instanceName, startOptions);\n\n if (startOptions.binaryPath || startOptions.sourcesPath) {\n core.switchInstance(instance);\n } else {\n await platforma\n .getBinary(logger, { version: flags.version })\n .then(() => {\n const children = core.switchInstance(instance);\n\n const results: Promise<void>[] = [];\n for (const child of children) {\n results.push(\n new Promise((resolve, reject) => {\n child.on(\"close\", resolve);\n child.on(\"error\", reject);\n }),\n );\n }\n\n return Promise.all(results);\n })\n .catch(function (err: Error) {\n logger.error(err.message);\n });\n }\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;;;;;;AAWA,SAAwB,sBAA+B;CACrD,MAAM,MAAM,IAAIA,UAAAA,QAAQ,
|
|
1
|
+
{"version":3,"file":"s3.cjs","names":["Command","Core","path","state","os"],"sources":["../../../../src/commands/start/local/s3.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { Command } from \"commander\";\nimport type { createLocalS3Options } from \"../../../core\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as platforma from \"../../../platforma\";\nimport * as util from \"../../../util\";\nimport state from \"../../../state\";\nimport * as os from \"node:os\";\n\nexport default function startLocalS3Command(): Command {\n const cmd = new Command(\"s3\").description(\n \"Run Platforma Backend service as local process on current host (no docker container)\",\n );\n\n cmdOpts.addOptions(\n cmd,\n cmdOpts.GlobalOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.AddressesOptions(),\n cmdOpts.S3AddressesOptions(),\n cmdOpts.PlBinaryOptions(),\n cmdOpts.PlSourcesOptions(),\n cmdOpts.ConfigOptions(),\n cmdOpts.LicenseOptions(),\n cmdOpts.StorageOptions(),\n cmdOpts.StoragePrimaryURLOptions(),\n cmdOpts.StorageWorkPathOptions(),\n cmdOpts.StorageLibraryURLOptions(),\n cmdOpts.PlLogFileOptions(),\n cmdOpts.PlWorkdirOptions(),\n cmdOpts.AuthOptions(),\n );\n\n cmd.action(async (o) => {\n const flags = cmdOpts.toFlags(o);\n\n const logger = util.createLogger(flags[\"log-level\"]);\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\n\n const instanceName = \"local-s3\";\n\n const workdir = flags[\"pl-workdir\"] ?? \".\";\n const storage = flags.storage\n ? path.join(workdir, flags.storage)\n : state.instanceDir(instanceName);\n const logFile = flags[\"pl-log-file\"] ? path.join(workdir, flags[\"pl-log-file\"]) : undefined;\n\n const authDrivers = core.initAuthDriversList(flags, workdir);\n const authEnabled = flags[\"auth-enabled\"] ?? authDrivers !== undefined;\n\n let listenGrpc: string = \"127.0.0.1:6345\";\n if (flags[\"grpc-listen\"]) listenGrpc = flags[\"grpc-listen\"];\n else if (flags[\"grpc-port\"]) listenGrpc = `127.0.0.1:${flags[\"grpc-port\"]}`;\n\n let listenMon: string = \"127.0.0.1:9090\";\n if (flags[\"monitoring-listen\"]) listenMon = flags[\"monitoring-listen\"];\n else if (flags[\"monitoring-port\"]) listenMon = `127.0.0.1:${flags[\"monitoring-port\"]}`;\n\n let listenDbg: string = \"127.0.0.1:9091\";\n if (flags[\"debug-listen\"]) listenDbg = flags[\"debug-listen\"];\n else if (flags[\"debug-port\"]) listenDbg = `127.0.0.1:${flags[\"debug-port\"]}`;\n\n const startOptions: createLocalS3Options = {\n sourcesPath: flags[\"pl-sources\"],\n binaryPath: flags[\"pl-binary\"],\n\n version: flags.version,\n configPath: flags.config,\n workdir: flags[\"pl-workdir\"],\n\n primaryURL: flags[\"storage-primary\"],\n libraryURL: flags[\"storage-library\"],\n\n minioPort: flags[\"s3-port\"],\n minioConsolePort: flags[\"s3-console-port\"],\n\n configOptions: {\n grpc: { listen: listenGrpc },\n monitoring: { listen: listenMon },\n debug: { listen: listenDbg },\n license: { value: flags[\"license\"], file: flags[\"license-file\"] },\n log: { path: logFile },\n localRoot: storage,\n core: {\n auth: { enabled: authEnabled, drivers: authDrivers },\n },\n\n // Backend could consume a lot of CPU power,\n // we want to keep at least a couple for UI and other apps to work.\n numCpu: Math.max(os.cpus().length - 2, 1),\n\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\n },\n },\n };\n\n const instance = core.createLocalS3(instanceName, startOptions);\n\n if (startOptions.binaryPath || startOptions.sourcesPath) {\n core.switchInstance(instance);\n } else {\n await platforma\n .getBinary(logger, { version: flags.version })\n .then(() => {\n const children = core.switchInstance(instance);\n\n const results: Promise<void>[] = [];\n for (const child of children) {\n results.push(\n new Promise((resolve, reject) => {\n child.on(\"close\", resolve);\n child.on(\"error\", reject);\n }),\n );\n }\n\n return Promise.all(results);\n })\n .catch(function (err: Error) {\n logger.error(err.message);\n });\n }\n });\n\n return cmd;\n}\n"],"mappings":"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"}
|