@platforma-sdk/bootstrap 5.2.32 → 5.2.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/block.cjs +1 -1
  2. package/dist/block.cjs.map +1 -1
  3. package/dist/block.d.ts.map +1 -1
  4. package/dist/block.js +1 -1
  5. package/dist/block.js.map +1 -1
  6. package/dist/commands/create-block.cjs +2 -2
  7. package/dist/commands/create-block.cjs.map +1 -1
  8. package/dist/commands/create-block.d.ts.map +1 -1
  9. package/dist/commands/create-block.js +2 -2
  10. package/dist/commands/create-block.js.map +1 -1
  11. package/dist/commands/reset.cjs +1 -1
  12. package/dist/commands/reset.cjs.map +1 -1
  13. package/dist/commands/reset.d.ts.map +1 -1
  14. package/dist/commands/reset.js +1 -1
  15. package/dist/commands/reset.js.map +1 -1
  16. package/dist/commands/stop.cjs +1 -1
  17. package/dist/commands/stop.cjs.map +1 -1
  18. package/dist/commands/stop.js +1 -1
  19. package/dist/commands/stop.js.map +1 -1
  20. package/dist/commands/svc/create/arg-parser.cjs +2 -2
  21. package/dist/commands/svc/create/arg-parser.cjs.map +1 -1
  22. package/dist/commands/svc/create/arg-parser.js +2 -2
  23. package/dist/commands/svc/create/arg-parser.js.map +1 -1
  24. package/dist/commands/svc/create/docker/s3.cjs.map +1 -1
  25. package/dist/commands/svc/create/docker/s3.js.map +1 -1
  26. package/dist/commands/svc/create/docker.cjs.map +1 -1
  27. package/dist/commands/svc/create/docker.js.map +1 -1
  28. package/dist/commands/svc/create/local/s3.cjs.map +1 -1
  29. package/dist/commands/svc/create/local/s3.js.map +1 -1
  30. package/dist/commands/svc/create/local.cjs.map +1 -1
  31. package/dist/commands/svc/create/local.js.map +1 -1
  32. package/dist/index.cjs +0 -1
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +0 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/package.cjs.map +1 -1
  38. package/dist/package.js.map +1 -1
  39. package/dist/templates/pl-config.cjs.map +1 -1
  40. package/dist/templates/pl-config.js.map +1 -1
  41. package/dist/util.cjs +2 -2
  42. package/dist/util.cjs.map +1 -1
  43. package/dist/util.d.ts +1 -1
  44. package/dist/util.d.ts.map +1 -1
  45. package/dist/util.js +2 -2
  46. package/dist/util.js.map +1 -1
  47. package/package.json +9 -8
package/dist/block.cjs CHANGED
@@ -91,7 +91,7 @@ function askForOptions() {
91
91
  softwarePlatforms = Array.from(new Set(softwarePlatforms)).sort();
92
92
  const result = CreateBlockOptions.safeParse({ npmOrgName, orgName, blockName, softwarePlatforms });
93
93
  if (!result.success && result.error.issues.length) {
94
- throw new Error(result.error.issues.map(i => i.message).join('; '));
94
+ throw new Error(result.error.issues.map((i) => i.message).join('; '));
95
95
  }
96
96
  return result.data;
97
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"block.cjs","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, Transform } from 'node:stream';\nimport os from 'node:os';\nimport readlineSync from 'readline-sync';\nimport { z } from 'zod';\nimport decompress from 'decompress';\nimport yaml from 'yaml';\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(`Keep platforms '${softwarePlatforms}', remove: '${platformsToRemove}'. Will remove all platforms? ${noPlatforms}`);\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({ npmOrgName, orgName, blockName, softwarePlatforms });\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(\n path.join(dir, 'software', 'package.json'),\n (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\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(\n path.join(dir, 'workflow', 'package.json'),\n (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\n await deleteRegexInFile(\n path.join(dir, 'pnpm-workspace.yaml'),\n /.*- software$\\n/gm,\n );\n}\n\nasync function replaceRegexInAllFiles(\n dir: string,\n patterns: { from: RegExp; to: string }[],\n) {\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"],"names":["z","fs","Writable","createWriteStream"],"mappings":"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"}
1
+ {"version":3,"file":"block.cjs","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(`Keep platforms '${softwarePlatforms}', remove: '${platformsToRemove}'. Will remove all platforms? ${noPlatforms}`);\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({ npmOrgName, orgName, blockName, softwarePlatforms });\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(\n path.join(dir, 'software', 'package.json'),\n (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\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(\n path.join(dir, 'workflow', 'package.json'),\n (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\n await deleteRegexInFile(\n path.join(dir, 'pnpm-workspace.yaml'),\n /.*- software$\\n/gm,\n );\n}\n\nasync function replaceRegexInAllFiles(\n dir: string,\n patterns: { from: RegExp; to: string }[],\n) {\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"],"names":["z","fs","Writable","createWriteStream"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../src/block.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,QAAA,MAAM,oBAAoB,6DAAqD,CAAC;AAChF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;EAOtB,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,+DAA+D;AAC/D,wBAAsB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,iBAkCvD"}
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../src/block.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,QAAA,MAAM,oBAAoB,6DAAqD,CAAC;AAChF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;EAOtB,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,+DAA+D;AAC/D,wBAAsB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,iBAkCvD"}
package/dist/block.js CHANGED
@@ -70,7 +70,7 @@ function askForOptions() {
70
70
  softwarePlatforms = Array.from(new Set(softwarePlatforms)).sort();
71
71
  const result = CreateBlockOptions.safeParse({ npmOrgName, orgName, blockName, softwarePlatforms });
72
72
  if (!result.success && result.error.issues.length) {
73
- throw new Error(result.error.issues.map(i => i.message).join('; '));
73
+ throw new Error(result.error.issues.map((i) => i.message).join('; '));
74
74
  }
75
75
  return result.data;
76
76
  }
package/dist/block.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"block.js","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, Transform } from 'node:stream';\nimport os from 'node:os';\nimport readlineSync from 'readline-sync';\nimport { z } from 'zod';\nimport decompress from 'decompress';\nimport yaml from 'yaml';\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(`Keep platforms '${softwarePlatforms}', remove: '${platformsToRemove}'. Will remove all platforms? ${noPlatforms}`);\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({ npmOrgName, orgName, blockName, softwarePlatforms });\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(\n path.join(dir, 'software', 'package.json'),\n (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\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(\n path.join(dir, 'workflow', 'package.json'),\n (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\n await deleteRegexInFile(\n path.join(dir, 'pnpm-workspace.yaml'),\n /.*- software$\\n/gm,\n );\n}\n\nasync function replaceRegexInAllFiles(\n dir: string,\n patterns: { from: RegExp; to: string }[],\n) {\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"],"names":["os"],"mappings":"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"}
1
+ {"version":3,"file":"block.js","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(`Keep platforms '${softwarePlatforms}', remove: '${platformsToRemove}'. Will remove all platforms? ${noPlatforms}`);\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({ npmOrgName, orgName, blockName, softwarePlatforms });\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(\n path.join(dir, 'software', 'package.json'),\n (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\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(\n path.join(dir, 'workflow', 'package.json'),\n (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\n await deleteRegexInFile(\n path.join(dir, 'pnpm-workspace.yaml'),\n /.*- software$\\n/gm,\n );\n}\n\nasync function replaceRegexInAllFiles(\n dir: string,\n patterns: { from: RegExp; to: string }[],\n) {\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"],"names":["os"],"mappings":"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"}
@@ -6,10 +6,10 @@ var util = require('../util.cjs');
6
6
  var block = require('../block.cjs');
7
7
 
8
8
  class CreateBlock extends core.Command {
9
- static description = "Helps to create a new block by downloading a block's template.";
9
+ static description = 'Helps to create a new block by downloading a block\'s template.';
10
10
  static examples = ['<%= name %>'];
11
11
  static flags = {
12
- ...cmdOpts.GlobalFlags
12
+ ...cmdOpts.GlobalFlags,
13
13
  };
14
14
  async run() {
15
15
  const { flags } = await this.parse(CreateBlock);
@@ -1 +1 @@
1
- {"version":3,"file":"create-block.cjs","sources":["../../src/commands/create-block.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\nimport * as block from '../block';\n\nexport default class CreateBlock extends Command {\n static override description = \"Helps to create a new block by downloading a block's template.\";\n\n static override examples = ['<%= name %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(CreateBlock);\n const logger = util.createLogger(flags['log-level']);\n\n await block.createBlock(logger);\n }\n}\n"],"names":["Command","cmdOpts.GlobalFlags","util.createLogger","block.createBlock"],"mappings":";;;;;;;AAKc,MAAO,WAAY,SAAQA,YAAO,CAAA;AAC9C,IAAA,OAAgB,WAAW,GAAG,gEAAgE;AAE9F,IAAA,OAAgB,QAAQ,GAAG,CAAC,aAAa,CAAC;IAE1C,OAAgB,KAAK,GAAG;QACtB,GAAGC;KACJ;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/C,MAAM,MAAM,GAAGC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAEpD,QAAA,MAAMC,iBAAiB,CAAC,MAAM,CAAC;IACjC;;;;;"}
1
+ {"version":3,"file":"create-block.cjs","sources":["../../src/commands/create-block.ts"],"sourcesContent":["import { Command } from '@oclif/core';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\nimport * as block from '../block';\n\nexport default class CreateBlock extends Command {\n static override description = 'Helps to create a new block by downloading a block\\'s template.';\n\n static override examples = ['<%= name %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(CreateBlock);\n const logger = util.createLogger(flags['log-level']);\n\n await block.createBlock(logger);\n }\n}\n"],"names":["Command","cmdOpts.GlobalFlags","util.createLogger","block.createBlock"],"mappings":";;;;;;;AAKc,MAAO,WAAY,SAAQA,YAAO,CAAA;AAC9C,IAAA,OAAgB,WAAW,GAAG,iEAAiE;AAE/F,IAAA,OAAgB,QAAQ,GAAG,CAAC,aAAa,CAAC;IAE1C,OAAgB,KAAK,GAAG;QACtB,GAAGC,mBAAmB;KACvB;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/C,MAAM,MAAM,GAAGC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAEpD,QAAA,MAAMC,iBAAiB,CAAC,MAAM,CAAC;IACjC;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-block.d.ts","sourceRoot":"","sources":["../../src/commands/create-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAK7C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,OAAgB,WAAW,SAAoE;IAE/F,OAAgB,QAAQ,WAAmB;IAE3C,OAAgB,KAAK;;MAEnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAMlC"}
1
+ {"version":3,"file":"create-block.d.ts","sourceRoot":"","sources":["../../src/commands/create-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAKtC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,OAAgB,WAAW,SAAqE;IAEhG,OAAgB,QAAQ,WAAmB;IAE3C,OAAgB,KAAK;;MAEnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAMlC"}
@@ -4,10 +4,10 @@ import { createLogger } from '../util.js';
4
4
  import { createBlock } from '../block.js';
5
5
 
6
6
  class CreateBlock extends Command {
7
- static description = "Helps to create a new block by downloading a block's template.";
7
+ static description = 'Helps to create a new block by downloading a block\'s template.';
8
8
  static examples = ['<%= name %>'];
9
9
  static flags = {
10
- ...GlobalFlags
10
+ ...GlobalFlags,
11
11
  };
12
12
  async run() {
13
13
  const { flags } = await this.parse(CreateBlock);
@@ -1 +1 @@
1
- {"version":3,"file":"create-block.js","sources":["../../src/commands/create-block.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\nimport * as block from '../block';\n\nexport default class CreateBlock extends Command {\n static override description = \"Helps to create a new block by downloading a block's template.\";\n\n static override examples = ['<%= name %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(CreateBlock);\n const logger = util.createLogger(flags['log-level']);\n\n await block.createBlock(logger);\n }\n}\n"],"names":["cmdOpts.GlobalFlags","util.createLogger","block.createBlock"],"mappings":";;;;;AAKc,MAAO,WAAY,SAAQ,OAAO,CAAA;AAC9C,IAAA,OAAgB,WAAW,GAAG,gEAAgE;AAE9F,IAAA,OAAgB,QAAQ,GAAG,CAAC,aAAa,CAAC;IAE1C,OAAgB,KAAK,GAAG;QACtB,GAAGA;KACJ;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/C,MAAM,MAAM,GAAGC,YAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAEpD,QAAA,MAAMC,WAAiB,CAAC,MAAM,CAAC;IACjC;;;;;"}
1
+ {"version":3,"file":"create-block.js","sources":["../../src/commands/create-block.ts"],"sourcesContent":["import { Command } from '@oclif/core';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\nimport * as block from '../block';\n\nexport default class CreateBlock extends Command {\n static override description = 'Helps to create a new block by downloading a block\\'s template.';\n\n static override examples = ['<%= name %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(CreateBlock);\n const logger = util.createLogger(flags['log-level']);\n\n await block.createBlock(logger);\n }\n}\n"],"names":["cmdOpts.GlobalFlags","util.createLogger","block.createBlock"],"mappings":";;;;;AAKc,MAAO,WAAY,SAAQ,OAAO,CAAA;AAC9C,IAAA,OAAgB,WAAW,GAAG,iEAAiE;AAE/F,IAAA,OAAgB,QAAQ,GAAG,CAAC,aAAa,CAAC;IAE1C,OAAgB,KAAK,GAAG;QACtB,GAAGA,WAAmB;KACvB;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/C,MAAM,MAAM,GAAGC,YAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAEpD,QAAA,MAAMC,WAAiB,CAAC,MAAM,CAAC;IACjC;;;;;"}
@@ -9,7 +9,7 @@ class Reset extends core.Command {
9
9
  static description = 'Clear service state (forget last run command, destroy docker services, volumes and so on)';
10
10
  static examples = ['<%= config.bin %> <%= command.id %>'];
11
11
  static flags = {
12
- ...cmdOpts.GlobalFlags
12
+ ...cmdOpts.GlobalFlags,
13
13
  };
14
14
  async run() {
15
15
  const { flags } = await this.parse(Reset);
@@ -1 +1 @@
1
- {"version":3,"file":"reset.cjs","sources":["../../src/commands/reset.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport Core from '../core';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\n\nexport default class Reset extends Command {\n static override description =\n 'Clear service state (forget last run command, destroy docker services, volumes and so on)';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Reset);\n\n const logger = util.createLogger(flags['log-level']);\n const core = new Core(logger);\n core.cleanupInstance();\n }\n}\n"],"names":["Command","cmdOpts.GlobalFlags","util.createLogger","Core"],"mappings":";;;;;;;AAKc,MAAO,KAAM,SAAQA,YAAO,CAAA;AACxC,IAAA,OAAgB,WAAW,GACzB,2FAA2F;AAE7F,IAAA,OAAgB,QAAQ,GAAG,CAAC,qCAAqC,CAAC;IAElE,OAAgB,KAAK,GAAG;QACtB,GAAGC;KACJ;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAEzC,MAAM,MAAM,GAAGC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAIC,cAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE;IACxB;;;;;"}
1
+ {"version":3,"file":"reset.cjs","sources":["../../src/commands/reset.ts"],"sourcesContent":["import { Command } from '@oclif/core';\nimport Core from '../core';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\n\nexport default class Reset extends Command {\n static override description\n = 'Clear service state (forget last run command, destroy docker services, volumes and so on)';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Reset);\n\n const logger = util.createLogger(flags['log-level']);\n const core = new Core(logger);\n core.cleanupInstance();\n }\n}\n"],"names":["Command","cmdOpts.GlobalFlags","util.createLogger","Core"],"mappings":";;;;;;;AAKc,MAAO,KAAM,SAAQA,YAAO,CAAA;AACxC,IAAA,OAAgB,WAAW,GACvB,2FAA2F;AAE/F,IAAA,OAAgB,QAAQ,GAAG,CAAC,qCAAqC,CAAC;IAElE,OAAgB,KAAK,GAAG;QACtB,GAAGC,mBAAmB;KACvB;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAEzC,MAAM,MAAM,GAAGC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAIC,cAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE;IACxB;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAK7C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,WAAW,SACmE;IAE9F,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;MAEnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlC"}
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAKtC,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,WAAW,SACqE;IAEhG,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;MAEnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlC"}
@@ -7,7 +7,7 @@ class Reset extends Command {
7
7
  static description = 'Clear service state (forget last run command, destroy docker services, volumes and so on)';
8
8
  static examples = ['<%= config.bin %> <%= command.id %>'];
9
9
  static flags = {
10
- ...GlobalFlags
10
+ ...GlobalFlags,
11
11
  };
12
12
  async run() {
13
13
  const { flags } = await this.parse(Reset);
@@ -1 +1 @@
1
- {"version":3,"file":"reset.js","sources":["../../src/commands/reset.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport Core from '../core';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\n\nexport default class Reset extends Command {\n static override description =\n 'Clear service state (forget last run command, destroy docker services, volumes and so on)';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Reset);\n\n const logger = util.createLogger(flags['log-level']);\n const core = new Core(logger);\n core.cleanupInstance();\n }\n}\n"],"names":["cmdOpts.GlobalFlags","util.createLogger"],"mappings":";;;;;AAKc,MAAO,KAAM,SAAQ,OAAO,CAAA;AACxC,IAAA,OAAgB,WAAW,GACzB,2FAA2F;AAE7F,IAAA,OAAgB,QAAQ,GAAG,CAAC,qCAAqC,CAAC;IAElE,OAAgB,KAAK,GAAG;QACtB,GAAGA;KACJ;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAEzC,MAAM,MAAM,GAAGC,YAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE;IACxB;;;;;"}
1
+ {"version":3,"file":"reset.js","sources":["../../src/commands/reset.ts"],"sourcesContent":["import { Command } from '@oclif/core';\nimport Core from '../core';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\n\nexport default class Reset extends Command {\n static override description\n = 'Clear service state (forget last run command, destroy docker services, volumes and so on)';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Reset);\n\n const logger = util.createLogger(flags['log-level']);\n const core = new Core(logger);\n core.cleanupInstance();\n }\n}\n"],"names":["cmdOpts.GlobalFlags","util.createLogger"],"mappings":";;;;;AAKc,MAAO,KAAM,SAAQ,OAAO,CAAA;AACxC,IAAA,OAAgB,WAAW,GACvB,2FAA2F;AAE/F,IAAA,OAAgB,QAAQ,GAAG,CAAC,qCAAqC,CAAC;IAElE,OAAgB,KAAK,GAAG;QACtB,GAAGA,WAAmB;KACvB;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAEzC,MAAM,MAAM,GAAGC,YAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE;IACxB;;;;;"}
@@ -10,7 +10,7 @@ class Stop extends core.Command {
10
10
  static description = 'Stop platforma service';
11
11
  static examples = ['<%= config.bin %> <%= command.id %>'];
12
12
  static flags = {
13
- ...cmdOpts.GlobalFlags
13
+ ...cmdOpts.GlobalFlags,
14
14
  };
15
15
  async run() {
16
16
  const { flags } = await this.parse(Stop);
@@ -1 +1 @@
1
- {"version":3,"file":"stop.cjs","sources":["../../src/commands/stop.ts"],"sourcesContent":["import { Command } from '@oclif/core';\nimport Core from '../core';\nimport state from '../state';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\n\nexport default class Stop extends Command {\n static override description = 'Stop platforma service';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Stop);\n\n const logger = util.createLogger(flags['log-level']);\n const core = new Core(logger);\n\n if (state.currentInstance) {\n core.stopInstance(state.currentInstance);\n } else {\n logger.warn('up/start command was not called for any instance, nothing to stop');\n }\n }\n}\n"],"names":["Command","cmdOpts.GlobalFlags","util.createLogger","Core"],"mappings":";;;;;;;;AAMc,MAAO,IAAK,SAAQA,YAAO,CAAA;AACvC,IAAA,OAAgB,WAAW,GAAG,wBAAwB;AAEtD,IAAA,OAAgB,QAAQ,GAAG,CAAC,qCAAqC,CAAC;IAElE,OAAgB,KAAK,GAAG;QACtB,GAAGC;KACJ;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAExC,MAAM,MAAM,GAAGC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAIC,cAAI,CAAC,MAAM,CAAC;AAE7B,QAAA,IAAI,KAAK,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;QAC1C;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC;QAClF;IACF;;;;;"}
1
+ {"version":3,"file":"stop.cjs","sources":["../../src/commands/stop.ts"],"sourcesContent":["import { Command } from '@oclif/core';\nimport Core from '../core';\nimport state from '../state';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\n\nexport default class Stop extends Command {\n static override description = 'Stop platforma service';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Stop);\n\n const logger = util.createLogger(flags['log-level']);\n const core = new Core(logger);\n\n if (state.currentInstance) {\n core.stopInstance(state.currentInstance);\n } else {\n logger.warn('up/start command was not called for any instance, nothing to stop');\n }\n }\n}\n"],"names":["Command","cmdOpts.GlobalFlags","util.createLogger","Core"],"mappings":";;;;;;;;AAMc,MAAO,IAAK,SAAQA,YAAO,CAAA;AACvC,IAAA,OAAgB,WAAW,GAAG,wBAAwB;AAEtD,IAAA,OAAgB,QAAQ,GAAG,CAAC,qCAAqC,CAAC;IAElE,OAAgB,KAAK,GAAG;QACtB,GAAGC,mBAAmB;KACvB;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAExC,MAAM,MAAM,GAAGC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAIC,cAAI,CAAC,MAAM,CAAC;AAE7B,QAAA,IAAI,KAAK,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;QAC1C;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC;QAClF;IACF;;;;;"}
@@ -8,7 +8,7 @@ class Stop extends Command {
8
8
  static description = 'Stop platforma service';
9
9
  static examples = ['<%= config.bin %> <%= command.id %>'];
10
10
  static flags = {
11
- ...GlobalFlags
11
+ ...GlobalFlags,
12
12
  };
13
13
  async run() {
14
14
  const { flags } = await this.parse(Stop);
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sources":["../../src/commands/stop.ts"],"sourcesContent":["import { Command } from '@oclif/core';\nimport Core from '../core';\nimport state from '../state';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\n\nexport default class Stop extends Command {\n static override description = 'Stop platforma service';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Stop);\n\n const logger = util.createLogger(flags['log-level']);\n const core = new Core(logger);\n\n if (state.currentInstance) {\n core.stopInstance(state.currentInstance);\n } else {\n logger.warn('up/start command was not called for any instance, nothing to stop');\n }\n }\n}\n"],"names":["cmdOpts.GlobalFlags","util.createLogger"],"mappings":";;;;;;AAMc,MAAO,IAAK,SAAQ,OAAO,CAAA;AACvC,IAAA,OAAgB,WAAW,GAAG,wBAAwB;AAEtD,IAAA,OAAgB,QAAQ,GAAG,CAAC,qCAAqC,CAAC;IAElE,OAAgB,KAAK,GAAG;QACtB,GAAGA;KACJ;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAExC,MAAM,MAAM,GAAGC,YAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;AAE7B,QAAA,IAAI,KAAK,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;QAC1C;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC;QAClF;IACF;;;;;"}
1
+ {"version":3,"file":"stop.js","sources":["../../src/commands/stop.ts"],"sourcesContent":["import { Command } from '@oclif/core';\nimport Core from '../core';\nimport state from '../state';\nimport * as cmdOpts from '../cmd-opts';\nimport * as util from '../util';\n\nexport default class Stop extends Command {\n static override description = 'Stop platforma service';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Stop);\n\n const logger = util.createLogger(flags['log-level']);\n const core = new Core(logger);\n\n if (state.currentInstance) {\n core.stopInstance(state.currentInstance);\n } else {\n logger.warn('up/start command was not called for any instance, nothing to stop');\n }\n }\n}\n"],"names":["cmdOpts.GlobalFlags","util.createLogger"],"mappings":";;;;;;AAMc,MAAO,IAAK,SAAQ,OAAO,CAAA;AACvC,IAAA,OAAgB,WAAW,GAAG,wBAAwB;AAEtD,IAAA,OAAgB,QAAQ,GAAG,CAAC,qCAAqC,CAAC;IAElE,OAAgB,KAAK,GAAG;QACtB,GAAGA,WAAmB;KACvB;AAEM,IAAA,MAAM,GAAG,GAAA;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAExC,MAAM,MAAM,GAAGC,YAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;AAE7B,QAAA,IAAI,KAAK,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;QAC1C;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC;QAClF;IACF;;;;;"}
@@ -18,7 +18,7 @@ class ArgParser {
18
18
  type: flag.type,
19
19
  required: flag.required || false,
20
20
  default: flag.default,
21
- multiple: flag.multiple || false
21
+ multiple: flag.multiple || false,
22
22
  });
23
23
  }
24
24
  }
@@ -31,7 +31,7 @@ class ArgParser {
31
31
  instanceName: '',
32
32
  knownFlags: {},
33
33
  unknownFlags: [],
34
- positionalArgs: []
34
+ positionalArgs: [],
35
35
  };
36
36
  let i = 0;
37
37
  while (i < argv.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"arg-parser.cjs","sources":["../../../../src/commands/svc/create/arg-parser.ts"],"sourcesContent":["/**\n * Enhanced command line argument parser for OCLIF commands\n * Handles both known and unknown flags\n */\n\nexport interface ParsedArgs {\n instanceName: string;\n knownFlags: Record<string, any>;\n unknownFlags: string[];\n positionalArgs: string[];\n}\n\nexport interface FlagDefinition {\n name: string;\n type: 'string' | 'boolean' | 'number' | 'array';\n required?: boolean;\n default?: any;\n multiple?: boolean;\n}\n\nexport class ArgParser {\n private knownFlags: Set<string>;\n private flagDefinitions: Map<string, FlagDefinition>;\n\n constructor(flags: Record<string, any>) {\n this.knownFlags = new Set(Object.keys(flags));\n this.flagDefinitions = new Map();\n \n // Analyze flag definitions\n for (const [name, flag] of Object.entries(flags)) {\n if (flag.type) {\n this.flagDefinitions.set(name, {\n name,\n type: flag.type,\n required: flag.required || false,\n default: flag.default,\n multiple: flag.multiple || false\n });\n }\n }\n }\n\n /**\n * Parse command line arguments\n */\n parse(argv: string[]): ParsedArgs {\n const result: ParsedArgs = {\n instanceName: '',\n knownFlags: {},\n unknownFlags: [],\n positionalArgs: []\n };\n\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i];\n\n if (arg.startsWith('--')) {\n // Handle flag\n if (arg.includes('=')) {\n // Flag with value: --flag=value\n const [flagName, value] = arg.split('=', 2);\n const cleanFlagName = flagName.substring(2);\n \n if (this.knownFlags.has(cleanFlagName)) {\n result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);\n } else {\n result.unknownFlags.push(arg);\n }\n } else {\n // Flag without value: --flag or --flag value\n const flagName = arg.substring(2);\n \n if (this.knownFlags.has(flagName)) {\n const flagDef = this.flagDefinitions.get(flagName);\n \n if (flagDef?.type === 'boolean') {\n // Boolean flag\n result.knownFlags[flagName] = true;\n } else if (i + 1 < argv.length && !argv[i + 1].startsWith('-')) {\n // Flag with value in next argument\n const value = argv[i + 1];\n result.knownFlags[flagName] = this.parseFlagValue(flagName, value);\n i++; // Skip next argument\n } else {\n // Flag without value\n result.knownFlags[flagName] = true;\n }\n } else {\n result.unknownFlags.push(arg);\n }\n }\n } else if (arg.startsWith('-') && arg.length > 1) {\n // Short flags: -f, -abc\n const shortFlags = arg.substring(1).split('');\n for (const shortFlag of shortFlags) {\n // Find long name for short flag\n const longFlagName = this.findLongFlagName(shortFlag);\n if (longFlagName) {\n result.knownFlags[longFlagName] = true;\n } else {\n result.unknownFlags.push(`-${shortFlag}`);\n }\n }\n } else {\n // Positional argument\n if (!result.instanceName) {\n result.instanceName = arg;\n } else {\n result.positionalArgs.push(arg);\n }\n }\n \n i++;\n }\n\n // Set default values\n this.setDefaultValues(result.knownFlags);\n \n return result;\n }\n\n /**\n * Parse flag value according to its type\n */\n private parseFlagValue(flagName: string, value: string): any {\n const flagDef = this.flagDefinitions.get(flagName);\n \n if (!flagDef) {\n return value;\n }\n\n switch (flagDef.type) {\n case 'number':\n const num = parseFloat(value);\n if (isNaN(num)) {\n throw new Error(`Invalid number value for flag --${flagName}: ${value}`);\n }\n return num;\n \n case 'boolean':\n if (value === 'true' || value === '1') return true;\n if (value === 'false' || value === '0') return false;\n return Boolean(value);\n \n case 'array':\n if (flagDef.multiple) {\n // For multiple flags create array\n // This will be handled in main parse method\n return [value];\n }\n return value;\n \n default:\n return value;\n }\n }\n\n /**\n * Find long flag name by short flag\n */\n private findLongFlagName(shortFlag: string): string | null {\n // Simple implementation - can be extended\n for (const flagName of this.knownFlags) {\n if (flagName.startsWith(shortFlag)) {\n return flagName;\n }\n }\n return null;\n }\n\n /**\n * Set default values for flags\n */\n private setDefaultValues(flags: Record<string, any>): void {\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.default !== undefined && flags[name] === undefined) {\n flags[name] = flagDef.default;\n }\n }\n }\n\n /**\n * Validate required flags\n */\n validateRequired(flags: Record<string, any>): string[] {\n const errors: string[] = [];\n \n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.required && flags[name] === undefined) {\n errors.push(`Required flag --${name} is missing`);\n }\n }\n \n return errors;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arg-parser.cjs","sources":["../../../../src/commands/svc/create/arg-parser.ts"],"sourcesContent":["/**\n * Enhanced command line argument parser for OCLIF commands\n * Handles both known and unknown flags\n */\n\nexport interface ParsedArgs {\n instanceName: string;\n knownFlags: Record<string, any>;\n unknownFlags: string[];\n positionalArgs: string[];\n}\n\nexport interface FlagDefinition {\n name: string;\n type: 'string' | 'boolean' | 'number' | 'array';\n required?: boolean;\n default?: any;\n multiple?: boolean;\n}\n\nexport class ArgParser {\n private knownFlags: Set<string>;\n private flagDefinitions: Map<string, FlagDefinition>;\n\n constructor(flags: Record<string, any>) {\n this.knownFlags = new Set(Object.keys(flags));\n this.flagDefinitions = new Map();\n\n // Analyze flag definitions\n for (const [name, flag] of Object.entries(flags)) {\n if (flag.type) {\n this.flagDefinitions.set(name, {\n name,\n type: flag.type,\n required: flag.required || false,\n default: flag.default,\n multiple: flag.multiple || false,\n });\n }\n }\n }\n\n /**\n * Parse command line arguments\n */\n parse(argv: string[]): ParsedArgs {\n const result: ParsedArgs = {\n instanceName: '',\n knownFlags: {},\n unknownFlags: [],\n positionalArgs: [],\n };\n\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i];\n\n if (arg.startsWith('--')) {\n // Handle flag\n if (arg.includes('=')) {\n // Flag with value: --flag=value\n const [flagName, value] = arg.split('=', 2);\n const cleanFlagName = flagName.substring(2);\n\n if (this.knownFlags.has(cleanFlagName)) {\n result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);\n } else {\n result.unknownFlags.push(arg);\n }\n } else {\n // Flag without value: --flag or --flag value\n const flagName = arg.substring(2);\n\n if (this.knownFlags.has(flagName)) {\n const flagDef = this.flagDefinitions.get(flagName);\n\n if (flagDef?.type === 'boolean') {\n // Boolean flag\n result.knownFlags[flagName] = true;\n } else if (i + 1 < argv.length && !argv[i + 1].startsWith('-')) {\n // Flag with value in next argument\n const value = argv[i + 1];\n result.knownFlags[flagName] = this.parseFlagValue(flagName, value);\n i++; // Skip next argument\n } else {\n // Flag without value\n result.knownFlags[flagName] = true;\n }\n } else {\n result.unknownFlags.push(arg);\n }\n }\n } else if (arg.startsWith('-') && arg.length > 1) {\n // Short flags: -f, -abc\n const shortFlags = arg.substring(1).split('');\n for (const shortFlag of shortFlags) {\n // Find long name for short flag\n const longFlagName = this.findLongFlagName(shortFlag);\n if (longFlagName) {\n result.knownFlags[longFlagName] = true;\n } else {\n result.unknownFlags.push(`-${shortFlag}`);\n }\n }\n } else {\n // Positional argument\n if (!result.instanceName) {\n result.instanceName = arg;\n } else {\n result.positionalArgs.push(arg);\n }\n }\n\n i++;\n }\n\n // Set default values\n this.setDefaultValues(result.knownFlags);\n\n return result;\n }\n\n /**\n * Parse flag value according to its type\n */\n private parseFlagValue(flagName: string, value: string): any {\n const flagDef = this.flagDefinitions.get(flagName);\n\n if (!flagDef) {\n return value;\n }\n\n switch (flagDef.type) {\n case 'number':\n const num = parseFloat(value);\n if (isNaN(num)) {\n throw new Error(`Invalid number value for flag --${flagName}: ${value}`);\n }\n return num;\n\n case 'boolean':\n if (value === 'true' || value === '1') return true;\n if (value === 'false' || value === '0') return false;\n return Boolean(value);\n\n case 'array':\n if (flagDef.multiple) {\n // For multiple flags create array\n // This will be handled in main parse method\n return [value];\n }\n return value;\n\n default:\n return value;\n }\n }\n\n /**\n * Find long flag name by short flag\n */\n private findLongFlagName(shortFlag: string): string | null {\n // Simple implementation - can be extended\n for (const flagName of this.knownFlags) {\n if (flagName.startsWith(shortFlag)) {\n return flagName;\n }\n }\n return null;\n }\n\n /**\n * Set default values for flags\n */\n private setDefaultValues(flags: Record<string, any>): void {\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.default !== undefined && flags[name] === undefined) {\n flags[name] = flagDef.default;\n }\n }\n }\n\n /**\n * Validate required flags\n */\n validateRequired(flags: Record<string, any>): string[] {\n const errors: string[] = [];\n\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.required && flags[name] === undefined) {\n errors.push(`Required flag --${name} is missing`);\n }\n }\n\n return errors;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ class ArgParser {
16
16
  type: flag.type,
17
17
  required: flag.required || false,
18
18
  default: flag.default,
19
- multiple: flag.multiple || false
19
+ multiple: flag.multiple || false,
20
20
  });
21
21
  }
22
22
  }
@@ -29,7 +29,7 @@ class ArgParser {
29
29
  instanceName: '',
30
30
  knownFlags: {},
31
31
  unknownFlags: [],
32
- positionalArgs: []
32
+ positionalArgs: [],
33
33
  };
34
34
  let i = 0;
35
35
  while (i < argv.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"arg-parser.js","sources":["../../../../src/commands/svc/create/arg-parser.ts"],"sourcesContent":["/**\n * Enhanced command line argument parser for OCLIF commands\n * Handles both known and unknown flags\n */\n\nexport interface ParsedArgs {\n instanceName: string;\n knownFlags: Record<string, any>;\n unknownFlags: string[];\n positionalArgs: string[];\n}\n\nexport interface FlagDefinition {\n name: string;\n type: 'string' | 'boolean' | 'number' | 'array';\n required?: boolean;\n default?: any;\n multiple?: boolean;\n}\n\nexport class ArgParser {\n private knownFlags: Set<string>;\n private flagDefinitions: Map<string, FlagDefinition>;\n\n constructor(flags: Record<string, any>) {\n this.knownFlags = new Set(Object.keys(flags));\n this.flagDefinitions = new Map();\n \n // Analyze flag definitions\n for (const [name, flag] of Object.entries(flags)) {\n if (flag.type) {\n this.flagDefinitions.set(name, {\n name,\n type: flag.type,\n required: flag.required || false,\n default: flag.default,\n multiple: flag.multiple || false\n });\n }\n }\n }\n\n /**\n * Parse command line arguments\n */\n parse(argv: string[]): ParsedArgs {\n const result: ParsedArgs = {\n instanceName: '',\n knownFlags: {},\n unknownFlags: [],\n positionalArgs: []\n };\n\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i];\n\n if (arg.startsWith('--')) {\n // Handle flag\n if (arg.includes('=')) {\n // Flag with value: --flag=value\n const [flagName, value] = arg.split('=', 2);\n const cleanFlagName = flagName.substring(2);\n \n if (this.knownFlags.has(cleanFlagName)) {\n result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);\n } else {\n result.unknownFlags.push(arg);\n }\n } else {\n // Flag without value: --flag or --flag value\n const flagName = arg.substring(2);\n \n if (this.knownFlags.has(flagName)) {\n const flagDef = this.flagDefinitions.get(flagName);\n \n if (flagDef?.type === 'boolean') {\n // Boolean flag\n result.knownFlags[flagName] = true;\n } else if (i + 1 < argv.length && !argv[i + 1].startsWith('-')) {\n // Flag with value in next argument\n const value = argv[i + 1];\n result.knownFlags[flagName] = this.parseFlagValue(flagName, value);\n i++; // Skip next argument\n } else {\n // Flag without value\n result.knownFlags[flagName] = true;\n }\n } else {\n result.unknownFlags.push(arg);\n }\n }\n } else if (arg.startsWith('-') && arg.length > 1) {\n // Short flags: -f, -abc\n const shortFlags = arg.substring(1).split('');\n for (const shortFlag of shortFlags) {\n // Find long name for short flag\n const longFlagName = this.findLongFlagName(shortFlag);\n if (longFlagName) {\n result.knownFlags[longFlagName] = true;\n } else {\n result.unknownFlags.push(`-${shortFlag}`);\n }\n }\n } else {\n // Positional argument\n if (!result.instanceName) {\n result.instanceName = arg;\n } else {\n result.positionalArgs.push(arg);\n }\n }\n \n i++;\n }\n\n // Set default values\n this.setDefaultValues(result.knownFlags);\n \n return result;\n }\n\n /**\n * Parse flag value according to its type\n */\n private parseFlagValue(flagName: string, value: string): any {\n const flagDef = this.flagDefinitions.get(flagName);\n \n if (!flagDef) {\n return value;\n }\n\n switch (flagDef.type) {\n case 'number':\n const num = parseFloat(value);\n if (isNaN(num)) {\n throw new Error(`Invalid number value for flag --${flagName}: ${value}`);\n }\n return num;\n \n case 'boolean':\n if (value === 'true' || value === '1') return true;\n if (value === 'false' || value === '0') return false;\n return Boolean(value);\n \n case 'array':\n if (flagDef.multiple) {\n // For multiple flags create array\n // This will be handled in main parse method\n return [value];\n }\n return value;\n \n default:\n return value;\n }\n }\n\n /**\n * Find long flag name by short flag\n */\n private findLongFlagName(shortFlag: string): string | null {\n // Simple implementation - can be extended\n for (const flagName of this.knownFlags) {\n if (flagName.startsWith(shortFlag)) {\n return flagName;\n }\n }\n return null;\n }\n\n /**\n * Set default values for flags\n */\n private setDefaultValues(flags: Record<string, any>): void {\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.default !== undefined && flags[name] === undefined) {\n flags[name] = flagDef.default;\n }\n }\n }\n\n /**\n * Validate required flags\n */\n validateRequired(flags: Record<string, any>): string[] {\n const errors: string[] = [];\n \n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.required && flags[name] === undefined) {\n errors.push(`Required flag --${name} is missing`);\n }\n }\n \n return errors;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arg-parser.js","sources":["../../../../src/commands/svc/create/arg-parser.ts"],"sourcesContent":["/**\n * Enhanced command line argument parser for OCLIF commands\n * Handles both known and unknown flags\n */\n\nexport interface ParsedArgs {\n instanceName: string;\n knownFlags: Record<string, any>;\n unknownFlags: string[];\n positionalArgs: string[];\n}\n\nexport interface FlagDefinition {\n name: string;\n type: 'string' | 'boolean' | 'number' | 'array';\n required?: boolean;\n default?: any;\n multiple?: boolean;\n}\n\nexport class ArgParser {\n private knownFlags: Set<string>;\n private flagDefinitions: Map<string, FlagDefinition>;\n\n constructor(flags: Record<string, any>) {\n this.knownFlags = new Set(Object.keys(flags));\n this.flagDefinitions = new Map();\n\n // Analyze flag definitions\n for (const [name, flag] of Object.entries(flags)) {\n if (flag.type) {\n this.flagDefinitions.set(name, {\n name,\n type: flag.type,\n required: flag.required || false,\n default: flag.default,\n multiple: flag.multiple || false,\n });\n }\n }\n }\n\n /**\n * Parse command line arguments\n */\n parse(argv: string[]): ParsedArgs {\n const result: ParsedArgs = {\n instanceName: '',\n knownFlags: {},\n unknownFlags: [],\n positionalArgs: [],\n };\n\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i];\n\n if (arg.startsWith('--')) {\n // Handle flag\n if (arg.includes('=')) {\n // Flag with value: --flag=value\n const [flagName, value] = arg.split('=', 2);\n const cleanFlagName = flagName.substring(2);\n\n if (this.knownFlags.has(cleanFlagName)) {\n result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);\n } else {\n result.unknownFlags.push(arg);\n }\n } else {\n // Flag without value: --flag or --flag value\n const flagName = arg.substring(2);\n\n if (this.knownFlags.has(flagName)) {\n const flagDef = this.flagDefinitions.get(flagName);\n\n if (flagDef?.type === 'boolean') {\n // Boolean flag\n result.knownFlags[flagName] = true;\n } else if (i + 1 < argv.length && !argv[i + 1].startsWith('-')) {\n // Flag with value in next argument\n const value = argv[i + 1];\n result.knownFlags[flagName] = this.parseFlagValue(flagName, value);\n i++; // Skip next argument\n } else {\n // Flag without value\n result.knownFlags[flagName] = true;\n }\n } else {\n result.unknownFlags.push(arg);\n }\n }\n } else if (arg.startsWith('-') && arg.length > 1) {\n // Short flags: -f, -abc\n const shortFlags = arg.substring(1).split('');\n for (const shortFlag of shortFlags) {\n // Find long name for short flag\n const longFlagName = this.findLongFlagName(shortFlag);\n if (longFlagName) {\n result.knownFlags[longFlagName] = true;\n } else {\n result.unknownFlags.push(`-${shortFlag}`);\n }\n }\n } else {\n // Positional argument\n if (!result.instanceName) {\n result.instanceName = arg;\n } else {\n result.positionalArgs.push(arg);\n }\n }\n\n i++;\n }\n\n // Set default values\n this.setDefaultValues(result.knownFlags);\n\n return result;\n }\n\n /**\n * Parse flag value according to its type\n */\n private parseFlagValue(flagName: string, value: string): any {\n const flagDef = this.flagDefinitions.get(flagName);\n\n if (!flagDef) {\n return value;\n }\n\n switch (flagDef.type) {\n case 'number':\n const num = parseFloat(value);\n if (isNaN(num)) {\n throw new Error(`Invalid number value for flag --${flagName}: ${value}`);\n }\n return num;\n\n case 'boolean':\n if (value === 'true' || value === '1') return true;\n if (value === 'false' || value === '0') return false;\n return Boolean(value);\n\n case 'array':\n if (flagDef.multiple) {\n // For multiple flags create array\n // This will be handled in main parse method\n return [value];\n }\n return value;\n\n default:\n return value;\n }\n }\n\n /**\n * Find long flag name by short flag\n */\n private findLongFlagName(shortFlag: string): string | null {\n // Simple implementation - can be extended\n for (const flagName of this.knownFlags) {\n if (flagName.startsWith(shortFlag)) {\n return flagName;\n }\n }\n return null;\n }\n\n /**\n * Set default values for flags\n */\n private setDefaultValues(flags: Record<string, any>): void {\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.default !== undefined && flags[name] === undefined) {\n flags[name] = flagDef.default;\n }\n }\n }\n\n /**\n * Validate required flags\n */\n validateRequired(flags: Record<string, any>): string[] {\n const errors: string[] = [];\n\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.required && flags[name] === undefined) {\n errors.push(`Required flag --${name} is missing`);\n }\n }\n\n return errors;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"s3.cjs","sources":["../../../../../src/commands/svc/create/docker/s3.ts"],"sourcesContent":["import { Command, Args } from '@oclif/core';\nimport path from 'node:path';\nimport type * as types from '../../../../templates/types';\nimport Core from '../../../../core';\nimport * as cmdOpts from '../../../../cmd-opts';\nimport * as util from '../../../../util';\nimport state from '../../../../state';\nimport { ArgParser } from '../arg-parser';\n\nexport default class S3 extends Command {\n static override description = 'Run Platforma Backend service as docker container on current host with MinIO as local S3 storage';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n\n ...cmdOpts.AddressesFlags,\n ...cmdOpts.S3AddressesFlags,\n ...cmdOpts.ImageFlag,\n ...cmdOpts.VersionFlag,\n ...cmdOpts.ArchFlag,\n\n ...cmdOpts.AuthFlags,\n ...cmdOpts.LicenseFlags,\n\n ...cmdOpts.MountFlag,\n ...cmdOpts.StorageFlag,\n ...cmdOpts.MinioPresignHostFlag,\n };\n\n static override args = {\n name: Args.string({ required: true }),\n };\n\n public async run(): Promise<void> {\n // Use custom parser instead of OCLIF parse\n const parser = new ArgParser(S3.flags);\n const parsed = parser.parse(this.argv);\n\n // Validate required flags\n const errors = parser.validateRequired(parsed.knownFlags);\n if (errors.length > 0) {\n throw new Error(`Validation errors:\\n${errors.join('\\n')}`);\n }\n\n const instanceName = parsed.instanceName;\n const flags = parsed.knownFlags;\n\n const backendCommands = parsed.unknownFlags;\n if (flags['log-level']){\n backendCommands.push(`--log-level=${flags['log-level']}`);\n }\n\n // Set default values for S3-specific flags\n if (!flags['s3-port']) flags['s3-port'] = 9000;\n if (!flags['s3-console-port']) flags['s3-console-port'] = 9001;\n\n const logger = util.createLogger(flags['log-level'] || 'info');\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\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 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 backendCommands: backendCommands,\n });\n\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n if (flags['minio-presign-host']) {\n logger.info(' NOTE: make sure you have \\'minio\\' host in your hosts file as 127.0.0.1 address');\n }\n\n // Log unknown flags that will be passed to backend\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(' ')}`);\n }\n }\n}\n"],"names":["Command","cmdOpts.GlobalFlags","cmdOpts.AddressesFlags","cmdOpts.S3AddressesFlags","cmdOpts.ImageFlag","cmdOpts.VersionFlag","cmdOpts.ArchFlag","cmdOpts.AuthFlags","cmdOpts.LicenseFlags","cmdOpts.MountFlag","cmdOpts.StorageFlag","cmdOpts.MinioPresignHostFlag","Args","ArgParser","util.createLogger","Core"],"mappings":"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"}
1
+ {"version":3,"file":"s3.cjs","sources":["../../../../../src/commands/svc/create/docker/s3.ts"],"sourcesContent":["import { Command, Args } from '@oclif/core';\nimport path from 'node:path';\nimport type * as types from '../../../../templates/types';\nimport Core from '../../../../core';\nimport * as cmdOpts from '../../../../cmd-opts';\nimport * as util from '../../../../util';\nimport state from '../../../../state';\nimport { ArgParser } from '../arg-parser';\n\nexport default class S3 extends Command {\n static override description = 'Run Platforma Backend service as docker container on current host with MinIO as local S3 storage';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n\n ...cmdOpts.AddressesFlags,\n ...cmdOpts.S3AddressesFlags,\n ...cmdOpts.ImageFlag,\n ...cmdOpts.VersionFlag,\n ...cmdOpts.ArchFlag,\n\n ...cmdOpts.AuthFlags,\n ...cmdOpts.LicenseFlags,\n\n ...cmdOpts.MountFlag,\n ...cmdOpts.StorageFlag,\n ...cmdOpts.MinioPresignHostFlag,\n };\n\n static override args = {\n name: Args.string({ required: true }),\n };\n\n public async run(): Promise<void> {\n // Use custom parser instead of OCLIF parse\n const parser = new ArgParser(S3.flags);\n const parsed = parser.parse(this.argv);\n\n // Validate required flags\n const errors = parser.validateRequired(parsed.knownFlags);\n if (errors.length > 0) {\n throw new Error(`Validation errors:\\n${errors.join('\\n')}`);\n }\n\n const instanceName = parsed.instanceName;\n const flags = parsed.knownFlags;\n\n const backendCommands = parsed.unknownFlags;\n if (flags['log-level']) {\n backendCommands.push(`--log-level=${flags['log-level']}`);\n }\n\n // Set default values for S3-specific flags\n if (!flags['s3-port']) flags['s3-port'] = 9000;\n if (!flags['s3-console-port']) flags['s3-console-port'] = 9001;\n\n const logger = util.createLogger(flags['log-level'] || 'info');\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\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 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 backendCommands: backendCommands,\n });\n\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n if (flags['minio-presign-host']) {\n logger.info(' NOTE: make sure you have \\'minio\\' host in your hosts file as 127.0.0.1 address');\n }\n\n // Log unknown flags that will be passed to backend\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(' ')}`);\n }\n }\n}\n"],"names":["Command","cmdOpts.GlobalFlags","cmdOpts.AddressesFlags","cmdOpts.S3AddressesFlags","cmdOpts.ImageFlag","cmdOpts.VersionFlag","cmdOpts.ArchFlag","cmdOpts.AuthFlags","cmdOpts.LicenseFlags","cmdOpts.MountFlag","cmdOpts.StorageFlag","cmdOpts.MinioPresignHostFlag","Args","ArgParser","util.createLogger","Core"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"s3.js","sources":["../../../../../src/commands/svc/create/docker/s3.ts"],"sourcesContent":["import { Command, Args } from '@oclif/core';\nimport path from 'node:path';\nimport type * as types from '../../../../templates/types';\nimport Core from '../../../../core';\nimport * as cmdOpts from '../../../../cmd-opts';\nimport * as util from '../../../../util';\nimport state from '../../../../state';\nimport { ArgParser } from '../arg-parser';\n\nexport default class S3 extends Command {\n static override description = 'Run Platforma Backend service as docker container on current host with MinIO as local S3 storage';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n\n ...cmdOpts.AddressesFlags,\n ...cmdOpts.S3AddressesFlags,\n ...cmdOpts.ImageFlag,\n ...cmdOpts.VersionFlag,\n ...cmdOpts.ArchFlag,\n\n ...cmdOpts.AuthFlags,\n ...cmdOpts.LicenseFlags,\n\n ...cmdOpts.MountFlag,\n ...cmdOpts.StorageFlag,\n ...cmdOpts.MinioPresignHostFlag,\n };\n\n static override args = {\n name: Args.string({ required: true }),\n };\n\n public async run(): Promise<void> {\n // Use custom parser instead of OCLIF parse\n const parser = new ArgParser(S3.flags);\n const parsed = parser.parse(this.argv);\n\n // Validate required flags\n const errors = parser.validateRequired(parsed.knownFlags);\n if (errors.length > 0) {\n throw new Error(`Validation errors:\\n${errors.join('\\n')}`);\n }\n\n const instanceName = parsed.instanceName;\n const flags = parsed.knownFlags;\n\n const backendCommands = parsed.unknownFlags;\n if (flags['log-level']){\n backendCommands.push(`--log-level=${flags['log-level']}`);\n }\n\n // Set default values for S3-specific flags\n if (!flags['s3-port']) flags['s3-port'] = 9000;\n if (!flags['s3-console-port']) flags['s3-console-port'] = 9001;\n\n const logger = util.createLogger(flags['log-level'] || 'info');\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\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 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 backendCommands: backendCommands,\n });\n\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n if (flags['minio-presign-host']) {\n logger.info(' NOTE: make sure you have \\'minio\\' host in your hosts file as 127.0.0.1 address');\n }\n\n // Log unknown flags that will be passed to backend\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(' ')}`);\n }\n }\n}\n"],"names":["cmdOpts.GlobalFlags","cmdOpts.AddressesFlags","cmdOpts.S3AddressesFlags","cmdOpts.ImageFlag","cmdOpts.VersionFlag","cmdOpts.ArchFlag","cmdOpts.AuthFlags","cmdOpts.LicenseFlags","cmdOpts.MountFlag","cmdOpts.StorageFlag","cmdOpts.MinioPresignHostFlag","util.createLogger"],"mappings":"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"}
1
+ {"version":3,"file":"s3.js","sources":["../../../../../src/commands/svc/create/docker/s3.ts"],"sourcesContent":["import { Command, Args } from '@oclif/core';\nimport path from 'node:path';\nimport type * as types from '../../../../templates/types';\nimport Core from '../../../../core';\nimport * as cmdOpts from '../../../../cmd-opts';\nimport * as util from '../../../../util';\nimport state from '../../../../state';\nimport { ArgParser } from '../arg-parser';\n\nexport default class S3 extends Command {\n static override description = 'Run Platforma Backend service as docker container on current host with MinIO as local S3 storage';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n\n ...cmdOpts.AddressesFlags,\n ...cmdOpts.S3AddressesFlags,\n ...cmdOpts.ImageFlag,\n ...cmdOpts.VersionFlag,\n ...cmdOpts.ArchFlag,\n\n ...cmdOpts.AuthFlags,\n ...cmdOpts.LicenseFlags,\n\n ...cmdOpts.MountFlag,\n ...cmdOpts.StorageFlag,\n ...cmdOpts.MinioPresignHostFlag,\n };\n\n static override args = {\n name: Args.string({ required: true }),\n };\n\n public async run(): Promise<void> {\n // Use custom parser instead of OCLIF parse\n const parser = new ArgParser(S3.flags);\n const parsed = parser.parse(this.argv);\n\n // Validate required flags\n const errors = parser.validateRequired(parsed.knownFlags);\n if (errors.length > 0) {\n throw new Error(`Validation errors:\\n${errors.join('\\n')}`);\n }\n\n const instanceName = parsed.instanceName;\n const flags = parsed.knownFlags;\n\n const backendCommands = parsed.unknownFlags;\n if (flags['log-level']) {\n backendCommands.push(`--log-level=${flags['log-level']}`);\n }\n\n // Set default values for S3-specific flags\n if (!flags['s3-port']) flags['s3-port'] = 9000;\n if (!flags['s3-console-port']) flags['s3-console-port'] = 9001;\n\n const logger = util.createLogger(flags['log-level'] || 'info');\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\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 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 backendCommands: backendCommands,\n });\n\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n if (flags['minio-presign-host']) {\n logger.info(' NOTE: make sure you have \\'minio\\' host in your hosts file as 127.0.0.1 address');\n }\n\n // Log unknown flags that will be passed to backend\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(' ')}`);\n }\n }\n}\n"],"names":["cmdOpts.GlobalFlags","cmdOpts.AddressesFlags","cmdOpts.S3AddressesFlags","cmdOpts.ImageFlag","cmdOpts.VersionFlag","cmdOpts.ArchFlag","cmdOpts.AuthFlags","cmdOpts.LicenseFlags","cmdOpts.MountFlag","cmdOpts.StorageFlag","cmdOpts.MinioPresignHostFlag","util.createLogger"],"mappings":"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"}