@platforma-sdk/bootstrap 5.3.35 → 5.3.36

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 (116) hide show
  1. package/bin/run.js +6 -5
  2. package/dist/cli.cjs +57 -0
  3. package/dist/cli.cjs.map +1 -0
  4. package/dist/cli.d.ts +8 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +55 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/cmd-opts.cjs +116 -109
  9. package/dist/cmd-opts.cjs.map +1 -1
  10. package/dist/cmd-opts.js +95 -91
  11. package/dist/cmd-opts.js.map +1 -1
  12. package/dist/commands/create-block.cjs +10 -10
  13. package/dist/commands/create-block.cjs.map +1 -1
  14. package/dist/commands/create-block.js +11 -12
  15. package/dist/commands/create-block.js.map +1 -1
  16. package/dist/commands/reset.cjs +10 -10
  17. package/dist/commands/reset.cjs.map +1 -1
  18. package/dist/commands/reset.js +11 -12
  19. package/dist/commands/reset.js.map +1 -1
  20. package/dist/commands/start/docker/s3.cjs +10 -22
  21. package/dist/commands/start/docker/s3.cjs.map +1 -1
  22. package/dist/commands/start/docker/s3.js +11 -23
  23. package/dist/commands/start/docker/s3.js.map +1 -1
  24. package/dist/commands/start/docker.cjs +10 -23
  25. package/dist/commands/start/docker.cjs.map +1 -1
  26. package/dist/commands/start/docker.js +11 -24
  27. package/dist/commands/start/docker.js.map +1 -1
  28. package/dist/commands/start/local/s3.cjs +10 -26
  29. package/dist/commands/start/local/s3.cjs.map +1 -1
  30. package/dist/commands/start/local/s3.js +11 -27
  31. package/dist/commands/start/local/s3.js.map +1 -1
  32. package/dist/commands/start/local.cjs +10 -25
  33. package/dist/commands/start/local.cjs.map +1 -1
  34. package/dist/commands/start/local.js +11 -26
  35. package/dist/commands/start/local.js.map +1 -1
  36. package/dist/commands/start.cjs +10 -10
  37. package/dist/commands/start.cjs.map +1 -1
  38. package/dist/commands/start.js +11 -12
  39. package/dist/commands/start.js.map +1 -1
  40. package/dist/commands/stop.cjs +10 -10
  41. package/dist/commands/stop.cjs.map +1 -1
  42. package/dist/commands/stop.js +11 -12
  43. package/dist/commands/stop.js.map +1 -1
  44. package/dist/commands/svc/create/arg-parser.cjs.map +1 -1
  45. package/dist/commands/svc/create/arg-parser.js.map +1 -1
  46. package/dist/commands/svc/create/docker/s3.cjs +25 -24
  47. package/dist/commands/svc/create/docker/s3.cjs.map +1 -1
  48. package/dist/commands/svc/create/docker/s3.js +26 -25
  49. package/dist/commands/svc/create/docker/s3.js.map +1 -1
  50. package/dist/commands/svc/create/docker.cjs +26 -25
  51. package/dist/commands/svc/create/docker.cjs.map +1 -1
  52. package/dist/commands/svc/create/docker.js +27 -26
  53. package/dist/commands/svc/create/docker.js.map +1 -1
  54. package/dist/commands/svc/create/local/s3.cjs +29 -28
  55. package/dist/commands/svc/create/local/s3.cjs.map +1 -1
  56. package/dist/commands/svc/create/local/s3.js +30 -29
  57. package/dist/commands/svc/create/local/s3.js.map +1 -1
  58. package/dist/commands/svc/create/local.cjs +28 -27
  59. package/dist/commands/svc/create/local.cjs.map +1 -1
  60. package/dist/commands/svc/create/local.js +29 -28
  61. package/dist/commands/svc/create/local.js.map +1 -1
  62. package/dist/commands/svc/delete.cjs +15 -21
  63. package/dist/commands/svc/delete.cjs.map +1 -1
  64. package/dist/commands/svc/delete.js +16 -23
  65. package/dist/commands/svc/delete.js.map +1 -1
  66. package/dist/commands/svc/down.cjs +12 -12
  67. package/dist/commands/svc/down.cjs.map +1 -1
  68. package/dist/commands/svc/down.js +13 -14
  69. package/dist/commands/svc/down.js.map +1 -1
  70. package/dist/commands/svc/list.cjs +8 -10
  71. package/dist/commands/svc/list.cjs.map +1 -1
  72. package/dist/commands/svc/list.js +8 -10
  73. package/dist/commands/svc/list.js.map +1 -1
  74. package/dist/commands/svc/up.cjs +12 -12
  75. package/dist/commands/svc/up.cjs.map +1 -1
  76. package/dist/commands/svc/up.js +13 -14
  77. package/dist/commands/svc/up.js.map +1 -1
  78. package/dist/index.cjs +3 -39
  79. package/dist/index.d.ts +2 -39
  80. package/dist/index.js +2 -39
  81. package/package.json +5 -17
  82. package/dist/commands/create-block.d.ts +0 -15
  83. package/dist/commands/create-block.d.ts.map +0 -1
  84. package/dist/commands/reset.d.ts +0 -15
  85. package/dist/commands/reset.d.ts.map +0 -1
  86. package/dist/commands/start/docker/s3.d.ts +0 -35
  87. package/dist/commands/start/docker/s3.d.ts.map +0 -1
  88. package/dist/commands/start/docker.d.ts +0 -35
  89. package/dist/commands/start/docker.d.ts.map +0 -1
  90. package/dist/commands/start/local/s3.d.ts +0 -39
  91. package/dist/commands/start/local/s3.d.ts.map +0 -1
  92. package/dist/commands/start/local.d.ts +0 -37
  93. package/dist/commands/start/local.d.ts.map +0 -1
  94. package/dist/commands/start.d.ts +0 -15
  95. package/dist/commands/start.d.ts.map +0 -1
  96. package/dist/commands/stop.d.ts +0 -15
  97. package/dist/commands/stop.d.ts.map +0 -1
  98. package/dist/commands/svc/create/docker/s3.d.ts +0 -38
  99. package/dist/commands/svc/create/docker/s3.d.ts.map +0 -1
  100. package/dist/commands/svc/create/docker.d.ts +0 -38
  101. package/dist/commands/svc/create/docker.d.ts.map +0 -1
  102. package/dist/commands/svc/create/local/s3.d.ts +0 -42
  103. package/dist/commands/svc/create/local/s3.d.ts.map +0 -1
  104. package/dist/commands/svc/create/local.d.ts +0 -40
  105. package/dist/commands/svc/create/local.d.ts.map +0 -1
  106. package/dist/commands/svc/delete.d.ts +0 -19
  107. package/dist/commands/svc/delete.d.ts.map +0 -1
  108. package/dist/commands/svc/down.d.ts +0 -18
  109. package/dist/commands/svc/down.d.ts.map +0 -1
  110. package/dist/commands/svc/list.d.ts +0 -12
  111. package/dist/commands/svc/list.d.ts.map +0 -1
  112. package/dist/commands/svc/up.d.ts +0 -18
  113. package/dist/commands/svc/up.d.ts.map +0 -1
  114. package/dist/index.cjs.map +0 -1
  115. package/dist/index.d.ts.map +0 -1
  116. package/dist/index.js.map +0 -1
@@ -1,32 +1,32 @@
1
- import { AddressesFlags, ArchFlag, AuthFlags, GlobalFlags, ImageFlag, LicenseFlags, MountFlag, StorageFlag, StorageLibraryURLFlag, StoragePrimaryURLFlag, StorageWorkPathFlag, VersionFlag } from "../../../cmd-opts.js";
1
+ import { AddressesOptions, ArchOptions, AuthOptions, GlobalOptions, ImageOptions, LicenseOptions, MountOptions, StorageLibraryURLOptions, StorageOptions, StoragePrimaryURLOptions, StorageWorkPathOptions, VersionOptions, argDefs } from "../../../cmd-opts.js";
2
2
  import { createLogger } from "../../../util.js";
3
3
  import state_default from "../../../state.js";
4
4
  import Core from "../../../core.js";
5
5
  import { ArgParser } from "./arg-parser.js";
6
- import { Args, Command } from "@oclif/core";
6
+ import { Command } from "commander";
7
7
  import path from "node:path";
8
8
  //#region src/commands/svc/create/docker.ts
9
- var Docker = class Docker extends Command {
10
- static description = "Run Platforma Backend service as docker container on current host";
11
- static examples = ["<%= config.bin %> <%= command.id %>"];
12
- static flags = {
13
- ...GlobalFlags,
14
- ...AddressesFlags,
15
- ...ImageFlag,
16
- ...VersionFlag,
17
- ...ArchFlag,
18
- ...AuthFlags,
19
- ...LicenseFlags,
20
- ...MountFlag,
21
- ...StorageFlag,
22
- ...StoragePrimaryURLFlag,
23
- ...StorageWorkPathFlag,
24
- ...StorageLibraryURLFlag
25
- };
26
- static args = { name: Args.string({ required: true }) };
27
- async run() {
28
- const parser = new ArgParser(Docker.flags);
29
- const parsed = parser.parse(this.argv);
9
+ const optionGroups = () => [
10
+ GlobalOptions(),
11
+ AddressesOptions(),
12
+ ImageOptions(),
13
+ VersionOptions(),
14
+ ArchOptions(),
15
+ AuthOptions(),
16
+ LicenseOptions(),
17
+ MountOptions(),
18
+ StorageOptions(),
19
+ StoragePrimaryURLOptions(),
20
+ StorageWorkPathOptions(),
21
+ StorageLibraryURLOptions()
22
+ ];
23
+ function svcCreateDockerCommand() {
24
+ const cmd = new Command("docker").description("Run Platforma Backend service as docker container on current host").allowUnknownOption().allowExcessArguments();
25
+ cmd.argument("[args...]", "instance name followed by optional backend flags");
26
+ cmd.action(async () => {
27
+ const args = cmd.args;
28
+ const parser = new ArgParser(argDefs(...optionGroups()));
29
+ const parsed = parser.parse(args);
30
30
  const errors = parser.validateRequired(parsed.knownFlags);
31
31
  if (errors.length > 0) throw new Error(`Validation errors:\n${errors.join("\n")}`);
32
32
  const instanceName = parsed.instanceName;
@@ -73,9 +73,10 @@ var Docker = class Docker extends Command {
73
73
  });
74
74
  logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);
75
75
  if (backendCommands.length > 0) logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(" ")}`);
76
- }
77
- };
76
+ });
77
+ return cmd;
78
+ }
78
79
  //#endregion
79
- export { Docker as default };
80
+ export { svcCreateDockerCommand as default };
80
81
 
81
82
  //# sourceMappingURL=docker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","names":["cmdOpts.GlobalFlags","cmdOpts.AddressesFlags","cmdOpts.ImageFlag","cmdOpts.VersionFlag","cmdOpts.ArchFlag","cmdOpts.AuthFlags","cmdOpts.LicenseFlags","cmdOpts.MountFlag","cmdOpts.StorageFlag","cmdOpts.StoragePrimaryURLFlag","cmdOpts.StorageWorkPathFlag","cmdOpts.StorageLibraryURLFlag","util.createLogger","state"],"sources":["../../../../src/commands/svc/create/docker.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 Docker extends Command {\n static override description = \"Run Platforma Backend service as docker container on current host\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n\n ...cmdOpts.AddressesFlags,\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.StoragePrimaryURLFlag,\n ...cmdOpts.StorageWorkPathFlag,\n ...cmdOpts.StorageLibraryURLFlag,\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(Docker.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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n // Set default values for flags that weren't specified\n if (!flags[\"log-level\"]) flags[\"log-level\"] = \"info\";\n if (!flags[\"grpc-port\"]) flags[\"grpc-port\"] = 6345;\n if (!flags[\"grpc-listen\"]) flags[\"grpc-listen\"] = \"127.0.0.1:6345\";\n if (!flags[\"monitoring-port\"]) flags[\"monitoring-port\"] = 9090;\n if (!flags[\"monitoring-listen\"]) flags[\"monitoring-listen\"] = \"127.0.0.1:9090\";\n if (!flags[\"debug-port\"]) flags[\"debug-port\"] = 9091;\n if (!flags[\"debug-listen\"]) flags[\"debug-listen\"] = \"127.0.0.1:9091\";\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\n 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 backendCommands: backendCommands,\n });\n\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\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"],"mappings":";;;;;;;;AASA,IAAqB,SAArB,MAAqB,eAAe,QAAQ;CAC1C,OAAgB,cAAc;CAE9B,OAAgB,WAAW,CAAC,sCAAsC;CAElE,OAAgB,QAAQ;EACtB,GAAGA;EAEH,GAAGC;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;EAEH,GAAGC;EACH,GAAGC;EAEH,GAAGC;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;EACJ;CAED,OAAgB,OAAO,EACrB,MAAM,KAAK,OAAO,EAAE,UAAU,MAAM,CAAC,EACtC;CAED,MAAa,MAAqB;EAEhC,MAAM,SAAS,IAAI,UAAU,OAAO,MAAM;EAC1C,MAAM,SAAS,OAAO,MAAM,KAAK,KAAK;EAGtC,MAAM,SAAS,OAAO,iBAAiB,OAAO,WAAW;AACzD,MAAI,OAAO,SAAS,EAClB,OAAM,IAAI,MAAM,uBAAuB,OAAO,KAAK,KAAK,GAAG;EAG7D,MAAM,eAAe,OAAO;EAC5B,MAAM,QAAQ,OAAO;EACrB,MAAM,kBAAkB,OAAO;AAC/B,MAAI,MAAM,aACR,iBAAgB,KAAK,eAAe,MAAM,eAAe;AAI3D,MAAI,CAAC,MAAM,aAAc,OAAM,eAAe;AAC9C,MAAI,CAAC,MAAM,aAAc,OAAM,eAAe;AAC9C,MAAI,CAAC,MAAM,eAAgB,OAAM,iBAAiB;AAClD,MAAI,CAAC,MAAM,mBAAoB,OAAM,qBAAqB;AAC1D,MAAI,CAAC,MAAM,qBAAsB,OAAM,uBAAuB;AAC9D,MAAI,CAAC,MAAM,cAAe,OAAM,gBAAgB;AAChD,MAAI,CAAC,MAAM,gBAAiB,OAAM,kBAAkB;EAEpD,MAAM,SAASC,aAAkB,MAAM,gBAAgB,OAAO;EAC9D,MAAM,OAAO,IAAI,KAAK,OAAO;AAC7B,OAAK,iBAAiB,MAAM;EAE5B,MAAM,cAAc,MAAM;EAC1B,MAAM,cAA6C,cAC/C;GACE,SAAS;GACT,SAAS,KAAK,oBAAoB,OAAO,IAAI;GAC9C,GACD,KAAA;EAEJ,MAAM,UAAU,MAAM,UAAU,KAAK,KAAK,KAAK,MAAM,QAAQ,GAAGC,cAAM,YAAY,aAAa;EAE/F,MAAM,SAAyD,EAAE;AACjE,OAAK,MAAM,KAAK,MAAM,SAAS,EAAE,CAC/B,QAAO,KAAK,EAAE,UAAU,GAAG,CAAC;EAG9B,MAAM,mBAAmB,MAAM,OAAO,SAAS,MAAM,SAAS,KAAA;AAE9D,OAAK,aAAa,cAAc,SAAS;GACvC,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;GAEA;GAClB,CAAC;AAEF,SAAO,KAAK,aAAa,aAAa,6CAA6C;AAGnF,MAAI,gBAAgB,SAAS,EAC3B,QAAO,KAAK,4CAA4C,gBAAgB,KAAK,IAAI,GAAG"}
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.argDefs","util.createLogger","state"],"sources":["../../../../src/commands/svc/create/docker.ts"],"sourcesContent":["import { Command } from \"commander\";\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\nconst optionGroups = (): Parameters<typeof cmdOpts.argDefs> => [\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\nexport default function svcCreateDockerCommand(): Command {\n const cmd = new Command(\"docker\")\n .description(\"Run Platforma Backend service as docker container on current host\")\n .allowUnknownOption()\n .allowExcessArguments();\n\n // Unknown flags are forwarded to the backend, so parse the raw token list\n // ourselves instead of letting commander reject them.\n cmd.argument(\"[args...]\", \"instance name followed by optional backend flags\");\n\n cmd.action(async () => {\n const args = cmd.args;\n const parser = new ArgParser(cmdOpts.argDefs(...optionGroups()));\n const parsed = parser.parse(args);\n\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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n if (!flags[\"log-level\"]) flags[\"log-level\"] = \"info\";\n if (!flags[\"grpc-port\"]) flags[\"grpc-port\"] = 6345;\n if (!flags[\"grpc-listen\"]) flags[\"grpc-listen\"] = \"127.0.0.1:6345\";\n if (!flags[\"monitoring-port\"]) flags[\"monitoring-port\"] = 9090;\n if (!flags[\"monitoring-listen\"]) flags[\"monitoring-listen\"] = \"127.0.0.1:9090\";\n if (!flags[\"debug-port\"]) flags[\"debug-port\"] = 9091;\n if (!flags[\"debug-listen\"]) flags[\"debug-listen\"] = \"127.0.0.1:9091\";\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\n 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 backendCommands: backendCommands,\n });\n\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(\" \")}`);\n }\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;;AASA,MAAM,qBAAyD;CAC7DA,eAAuB;CACvBC,kBAA0B;CAC1BC,cAAsB;CACtBC,gBAAwB;CACxBC,aAAqB;CACrBC,aAAqB;CACrBC,gBAAwB;CACxBC,cAAsB;CACtBC,gBAAwB;CACxBC,0BAAkC;CAClCC,wBAAgC;CAChCC,0BAAkC;CACnC;AAED,SAAwB,yBAAkC;CACxD,MAAM,MAAM,IAAI,QAAQ,SAAS,CAC9B,YAAY,oEAAoE,CAChF,oBAAoB,CACpB,sBAAsB;AAIzB,KAAI,SAAS,aAAa,mDAAmD;AAE7E,KAAI,OAAO,YAAY;EACrB,MAAM,OAAO,IAAI;EACjB,MAAM,SAAS,IAAI,UAAUC,QAAgB,GAAG,cAAc,CAAC,CAAC;EAChE,MAAM,SAAS,OAAO,MAAM,KAAK;EAEjC,MAAM,SAAS,OAAO,iBAAiB,OAAO,WAAW;AACzD,MAAI,OAAO,SAAS,EAClB,OAAM,IAAI,MAAM,uBAAuB,OAAO,KAAK,KAAK,GAAG;EAG7D,MAAM,eAAe,OAAO;EAC5B,MAAM,QAAQ,OAAO;EACrB,MAAM,kBAAkB,OAAO;AAC/B,MAAI,MAAM,aACR,iBAAgB,KAAK,eAAe,MAAM,eAAe;AAG3D,MAAI,CAAC,MAAM,aAAc,OAAM,eAAe;AAC9C,MAAI,CAAC,MAAM,aAAc,OAAM,eAAe;AAC9C,MAAI,CAAC,MAAM,eAAgB,OAAM,iBAAiB;AAClD,MAAI,CAAC,MAAM,mBAAoB,OAAM,qBAAqB;AAC1D,MAAI,CAAC,MAAM,qBAAsB,OAAM,uBAAuB;AAC9D,MAAI,CAAC,MAAM,cAAe,OAAM,gBAAgB;AAChD,MAAI,CAAC,MAAM,gBAAiB,OAAM,kBAAkB;EAEpD,MAAM,SAASC,aAAkB,MAAM,gBAAgB,OAAO;EAC9D,MAAM,OAAO,IAAI,KAAK,OAAO;AAC7B,OAAK,iBAAiB,MAAM;EAE5B,MAAM,cAAc,MAAM;EAC1B,MAAM,cAA6C,cAC/C;GACE,SAAS;GACT,SAAS,KAAK,oBAAoB,OAAO,IAAI;GAC9C,GACD,KAAA;EAEJ,MAAM,UAAU,MAAM,UAAU,KAAK,KAAK,KAAK,MAAM,QAAQ,GAAGC,cAAM,YAAY,aAAa;EAE/F,MAAM,SAAyD,EAAE;AACjE,OAAK,MAAM,KAAK,MAAM,SAAS,EAAE,CAC/B,QAAO,KAAK,EAAE,UAAU,GAAG,CAAC;EAG9B,MAAM,mBAAmB,MAAM,OAAO,SAAS,MAAM,SAAS,KAAA;AAE9D,OAAK,aAAa,cAAc,SAAS;GACvC,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;GAEA;GAClB,CAAC;AAEF,SAAO,KAAK,aAAa,aAAa,6CAA6C;AAEnF,MAAI,gBAAgB,SAAS,EAC3B,QAAO,KAAK,4CAA4C,gBAAgB,KAAK,IAAI,GAAG;GAEtF;AAEF,QAAO"}
@@ -5,36 +5,36 @@ const require_state = require("../../../../state.cjs");
5
5
  const require_platforma = require("../../../../platforma.cjs");
6
6
  const require_core = require("../../../../core.cjs");
7
7
  const require_arg_parser = require("../arg-parser.cjs");
8
- let _oclif_core = require("@oclif/core");
8
+ let commander = require("commander");
9
9
  let node_os = require("node:os");
10
10
  node_os = require_runtime.__toESM(node_os);
11
11
  let node_path = require("node:path");
12
12
  node_path = require_runtime.__toESM(node_path);
13
13
  //#region src/commands/svc/create/local/s3.ts
14
- var Local = class Local extends _oclif_core.Command {
15
- static description = "Run Platforma Backend service as local process on current host (no docker container)";
16
- static examples = ["<%= config.bin %> <%= command.id %>"];
17
- static flags = {
18
- ...require_cmd_opts.GlobalFlags,
19
- ...require_cmd_opts.VersionFlag,
20
- ...require_cmd_opts.S3AddressesFlags,
21
- ...require_cmd_opts.AddressesFlags,
22
- ...require_cmd_opts.PlBinaryFlag,
23
- ...require_cmd_opts.PlSourcesFlag,
24
- ...require_cmd_opts.ConfigFlag,
25
- ...require_cmd_opts.LicenseFlags,
26
- ...require_cmd_opts.StorageFlag,
27
- ...require_cmd_opts.StoragePrimaryURLFlag,
28
- ...require_cmd_opts.StorageWorkPathFlag,
29
- ...require_cmd_opts.StorageLibraryURLFlag,
30
- ...require_cmd_opts.PlLogFileFlag,
31
- ...require_cmd_opts.PlWorkdirFlag,
32
- ...require_cmd_opts.AuthFlags
33
- };
34
- static args = { name: _oclif_core.Args.string({ required: true }) };
35
- async run() {
36
- const parser = new require_arg_parser.ArgParser(Local.flags);
37
- const parsed = parser.parse(this.argv);
14
+ const optionGroups = () => [
15
+ require_cmd_opts.GlobalOptions(),
16
+ require_cmd_opts.VersionOptions(),
17
+ require_cmd_opts.S3AddressesOptions(),
18
+ require_cmd_opts.AddressesOptions(),
19
+ require_cmd_opts.PlBinaryOptions(),
20
+ require_cmd_opts.PlSourcesOptions(),
21
+ require_cmd_opts.ConfigOptions(),
22
+ require_cmd_opts.LicenseOptions(),
23
+ require_cmd_opts.StorageOptions(),
24
+ require_cmd_opts.StoragePrimaryURLOptions(),
25
+ require_cmd_opts.StorageWorkPathOptions(),
26
+ require_cmd_opts.StorageLibraryURLOptions(),
27
+ require_cmd_opts.PlLogFileOptions(),
28
+ require_cmd_opts.PlWorkdirOptions(),
29
+ require_cmd_opts.AuthOptions()
30
+ ];
31
+ function svcCreateLocalS3Command() {
32
+ const cmd = new commander.Command("s3").description("Run Platforma Backend service as local process on current host (no docker container)").allowUnknownOption().allowExcessArguments();
33
+ cmd.argument("[args...]", "instance name followed by optional backend flags");
34
+ cmd.action(async () => {
35
+ const args = cmd.args;
36
+ const parser = new require_arg_parser.ArgParser(require_cmd_opts.argDefs(...optionGroups()));
37
+ const parsed = parser.parse(args);
38
38
  const errors = parser.validateRequired(parsed.knownFlags);
39
39
  if (errors.length > 0) throw new Error(`Validation errors:\n${errors.join("\n")}`);
40
40
  const instanceName = parsed.instanceName;
@@ -100,9 +100,10 @@ var Local = class Local extends _oclif_core.Command {
100
100
  logger.error(err.message);
101
101
  });
102
102
  if (backendCommands.length > 0) logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(" ")}`);
103
- }
104
- };
103
+ });
104
+ return cmd;
105
+ }
105
106
  //#endregion
106
- exports.default = Local;
107
+ exports.default = svcCreateLocalS3Command;
107
108
 
108
109
  //# sourceMappingURL=s3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3.cjs","names":["Command","Args","ArgParser","Core","path","state","os"],"sources":["../../../../../src/commands/svc/create/local/s3.ts"],"sourcesContent":["import { Command, Args } from \"@oclif/core\";\nimport path from \"node:path\";\nimport type { createLocalS3Options } from \"../../../../core\";\nimport Core from \"../../../../core\";\nimport * as cmdOpts from \"../../../../cmd-opts\";\nimport * as util from \"../../../../util\";\nimport state from \"../../../../state\";\nimport * as platforma from \"../../../../platforma\";\nimport * as os from \"node:os\";\nimport { ArgParser } from \"../arg-parser\";\n\nexport default class Local extends Command {\n static override description =\n \"Run Platforma Backend service as local process on current host (no docker container)\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n ...cmdOpts.VersionFlag,\n\n ...cmdOpts.S3AddressesFlags,\n ...cmdOpts.AddressesFlags,\n ...cmdOpts.PlBinaryFlag,\n ...cmdOpts.PlSourcesFlag,\n\n ...cmdOpts.ConfigFlag,\n\n ...cmdOpts.LicenseFlags,\n\n ...cmdOpts.StorageFlag,\n ...cmdOpts.StoragePrimaryURLFlag,\n ...cmdOpts.StorageWorkPathFlag,\n ...cmdOpts.StorageLibraryURLFlag,\n\n ...cmdOpts.PlLogFileFlag,\n ...cmdOpts.PlWorkdirFlag,\n ...cmdOpts.AuthFlags,\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(Local.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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n const logger = util.createLogger(flags[\"log-level\"] || \"info\");\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\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 createOptions: 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 backendCommands: backendCommands,\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: { auth: { enabled: authEnabled, drivers: authDrivers } },\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\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 };\n\n logger.info(`Creating instance configuration, data directory and other stuff...`);\n core.createLocalS3(instanceName, createOptions);\n\n if (createOptions.binaryPath || createOptions.sourcesPath) {\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n return;\n }\n\n platforma\n .getBinary(logger, { version: flags.version })\n .then(() =>\n logger.info(`Instance '${instanceName}' was created. To start it run 'svc up' command`),\n )\n .catch(function (err: Error) {\n logger.error(err.message);\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"],"mappings":"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"}
1
+ {"version":3,"file":"s3.cjs","names":["Command","ArgParser","Core","path","state","os"],"sources":["../../../../../src/commands/svc/create/local/s3.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport path from \"node:path\";\nimport type { createLocalS3Options } from \"../../../../core\";\nimport Core from \"../../../../core\";\nimport * as cmdOpts from \"../../../../cmd-opts\";\nimport * as util from \"../../../../util\";\nimport state from \"../../../../state\";\nimport * as platforma from \"../../../../platforma\";\nimport * as os from \"node:os\";\nimport { ArgParser } from \"../arg-parser\";\n\nconst optionGroups = (): Parameters<typeof cmdOpts.argDefs> => [\n cmdOpts.GlobalOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.S3AddressesOptions(),\n cmdOpts.AddressesOptions(),\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\nexport default function svcCreateLocalS3Command(): Command {\n const cmd = new Command(\"s3\")\n .description(\n \"Run Platforma Backend service as local process on current host (no docker container)\",\n )\n .allowUnknownOption()\n .allowExcessArguments();\n\n // Unknown flags are forwarded to the backend, so parse the raw token list\n // ourselves instead of letting commander reject them.\n cmd.argument(\"[args...]\", \"instance name followed by optional backend flags\");\n\n cmd.action(async () => {\n const args = cmd.args;\n const parser = new ArgParser(cmdOpts.argDefs(...optionGroups()));\n const parsed = parser.parse(args);\n\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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n const logger = util.createLogger(flags[\"log-level\"] || \"info\");\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\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 createOptions: 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 backendCommands: backendCommands,\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: { auth: { enabled: authEnabled, drivers: authDrivers } },\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\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 };\n\n logger.info(`Creating instance configuration, data directory and other stuff...`);\n core.createLocalS3(instanceName, createOptions);\n\n if (createOptions.binaryPath || createOptions.sourcesPath) {\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n return;\n }\n\n platforma\n .getBinary(logger, { version: flags.version })\n .then(() =>\n logger.info(`Instance '${instanceName}' was created. To start it run 'svc up' command`),\n )\n .catch(function (err: Error) {\n logger.error(err.message);\n });\n\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(\" \")}`);\n }\n });\n\n return cmd;\n}\n"],"mappings":"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"}
@@ -1,37 +1,37 @@
1
- import { AddressesFlags, AuthFlags, ConfigFlag, GlobalFlags, LicenseFlags, PlBinaryFlag, PlLogFileFlag, PlSourcesFlag, PlWorkdirFlag, S3AddressesFlags, StorageFlag, StorageLibraryURLFlag, StoragePrimaryURLFlag, StorageWorkPathFlag, VersionFlag } from "../../../../cmd-opts.js";
1
+ import { AddressesOptions, AuthOptions, ConfigOptions, GlobalOptions, LicenseOptions, PlBinaryOptions, PlLogFileOptions, PlSourcesOptions, PlWorkdirOptions, S3AddressesOptions, StorageLibraryURLOptions, StorageOptions, StoragePrimaryURLOptions, StorageWorkPathOptions, VersionOptions, argDefs } from "../../../../cmd-opts.js";
2
2
  import { createLogger } from "../../../../util.js";
3
3
  import state_default from "../../../../state.js";
4
4
  import { getBinary } from "../../../../platforma.js";
5
5
  import Core from "../../../../core.js";
6
6
  import { ArgParser } from "../arg-parser.js";
7
- import { Args, Command } from "@oclif/core";
7
+ import { Command } from "commander";
8
8
  import * as os$1 from "node:os";
9
9
  import path from "node:path";
10
10
  //#region src/commands/svc/create/local/s3.ts
11
- var Local = class Local extends Command {
12
- static description = "Run Platforma Backend service as local process on current host (no docker container)";
13
- static examples = ["<%= config.bin %> <%= command.id %>"];
14
- static flags = {
15
- ...GlobalFlags,
16
- ...VersionFlag,
17
- ...S3AddressesFlags,
18
- ...AddressesFlags,
19
- ...PlBinaryFlag,
20
- ...PlSourcesFlag,
21
- ...ConfigFlag,
22
- ...LicenseFlags,
23
- ...StorageFlag,
24
- ...StoragePrimaryURLFlag,
25
- ...StorageWorkPathFlag,
26
- ...StorageLibraryURLFlag,
27
- ...PlLogFileFlag,
28
- ...PlWorkdirFlag,
29
- ...AuthFlags
30
- };
31
- static args = { name: Args.string({ required: true }) };
32
- async run() {
33
- const parser = new ArgParser(Local.flags);
34
- const parsed = parser.parse(this.argv);
11
+ const optionGroups = () => [
12
+ GlobalOptions(),
13
+ VersionOptions(),
14
+ S3AddressesOptions(),
15
+ AddressesOptions(),
16
+ PlBinaryOptions(),
17
+ PlSourcesOptions(),
18
+ ConfigOptions(),
19
+ LicenseOptions(),
20
+ StorageOptions(),
21
+ StoragePrimaryURLOptions(),
22
+ StorageWorkPathOptions(),
23
+ StorageLibraryURLOptions(),
24
+ PlLogFileOptions(),
25
+ PlWorkdirOptions(),
26
+ AuthOptions()
27
+ ];
28
+ function svcCreateLocalS3Command() {
29
+ const cmd = new Command("s3").description("Run Platforma Backend service as local process on current host (no docker container)").allowUnknownOption().allowExcessArguments();
30
+ cmd.argument("[args...]", "instance name followed by optional backend flags");
31
+ cmd.action(async () => {
32
+ const args = cmd.args;
33
+ const parser = new ArgParser(argDefs(...optionGroups()));
34
+ const parsed = parser.parse(args);
35
35
  const errors = parser.validateRequired(parsed.knownFlags);
36
36
  if (errors.length > 0) throw new Error(`Validation errors:\n${errors.join("\n")}`);
37
37
  const instanceName = parsed.instanceName;
@@ -97,9 +97,10 @@ var Local = class Local extends Command {
97
97
  logger.error(err.message);
98
98
  });
99
99
  if (backendCommands.length > 0) logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(" ")}`);
100
- }
101
- };
100
+ });
101
+ return cmd;
102
+ }
102
103
  //#endregion
103
- export { Local as default };
104
+ export { svcCreateLocalS3Command as default };
104
105
 
105
106
  //# sourceMappingURL=s3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3.js","names":["cmdOpts.GlobalFlags","cmdOpts.VersionFlag","cmdOpts.S3AddressesFlags","cmdOpts.AddressesFlags","cmdOpts.PlBinaryFlag","cmdOpts.PlSourcesFlag","cmdOpts.ConfigFlag","cmdOpts.LicenseFlags","cmdOpts.StorageFlag","cmdOpts.StoragePrimaryURLFlag","cmdOpts.StorageWorkPathFlag","cmdOpts.StorageLibraryURLFlag","cmdOpts.PlLogFileFlag","cmdOpts.PlWorkdirFlag","cmdOpts.AuthFlags","util.createLogger","state","os"],"sources":["../../../../../src/commands/svc/create/local/s3.ts"],"sourcesContent":["import { Command, Args } from \"@oclif/core\";\nimport path from \"node:path\";\nimport type { createLocalS3Options } from \"../../../../core\";\nimport Core from \"../../../../core\";\nimport * as cmdOpts from \"../../../../cmd-opts\";\nimport * as util from \"../../../../util\";\nimport state from \"../../../../state\";\nimport * as platforma from \"../../../../platforma\";\nimport * as os from \"node:os\";\nimport { ArgParser } from \"../arg-parser\";\n\nexport default class Local extends Command {\n static override description =\n \"Run Platforma Backend service as local process on current host (no docker container)\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n ...cmdOpts.VersionFlag,\n\n ...cmdOpts.S3AddressesFlags,\n ...cmdOpts.AddressesFlags,\n ...cmdOpts.PlBinaryFlag,\n ...cmdOpts.PlSourcesFlag,\n\n ...cmdOpts.ConfigFlag,\n\n ...cmdOpts.LicenseFlags,\n\n ...cmdOpts.StorageFlag,\n ...cmdOpts.StoragePrimaryURLFlag,\n ...cmdOpts.StorageWorkPathFlag,\n ...cmdOpts.StorageLibraryURLFlag,\n\n ...cmdOpts.PlLogFileFlag,\n ...cmdOpts.PlWorkdirFlag,\n ...cmdOpts.AuthFlags,\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(Local.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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n const logger = util.createLogger(flags[\"log-level\"] || \"info\");\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\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 createOptions: 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 backendCommands: backendCommands,\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: { auth: { enabled: authEnabled, drivers: authDrivers } },\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\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 };\n\n logger.info(`Creating instance configuration, data directory and other stuff...`);\n core.createLocalS3(instanceName, createOptions);\n\n if (createOptions.binaryPath || createOptions.sourcesPath) {\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n return;\n }\n\n platforma\n .getBinary(logger, { version: flags.version })\n .then(() =>\n logger.info(`Instance '${instanceName}' was created. To start it run 'svc up' command`),\n )\n .catch(function (err: Error) {\n logger.error(err.message);\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"],"mappings":"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"}
1
+ {"version":3,"file":"s3.js","names":["cmdOpts.GlobalOptions","cmdOpts.VersionOptions","cmdOpts.S3AddressesOptions","cmdOpts.AddressesOptions","cmdOpts.PlBinaryOptions","cmdOpts.PlSourcesOptions","cmdOpts.ConfigOptions","cmdOpts.LicenseOptions","cmdOpts.StorageOptions","cmdOpts.StoragePrimaryURLOptions","cmdOpts.StorageWorkPathOptions","cmdOpts.StorageLibraryURLOptions","cmdOpts.PlLogFileOptions","cmdOpts.PlWorkdirOptions","cmdOpts.AuthOptions","cmdOpts.argDefs","util.createLogger","state","os"],"sources":["../../../../../src/commands/svc/create/local/s3.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport path from \"node:path\";\nimport type { createLocalS3Options } from \"../../../../core\";\nimport Core from \"../../../../core\";\nimport * as cmdOpts from \"../../../../cmd-opts\";\nimport * as util from \"../../../../util\";\nimport state from \"../../../../state\";\nimport * as platforma from \"../../../../platforma\";\nimport * as os from \"node:os\";\nimport { ArgParser } from \"../arg-parser\";\n\nconst optionGroups = (): Parameters<typeof cmdOpts.argDefs> => [\n cmdOpts.GlobalOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.S3AddressesOptions(),\n cmdOpts.AddressesOptions(),\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\nexport default function svcCreateLocalS3Command(): Command {\n const cmd = new Command(\"s3\")\n .description(\n \"Run Platforma Backend service as local process on current host (no docker container)\",\n )\n .allowUnknownOption()\n .allowExcessArguments();\n\n // Unknown flags are forwarded to the backend, so parse the raw token list\n // ourselves instead of letting commander reject them.\n cmd.argument(\"[args...]\", \"instance name followed by optional backend flags\");\n\n cmd.action(async () => {\n const args = cmd.args;\n const parser = new ArgParser(cmdOpts.argDefs(...optionGroups()));\n const parsed = parser.parse(args);\n\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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n const logger = util.createLogger(flags[\"log-level\"] || \"info\");\n const core = new Core(logger);\n core.mergeLicenseEnvs(flags);\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 createOptions: 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 backendCommands: backendCommands,\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: { auth: { enabled: authEnabled, drivers: authDrivers } },\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\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 };\n\n logger.info(`Creating instance configuration, data directory and other stuff...`);\n core.createLocalS3(instanceName, createOptions);\n\n if (createOptions.binaryPath || createOptions.sourcesPath) {\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n return;\n }\n\n platforma\n .getBinary(logger, { version: flags.version })\n .then(() =>\n logger.info(`Instance '${instanceName}' was created. To start it run 'svc up' command`),\n )\n .catch(function (err: Error) {\n logger.error(err.message);\n });\n\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(\" \")}`);\n }\n });\n\n return cmd;\n}\n"],"mappings":"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"}
@@ -5,35 +5,35 @@ const require_state = require("../../../state.cjs");
5
5
  const require_platforma = require("../../../platforma.cjs");
6
6
  const require_core = require("../../../core.cjs");
7
7
  const require_arg_parser = require("./arg-parser.cjs");
8
- let _oclif_core = require("@oclif/core");
8
+ let commander = require("commander");
9
9
  let node_os = require("node:os");
10
10
  node_os = require_runtime.__toESM(node_os);
11
11
  let node_path = require("node:path");
12
12
  node_path = require_runtime.__toESM(node_path);
13
13
  //#region src/commands/svc/create/local.ts
14
- var Local = class Local extends _oclif_core.Command {
15
- static description = "Run Platforma Backend service as local process on current host (no docker container)";
16
- static examples = ["<%= config.bin %> <%= command.id %>"];
17
- static flags = {
18
- ...require_cmd_opts.GlobalFlags,
19
- ...require_cmd_opts.VersionFlag,
20
- ...require_cmd_opts.AddressesFlags,
21
- ...require_cmd_opts.PlBinaryFlag,
22
- ...require_cmd_opts.PlSourcesFlag,
23
- ...require_cmd_opts.ConfigFlag,
24
- ...require_cmd_opts.LicenseFlags,
25
- ...require_cmd_opts.StorageFlag,
26
- ...require_cmd_opts.StoragePrimaryURLFlag,
27
- ...require_cmd_opts.StorageWorkPathFlag,
28
- ...require_cmd_opts.StorageLibraryURLFlag,
29
- ...require_cmd_opts.PlLogFileFlag,
30
- ...require_cmd_opts.PlWorkdirFlag,
31
- ...require_cmd_opts.AuthFlags
32
- };
33
- static args = { name: _oclif_core.Args.string({ required: true }) };
34
- async run() {
35
- const parser = new require_arg_parser.ArgParser(Local.flags);
36
- const parsed = parser.parse(this.argv);
14
+ const optionGroups = () => [
15
+ require_cmd_opts.GlobalOptions(),
16
+ require_cmd_opts.VersionOptions(),
17
+ require_cmd_opts.AddressesOptions(),
18
+ require_cmd_opts.PlBinaryOptions(),
19
+ require_cmd_opts.PlSourcesOptions(),
20
+ require_cmd_opts.ConfigOptions(),
21
+ require_cmd_opts.LicenseOptions(),
22
+ require_cmd_opts.StorageOptions(),
23
+ require_cmd_opts.StoragePrimaryURLOptions(),
24
+ require_cmd_opts.StorageWorkPathOptions(),
25
+ require_cmd_opts.StorageLibraryURLOptions(),
26
+ require_cmd_opts.PlLogFileOptions(),
27
+ require_cmd_opts.PlWorkdirOptions(),
28
+ require_cmd_opts.AuthOptions()
29
+ ];
30
+ function svcCreateLocalCommand() {
31
+ const cmd = new commander.Command("local").description("Run Platforma Backend service as local process on current host (no docker container)").allowUnknownOption().allowExcessArguments();
32
+ cmd.argument("[args...]", "instance name followed by optional backend flags");
33
+ cmd.action(async () => {
34
+ const args = cmd.args;
35
+ const parser = new require_arg_parser.ArgParser(require_cmd_opts.argDefs(...optionGroups()));
36
+ const parsed = parser.parse(args);
37
37
  const errors = parser.validateRequired(parsed.knownFlags);
38
38
  if (errors.length > 0) throw new Error(`Validation errors:\n${errors.join("\n")}`);
39
39
  const instanceName = parsed.instanceName;
@@ -94,9 +94,10 @@ var Local = class Local extends _oclif_core.Command {
94
94
  logger.error(err.message);
95
95
  });
96
96
  if (backendCommands.length > 0) logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(" ")}`);
97
- }
98
- };
97
+ });
98
+ return cmd;
99
+ }
99
100
  //#endregion
100
- exports.default = Local;
101
+ exports.default = svcCreateLocalCommand;
101
102
 
102
103
  //# sourceMappingURL=local.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"local.cjs","names":["Command","Args","ArgParser","Core","path","state","os"],"sources":["../../../../src/commands/svc/create/local.ts"],"sourcesContent":["import { Command, Args } from \"@oclif/core\";\nimport path from \"node:path\";\nimport type { createLocalOptions } from \"../../../core\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as util from \"../../../util\";\nimport state from \"../../../state\";\nimport * as platforma from \"../../../platforma\";\nimport * as os from \"node:os\";\nimport type * as types from \"../../../templates/types\";\nimport { ArgParser } from \"./arg-parser\";\n\nexport default class Local extends Command {\n static override description =\n \"Run Platforma Backend service as local process on current host (no docker container)\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n ...cmdOpts.VersionFlag,\n\n ...cmdOpts.AddressesFlags,\n ...cmdOpts.PlBinaryFlag,\n ...cmdOpts.PlSourcesFlag,\n\n ...cmdOpts.ConfigFlag,\n\n ...cmdOpts.LicenseFlags,\n\n ...cmdOpts.StorageFlag,\n ...cmdOpts.StoragePrimaryURLFlag,\n ...cmdOpts.StorageWorkPathFlag,\n ...cmdOpts.StorageLibraryURLFlag,\n\n ...cmdOpts.PlLogFileFlag,\n ...cmdOpts.PlWorkdirFlag,\n ...cmdOpts.AuthFlags,\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(Local.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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n // Set default values for flags that weren't specified\n if (!flags[\"log-level\"]) flags[\"log-level\"] = \"info\";\n if (!flags[\"grpc-port\"]) flags[\"grpc-port\"] = 6345;\n if (!flags[\"grpc-listen\"]) flags[\"grpc-listen\"] = \"127.0.0.1:6345\";\n if (!flags[\"monitoring-port\"]) flags[\"monitoring-port\"] = 9090;\n if (!flags[\"monitoring-listen\"]) flags[\"monitoring-listen\"] = \"127.0.0.1:9090\";\n if (!flags[\"debug-port\"]) flags[\"debug-port\"] = 9091;\n if (!flags[\"debug-listen\"]) flags[\"debug-listen\"] = \"127.0.0.1:9091\";\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 createOptions: createLocalOptions = {\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 backendCommands: backendCommands,\n\n configOptions: {\n grpc: { listen: flags[\"grpc-listen\"] },\n monitoring: { listen: flags[\"monitoring-listen\"] },\n debug: { listen: flags[\"debug-listen\"] },\n license: { value: flags[\"license\"], file: flags[\"license-file\"] },\n log: { path: flags[\"pl-log-file\"] },\n localRoot: storage,\n core: { auth: authOptions },\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\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 };\n\n core.createLocal(instanceName, createOptions);\n\n if (createOptions.binaryPath || createOptions.sourcesPath) {\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n return;\n }\n\n platforma\n .getBinary(logger, { version: flags.version })\n .then(() =>\n logger.info(`Instance '${instanceName}' was created. To start it run 'svc up' command`),\n )\n .catch(function (err: Error) {\n logger.error(err.message);\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"],"mappings":"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"}
1
+ {"version":3,"file":"local.cjs","names":["Command","ArgParser","Core","path","state","os"],"sources":["../../../../src/commands/svc/create/local.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport path from \"node:path\";\nimport type { createLocalOptions } from \"../../../core\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as util from \"../../../util\";\nimport state from \"../../../state\";\nimport * as platforma from \"../../../platforma\";\nimport * as os from \"node:os\";\nimport type * as types from \"../../../templates/types\";\nimport { ArgParser } from \"./arg-parser\";\n\nconst optionGroups = (): Parameters<typeof cmdOpts.argDefs> => [\n cmdOpts.GlobalOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.AddressesOptions(),\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\nexport default function svcCreateLocalCommand(): Command {\n const cmd = new Command(\"local\")\n .description(\n \"Run Platforma Backend service as local process on current host (no docker container)\",\n )\n .allowUnknownOption()\n .allowExcessArguments();\n\n // Unknown flags are forwarded to the backend, so parse the raw token list\n // ourselves instead of letting commander reject them.\n cmd.argument(\"[args...]\", \"instance name followed by optional backend flags\");\n\n cmd.action(async () => {\n const args = cmd.args;\n const parser = new ArgParser(cmdOpts.argDefs(...optionGroups()));\n const parsed = parser.parse(args);\n\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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n if (!flags[\"log-level\"]) flags[\"log-level\"] = \"info\";\n if (!flags[\"grpc-port\"]) flags[\"grpc-port\"] = 6345;\n if (!flags[\"grpc-listen\"]) flags[\"grpc-listen\"] = \"127.0.0.1:6345\";\n if (!flags[\"monitoring-port\"]) flags[\"monitoring-port\"] = 9090;\n if (!flags[\"monitoring-listen\"]) flags[\"monitoring-listen\"] = \"127.0.0.1:9090\";\n if (!flags[\"debug-port\"]) flags[\"debug-port\"] = 9091;\n if (!flags[\"debug-listen\"]) flags[\"debug-listen\"] = \"127.0.0.1:9091\";\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 createOptions: createLocalOptions = {\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 backendCommands: backendCommands,\n\n configOptions: {\n grpc: { listen: flags[\"grpc-listen\"] },\n monitoring: { listen: flags[\"monitoring-listen\"] },\n debug: { listen: flags[\"debug-listen\"] },\n license: { value: flags[\"license\"], file: flags[\"license-file\"] },\n log: { path: flags[\"pl-log-file\"] },\n localRoot: storage,\n core: { auth: authOptions },\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\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 };\n\n core.createLocal(instanceName, createOptions);\n\n if (createOptions.binaryPath || createOptions.sourcesPath) {\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n return;\n }\n\n platforma\n .getBinary(logger, { version: flags.version })\n .then(() =>\n logger.info(`Instance '${instanceName}' was created. To start it run 'svc up' command`),\n )\n .catch(function (err: Error) {\n logger.error(err.message);\n });\n\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(\" \")}`);\n }\n });\n\n return cmd;\n}\n"],"mappings":"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"}
@@ -1,36 +1,36 @@
1
- import { AddressesFlags, AuthFlags, ConfigFlag, GlobalFlags, LicenseFlags, PlBinaryFlag, PlLogFileFlag, PlSourcesFlag, PlWorkdirFlag, StorageFlag, StorageLibraryURLFlag, StoragePrimaryURLFlag, StorageWorkPathFlag, VersionFlag } from "../../../cmd-opts.js";
1
+ import { AddressesOptions, AuthOptions, ConfigOptions, GlobalOptions, LicenseOptions, PlBinaryOptions, PlLogFileOptions, PlSourcesOptions, PlWorkdirOptions, StorageLibraryURLOptions, StorageOptions, StoragePrimaryURLOptions, StorageWorkPathOptions, VersionOptions, argDefs } from "../../../cmd-opts.js";
2
2
  import { createLogger } from "../../../util.js";
3
3
  import state_default from "../../../state.js";
4
4
  import { getBinary } from "../../../platforma.js";
5
5
  import Core from "../../../core.js";
6
6
  import { ArgParser } from "./arg-parser.js";
7
- import { Args, Command } from "@oclif/core";
7
+ import { Command } from "commander";
8
8
  import * as os$1 from "node:os";
9
9
  import path from "node:path";
10
10
  //#region src/commands/svc/create/local.ts
11
- var Local = class Local extends Command {
12
- static description = "Run Platforma Backend service as local process on current host (no docker container)";
13
- static examples = ["<%= config.bin %> <%= command.id %>"];
14
- static flags = {
15
- ...GlobalFlags,
16
- ...VersionFlag,
17
- ...AddressesFlags,
18
- ...PlBinaryFlag,
19
- ...PlSourcesFlag,
20
- ...ConfigFlag,
21
- ...LicenseFlags,
22
- ...StorageFlag,
23
- ...StoragePrimaryURLFlag,
24
- ...StorageWorkPathFlag,
25
- ...StorageLibraryURLFlag,
26
- ...PlLogFileFlag,
27
- ...PlWorkdirFlag,
28
- ...AuthFlags
29
- };
30
- static args = { name: Args.string({ required: true }) };
31
- async run() {
32
- const parser = new ArgParser(Local.flags);
33
- const parsed = parser.parse(this.argv);
11
+ const optionGroups = () => [
12
+ GlobalOptions(),
13
+ VersionOptions(),
14
+ AddressesOptions(),
15
+ PlBinaryOptions(),
16
+ PlSourcesOptions(),
17
+ ConfigOptions(),
18
+ LicenseOptions(),
19
+ StorageOptions(),
20
+ StoragePrimaryURLOptions(),
21
+ StorageWorkPathOptions(),
22
+ StorageLibraryURLOptions(),
23
+ PlLogFileOptions(),
24
+ PlWorkdirOptions(),
25
+ AuthOptions()
26
+ ];
27
+ function svcCreateLocalCommand() {
28
+ const cmd = new Command("local").description("Run Platforma Backend service as local process on current host (no docker container)").allowUnknownOption().allowExcessArguments();
29
+ cmd.argument("[args...]", "instance name followed by optional backend flags");
30
+ cmd.action(async () => {
31
+ const args = cmd.args;
32
+ const parser = new ArgParser(argDefs(...optionGroups()));
33
+ const parsed = parser.parse(args);
34
34
  const errors = parser.validateRequired(parsed.knownFlags);
35
35
  if (errors.length > 0) throw new Error(`Validation errors:\n${errors.join("\n")}`);
36
36
  const instanceName = parsed.instanceName;
@@ -91,9 +91,10 @@ var Local = class Local extends Command {
91
91
  logger.error(err.message);
92
92
  });
93
93
  if (backendCommands.length > 0) logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(" ")}`);
94
- }
95
- };
94
+ });
95
+ return cmd;
96
+ }
96
97
  //#endregion
97
- export { Local as default };
98
+ export { svcCreateLocalCommand as default };
98
99
 
99
100
  //# sourceMappingURL=local.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","names":["cmdOpts.GlobalFlags","cmdOpts.VersionFlag","cmdOpts.AddressesFlags","cmdOpts.PlBinaryFlag","cmdOpts.PlSourcesFlag","cmdOpts.ConfigFlag","cmdOpts.LicenseFlags","cmdOpts.StorageFlag","cmdOpts.StoragePrimaryURLFlag","cmdOpts.StorageWorkPathFlag","cmdOpts.StorageLibraryURLFlag","cmdOpts.PlLogFileFlag","cmdOpts.PlWorkdirFlag","cmdOpts.AuthFlags","util.createLogger","state","os"],"sources":["../../../../src/commands/svc/create/local.ts"],"sourcesContent":["import { Command, Args } from \"@oclif/core\";\nimport path from \"node:path\";\nimport type { createLocalOptions } from \"../../../core\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as util from \"../../../util\";\nimport state from \"../../../state\";\nimport * as platforma from \"../../../platforma\";\nimport * as os from \"node:os\";\nimport type * as types from \"../../../templates/types\";\nimport { ArgParser } from \"./arg-parser\";\n\nexport default class Local extends Command {\n static override description =\n \"Run Platforma Backend service as local process on current host (no docker container)\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...cmdOpts.GlobalFlags,\n ...cmdOpts.VersionFlag,\n\n ...cmdOpts.AddressesFlags,\n ...cmdOpts.PlBinaryFlag,\n ...cmdOpts.PlSourcesFlag,\n\n ...cmdOpts.ConfigFlag,\n\n ...cmdOpts.LicenseFlags,\n\n ...cmdOpts.StorageFlag,\n ...cmdOpts.StoragePrimaryURLFlag,\n ...cmdOpts.StorageWorkPathFlag,\n ...cmdOpts.StorageLibraryURLFlag,\n\n ...cmdOpts.PlLogFileFlag,\n ...cmdOpts.PlWorkdirFlag,\n ...cmdOpts.AuthFlags,\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(Local.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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n // Set default values for flags that weren't specified\n if (!flags[\"log-level\"]) flags[\"log-level\"] = \"info\";\n if (!flags[\"grpc-port\"]) flags[\"grpc-port\"] = 6345;\n if (!flags[\"grpc-listen\"]) flags[\"grpc-listen\"] = \"127.0.0.1:6345\";\n if (!flags[\"monitoring-port\"]) flags[\"monitoring-port\"] = 9090;\n if (!flags[\"monitoring-listen\"]) flags[\"monitoring-listen\"] = \"127.0.0.1:9090\";\n if (!flags[\"debug-port\"]) flags[\"debug-port\"] = 9091;\n if (!flags[\"debug-listen\"]) flags[\"debug-listen\"] = \"127.0.0.1:9091\";\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 createOptions: createLocalOptions = {\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 backendCommands: backendCommands,\n\n configOptions: {\n grpc: { listen: flags[\"grpc-listen\"] },\n monitoring: { listen: flags[\"monitoring-listen\"] },\n debug: { listen: flags[\"debug-listen\"] },\n license: { value: flags[\"license\"], file: flags[\"license-file\"] },\n log: { path: flags[\"pl-log-file\"] },\n localRoot: storage,\n core: { auth: authOptions },\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\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 };\n\n core.createLocal(instanceName, createOptions);\n\n if (createOptions.binaryPath || createOptions.sourcesPath) {\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n return;\n }\n\n platforma\n .getBinary(logger, { version: flags.version })\n .then(() =>\n logger.info(`Instance '${instanceName}' was created. To start it run 'svc up' command`),\n )\n .catch(function (err: Error) {\n logger.error(err.message);\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"],"mappings":";;;;;;;;;;AAYA,IAAqB,QAArB,MAAqB,cAAc,QAAQ;CACzC,OAAgB,cACd;CAEF,OAAgB,WAAW,CAAC,sCAAsC;CAElE,OAAgB,QAAQ;EACtB,GAAGA;EACH,GAAGC;EAEH,GAAGC;EACH,GAAGC;EACH,GAAGC;EAEH,GAAGC;EAEH,GAAGC;EAEH,GAAGC;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;EAEH,GAAGC;EACH,GAAGC;EACH,GAAGC;EACJ;CAED,OAAgB,OAAO,EACrB,MAAM,KAAK,OAAO,EAAE,UAAU,MAAM,CAAC,EACtC;CAED,MAAa,MAAqB;EAEhC,MAAM,SAAS,IAAI,UAAU,MAAM,MAAM;EACzC,MAAM,SAAS,OAAO,MAAM,KAAK,KAAK;EAGtC,MAAM,SAAS,OAAO,iBAAiB,OAAO,WAAW;AACzD,MAAI,OAAO,SAAS,EAClB,OAAM,IAAI,MAAM,uBAAuB,OAAO,KAAK,KAAK,GAAG;EAG7D,MAAM,eAAe,OAAO;EAC5B,MAAM,QAAQ,OAAO;EACrB,MAAM,kBAAkB,OAAO;AAC/B,MAAI,MAAM,aACR,iBAAgB,KAAK,eAAe,MAAM,eAAe;AAI3D,MAAI,CAAC,MAAM,aAAc,OAAM,eAAe;AAC9C,MAAI,CAAC,MAAM,aAAc,OAAM,eAAe;AAC9C,MAAI,CAAC,MAAM,eAAgB,OAAM,iBAAiB;AAClD,MAAI,CAAC,MAAM,mBAAoB,OAAM,qBAAqB;AAC1D,MAAI,CAAC,MAAM,qBAAsB,OAAM,uBAAuB;AAC9D,MAAI,CAAC,MAAM,cAAe,OAAM,gBAAgB;AAChD,MAAI,CAAC,MAAM,gBAAiB,OAAM,kBAAkB;EAEpD,MAAM,SAASC,aAAkB,MAAM,gBAAgB,OAAO;EAC9D,MAAM,OAAO,IAAI,KAAK,OAAO;AAC7B,OAAK,iBAAiB,MAAM;EAE5B,MAAM,cAAc,MAAM;EAC1B,MAAM,cAA6C,cAC/C;GACE,SAAS;GACT,SAAS,KAAK,oBAAoB,OAAO,IAAI;GAC9C,GACD,KAAA;EAEJ,MAAM,UAAU,MAAM,UAAU,KAAK,KAAK,KAAK,MAAM,QAAQ,GAAGC,cAAM,YAAY,aAAa;EAE/F,MAAM,SAAyD,EAAE;AACjE,OAAK,MAAM,KAAK,MAAM,SAAS,EAAE,CAC/B,QAAO,KAAK,EAAE,UAAU,GAAG,CAAC;EAG9B,MAAM,gBAAoC;GACxC,aAAa,MAAM;GACnB,YAAY,MAAM;GAElB,SAAS,MAAM;GACf,YAAY,MAAM;GAClB,SAAS,MAAM;GAEf,YAAY,MAAM;GAClB,YAAY,MAAM;GAED;GAEjB,eAAe;IACb,MAAM,EAAE,QAAQ,MAAM,gBAAgB;IACtC,YAAY,EAAE,QAAQ,MAAM,sBAAsB;IAClD,OAAO,EAAE,QAAQ,MAAM,iBAAiB;IACxC,SAAS;KAAE,OAAO,MAAM;KAAY,MAAM,MAAM;KAAiB;IACjE,KAAK,EAAE,MAAM,MAAM,gBAAgB;IACnC,WAAW;IACX,MAAM,EAAE,MAAM,aAAa;IAC3B,UAAU,EACR,MAAM;KAAE,MAAM;KAAM,UAAU,MAAM;KAAiB,EACtD;IAID,QAAQ,KAAK,IAAIC,KAAG,MAAM,CAAC,SAAS,GAAG,EAAE;IAC1C;GACF;AAED,OAAK,YAAY,cAAc,cAAc;AAE7C,MAAI,cAAc,cAAc,cAAc,aAAa;AACzD,UAAO,KAAK,aAAa,aAAa,6CAA6C;AACnF;;AAGF,YACa,QAAQ,EAAE,SAAS,MAAM,SAAS,CAAC,CAC7C,WACC,OAAO,KAAK,aAAa,aAAa,iDAAiD,CACxF,CACA,MAAM,SAAU,KAAY;AAC3B,UAAO,MAAM,IAAI,QAAQ;IACzB;AAGJ,MAAI,gBAAgB,SAAS,EAC3B,QAAO,KAAK,4CAA4C,gBAAgB,KAAK,IAAI,GAAG"}
1
+ {"version":3,"file":"local.js","names":["cmdOpts.GlobalOptions","cmdOpts.VersionOptions","cmdOpts.AddressesOptions","cmdOpts.PlBinaryOptions","cmdOpts.PlSourcesOptions","cmdOpts.ConfigOptions","cmdOpts.LicenseOptions","cmdOpts.StorageOptions","cmdOpts.StoragePrimaryURLOptions","cmdOpts.StorageWorkPathOptions","cmdOpts.StorageLibraryURLOptions","cmdOpts.PlLogFileOptions","cmdOpts.PlWorkdirOptions","cmdOpts.AuthOptions","cmdOpts.argDefs","util.createLogger","state","os"],"sources":["../../../../src/commands/svc/create/local.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport path from \"node:path\";\nimport type { createLocalOptions } from \"../../../core\";\nimport Core from \"../../../core\";\nimport * as cmdOpts from \"../../../cmd-opts\";\nimport * as util from \"../../../util\";\nimport state from \"../../../state\";\nimport * as platforma from \"../../../platforma\";\nimport * as os from \"node:os\";\nimport type * as types from \"../../../templates/types\";\nimport { ArgParser } from \"./arg-parser\";\n\nconst optionGroups = (): Parameters<typeof cmdOpts.argDefs> => [\n cmdOpts.GlobalOptions(),\n cmdOpts.VersionOptions(),\n cmdOpts.AddressesOptions(),\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\nexport default function svcCreateLocalCommand(): Command {\n const cmd = new Command(\"local\")\n .description(\n \"Run Platforma Backend service as local process on current host (no docker container)\",\n )\n .allowUnknownOption()\n .allowExcessArguments();\n\n // Unknown flags are forwarded to the backend, so parse the raw token list\n // ourselves instead of letting commander reject them.\n cmd.argument(\"[args...]\", \"instance name followed by optional backend flags\");\n\n cmd.action(async () => {\n const args = cmd.args;\n const parser = new ArgParser(cmdOpts.argDefs(...optionGroups()));\n const parsed = parser.parse(args);\n\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 const backendCommands = parsed.unknownFlags;\n if (flags[\"log-level\"]) {\n backendCommands.push(`--log-level=${flags[\"log-level\"]}`);\n }\n\n if (!flags[\"log-level\"]) flags[\"log-level\"] = \"info\";\n if (!flags[\"grpc-port\"]) flags[\"grpc-port\"] = 6345;\n if (!flags[\"grpc-listen\"]) flags[\"grpc-listen\"] = \"127.0.0.1:6345\";\n if (!flags[\"monitoring-port\"]) flags[\"monitoring-port\"] = 9090;\n if (!flags[\"monitoring-listen\"]) flags[\"monitoring-listen\"] = \"127.0.0.1:9090\";\n if (!flags[\"debug-port\"]) flags[\"debug-port\"] = 9091;\n if (!flags[\"debug-listen\"]) flags[\"debug-listen\"] = \"127.0.0.1:9091\";\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 createOptions: createLocalOptions = {\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 backendCommands: backendCommands,\n\n configOptions: {\n grpc: { listen: flags[\"grpc-listen\"] },\n monitoring: { listen: flags[\"monitoring-listen\"] },\n debug: { listen: flags[\"debug-listen\"] },\n license: { value: flags[\"license\"], file: flags[\"license-file\"] },\n log: { path: flags[\"pl-log-file\"] },\n localRoot: storage,\n core: { auth: authOptions },\n storages: {\n work: { type: \"FS\", rootPath: flags[\"storage-work\"] },\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 };\n\n core.createLocal(instanceName, createOptions);\n\n if (createOptions.binaryPath || createOptions.sourcesPath) {\n logger.info(`Instance '${instanceName}' was created. To start it run 'up' command`);\n return;\n }\n\n platforma\n .getBinary(logger, { version: flags.version })\n .then(() =>\n logger.info(`Instance '${instanceName}' was created. To start it run 'svc up' command`),\n )\n .catch(function (err: Error) {\n logger.error(err.message);\n });\n\n if (backendCommands.length > 0) {\n logger.info(`Unknown flags will be passed to backend: ${backendCommands.join(\" \")}`);\n }\n });\n\n return cmd;\n}\n"],"mappings":"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"}