@rsdk/cli 4.2.4 → 4.3.0-next.0

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 (71) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/bin.js +10 -0
  3. package/dist/exception.d.ts +4 -0
  4. package/dist/exception.js +23 -0
  5. package/dist/exception.js.map +1 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +61 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/package.loader.d.ts +6 -0
  10. package/dist/package.loader.js +28 -0
  11. package/dist/package.loader.js.map +1 -0
  12. package/package.json +11 -6
  13. package/src/exception.ts +25 -0
  14. package/src/index.ts +71 -0
  15. package/src/package.loader.ts +36 -0
  16. package/dist/bin.d.ts +0 -2
  17. package/dist/bin.js +0 -21
  18. package/dist/bin.js.map +0 -1
  19. package/dist/kafka/commands/extract/extract.command.d.ts +0 -2
  20. package/dist/kafka/commands/extract/extract.command.js +0 -17
  21. package/dist/kafka/commands/extract/extract.command.js.map +0 -1
  22. package/dist/kafka/commands/extract/kafka-config.extractor.d.ts +0 -6
  23. package/dist/kafka/commands/extract/kafka-config.extractor.js +0 -40
  24. package/dist/kafka/commands/extract/kafka-config.extractor.js.map +0 -1
  25. package/dist/kafka/commands/extract/types.d.ts +0 -85
  26. package/dist/kafka/commands/extract/types.js +0 -3
  27. package/dist/kafka/commands/extract/types.js.map +0 -1
  28. package/dist/kafka/commands/schema/print-schema.d.ts +0 -5
  29. package/dist/kafka/commands/schema/print-schema.js +0 -11
  30. package/dist/kafka/commands/schema/print-schema.js.map +0 -1
  31. package/dist/kafka/commands/schema/schema.command.d.ts +0 -2
  32. package/dist/kafka/commands/schema/schema.command.js +0 -12
  33. package/dist/kafka/commands/schema/schema.command.js.map +0 -1
  34. package/dist/kafka/commands/sync/check-exist.d.ts +0 -7
  35. package/dist/kafka/commands/sync/check-exist.js +0 -57
  36. package/dist/kafka/commands/sync/check-exist.js.map +0 -1
  37. package/dist/kafka/commands/sync/context.d.ts +0 -3
  38. package/dist/kafka/commands/sync/context.js +0 -3
  39. package/dist/kafka/commands/sync/context.js.map +0 -1
  40. package/dist/kafka/commands/sync/create-topic.task.d.ts +0 -5
  41. package/dist/kafka/commands/sync/create-topic.task.js +0 -28
  42. package/dist/kafka/commands/sync/create-topic.task.js.map +0 -1
  43. package/dist/kafka/commands/sync/get-config.d.ts +0 -5
  44. package/dist/kafka/commands/sync/get-config.js +0 -28
  45. package/dist/kafka/commands/sync/get-config.js.map +0 -1
  46. package/dist/kafka/commands/sync/kafka.creds-provider.d.ts +0 -4
  47. package/dist/kafka/commands/sync/kafka.creds-provider.js +0 -22
  48. package/dist/kafka/commands/sync/kafka.creds-provider.js.map +0 -1
  49. package/dist/kafka/commands/sync/sync.command.d.ts +0 -2
  50. package/dist/kafka/commands/sync/sync.command.js +0 -49
  51. package/dist/kafka/commands/sync/sync.command.js.map +0 -1
  52. package/dist/kafka/config.schema.d.ts +0 -34
  53. package/dist/kafka/config.schema.js +0 -26
  54. package/dist/kafka/config.schema.js.map +0 -1
  55. package/dist/kafka/schemas/string-enum.d.ts +0 -2
  56. package/dist/kafka/schemas/string-enum.js +0 -14
  57. package/dist/kafka/schemas/string-enum.js.map +0 -1
  58. package/src/bin.ts +0 -26
  59. package/src/kafka/commands/extract/extract.command.ts +0 -16
  60. package/src/kafka/commands/extract/kafka-config.extractor.ts +0 -47
  61. package/src/kafka/commands/extract/types.ts +0 -101
  62. package/src/kafka/commands/schema/print-schema.ts +0 -15
  63. package/src/kafka/commands/schema/schema.command.ts +0 -10
  64. package/src/kafka/commands/sync/check-exist.ts +0 -68
  65. package/src/kafka/commands/sync/context.ts +0 -3
  66. package/src/kafka/commands/sync/create-topic.task.ts +0 -35
  67. package/src/kafka/commands/sync/get-config.ts +0 -25
  68. package/src/kafka/commands/sync/kafka.creds-provider.ts +0 -16
  69. package/src/kafka/commands/sync/sync.command.ts +0 -66
  70. package/src/kafka/config.schema.ts +0 -31
  71. package/src/kafka/schemas/string-enum.ts +0 -15
package/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.3.0-next.0](https://github.com/R-Vision/rsdk/compare/v4.2.5-next.0...v4.3.0-next.0) (2024-03-19)
7
+
8
+ ### Features
9
+
10
+ * reworked cli system ([745ebf5](https://github.com/R-Vision/rsdk/commit/745ebf53635de135a4a9083f47ce833efe2d4411))
11
+
12
+ ## [4.2.5-next.0](https://github.com/R-Vision/rsdk/compare/v4.2.4...v4.2.5-next.0) (2024-03-04)
13
+
14
+ **Note:** Version bump only for package @rsdk/cli
15
+
6
16
  ## [4.2.4](https://github.com/R-Vision/rsdk/compare/v4.2.3...v4.2.4) (2024-02-28)
7
17
 
8
18
  **Note:** Version bump only for package @rsdk/cli
package/bin.js ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ entrypoint для автоматической линковки в монорепе до сборки cli
5
+ */
6
+ const { execute } = require('./dist/index');
7
+
8
+ if (require.main === module) {
9
+ execute();
10
+ }
@@ -0,0 +1,4 @@
1
+ export declare class FailedToInstall extends Error {
2
+ constructor(packageName: string, rsdkCommand: string, cause?: any);
3
+ static assertError(error: Error, packageName: string, rsdkCommand: string): void;
4
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FailedToInstall = void 0;
4
+ class FailedToInstall extends Error {
5
+ constructor(packageName, rsdkCommand, cause) {
6
+ super('Failed to install ' + packageName, {
7
+ cause: {
8
+ packageName,
9
+ rsdkCommand,
10
+ cause,
11
+ },
12
+ });
13
+ this.name = this.constructor.name;
14
+ }
15
+ static assertError(error, packageName, rsdkCommand) {
16
+ const isFailedToInstall = error.message.startsWith('Failed to install');
17
+ if (isFailedToInstall) {
18
+ throw new FailedToInstall(packageName, rsdkCommand, error);
19
+ }
20
+ }
21
+ }
22
+ exports.FailedToInstall = FailedToInstall;
23
+ //# sourceMappingURL=exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exception.js","sourceRoot":"","sources":["../src/exception.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,WAAmB,EAAE,WAAmB,EAAE,KAAW;QAC/D,KAAK,CAAC,oBAAoB,GAAG,WAAW,EAAE;YACxC,KAAK,EAAE;gBACL,WAAW;gBACX,WAAW;gBACX,KAAK;aACN;SACF,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,KAAY,EACZ,WAAmB,EACnB,WAAmB;QAEnB,MAAM,iBAAiB,GAAI,KAAK,CAAC,OAAkB,CAAC,UAAU,CAC5D,mBAAmB,CACpB,CAAC;QACF,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,IAAI,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AAxBD,0CAwBC"}
@@ -0,0 +1 @@
1
+ export declare const execute: () => Promise<void>;
package/dist/index.js ADDED
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.execute = void 0;
4
+ const fs_1 = require("@parcel/fs");
5
+ const package_manager_1 = require("@parcel/package-manager");
6
+ const commander_1 = require("commander");
7
+ const enquirer_1 = require("enquirer");
8
+ const node_path_1 = require("node:path");
9
+ const exception_1 = require("./exception");
10
+ const package_loader_1 = require("./package.loader");
11
+ // TODO: сделать более понятным, переиспользуемым, консистентным и контролируем
12
+ process.env.RSDK_CLI_MODE = 'true';
13
+ process.title = 'rsdk';
14
+ const execute = async () => {
15
+ const rsdkCommand = process.argv.slice(2)[0];
16
+ if (!rsdkCommand || rsdkCommand.startsWith('-')) {
17
+ commander_1.program.parse();
18
+ return;
19
+ }
20
+ const cmd = rsdkCommand.split(':')[0];
21
+ const cmdPackage = '@rsdk/cli.cmd.' + cmd;
22
+ const packageManager = new package_manager_1.NodePackageManager(new fs_1.NodeFS(), (0, node_path_1.resolve)());
23
+ const resolveResult = await packageManager
24
+ .resolve(cmdPackage, (0, node_path_1.resolve)(), null)
25
+ .catch((error) => error);
26
+ try {
27
+ const isNotResolved = resolveResult instanceof Error;
28
+ if (isNotResolved) {
29
+ console.log(`Unable to resolve ${cmdPackage} cause:`, resolveResult.message);
30
+ const response = await (0, enquirer_1.prompt)({
31
+ type: 'confirm',
32
+ name: 'isInstall',
33
+ message: 'Install ' + cmdPackage + ' package?',
34
+ initial: true,
35
+ });
36
+ if (!response.isInstall) {
37
+ console.log('Install was aborted');
38
+ return;
39
+ }
40
+ await package_loader_1.PackageLoader.installPackage(packageManager, cmdPackage);
41
+ }
42
+ const resolvedPackage = isNotResolved
43
+ ? await packageManager.resolve(cmdPackage, (0, node_path_1.resolve)(), void 0)
44
+ : resolveResult;
45
+ const rsdkCliCommand = package_loader_1.PackageLoader.getEntry(resolvedPackage.resolved);
46
+ const cmds = rsdkCliCommand.getCommands();
47
+ for (const cmd of cmds) {
48
+ commander_1.program.addCommand(cmd);
49
+ }
50
+ }
51
+ catch (error) {
52
+ if (!(error instanceof Error)) {
53
+ throw error;
54
+ }
55
+ exception_1.FailedToInstall.assertError(error, cmdPackage, rsdkCommand);
56
+ throw error;
57
+ }
58
+ commander_1.program.parse();
59
+ };
60
+ exports.execute = execute;
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,6DAA6D;AAC7D,yCAAoC;AACpC,uCAAkC;AAClC,yCAAoC;AAEpC,2CAA8C;AAC9C,qDAAiD;AAEjD,+EAA+E;AAC/E,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC;AAEnC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AAEhB,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;IAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,mBAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,gBAAgB,GAAG,GAAG,CAAC;IAE1C,MAAM,cAAc,GAAG,IAAI,oCAAkB,CAAC,IAAI,WAAM,EAAE,EAAE,IAAA,mBAAO,GAAE,CAAC,CAAC;IAEvE,MAAM,aAAa,GAAG,MAAM,cAAc;SACvC,OAAO,CAAC,UAAU,EAAE,IAAA,mBAAO,GAAE,EAAE,IAAI,CAAC;SACpC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,aAAa,YAAY,KAAK,CAAC;QACrD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CACT,qBAAqB,UAAU,SAAS,EACxC,aAAa,CAAC,OAAO,CACtB,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAM,EAAyB;gBACpD,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW;gBAC9C,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,MAAM,8BAAa,CAAC,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,eAAe,GAAG,aAAa;YACnC,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,IAAA,mBAAO,GAAE,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC,CAAC,aAAa,CAAC;QAElB,MAAM,cAAc,GAAG,8BAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAExE,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;QAE1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,mBAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,2BAAe,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;IAED,mBAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC;AAxDW,QAAA,OAAO,WAwDlB"}
@@ -0,0 +1,6 @@
1
+ import type { PackageManager } from '@parcel/package-manager';
2
+ import type { RsdkCliCommand } from '@rsdk/cli.common';
3
+ export declare class PackageLoader {
4
+ static getEntry(cmdPackageName: string): RsdkCliCommand;
5
+ static installPackage(packageManager: PackageManager, cmdPackage: string): Promise<void>;
6
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PackageLoader = void 0;
4
+ const node_path_1 = require("node:path");
5
+ class PackageLoader {
6
+ static getEntry(cmdPackageName) {
7
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
8
+ return require(cmdPackageName).Cmd;
9
+ }
10
+ static async installPackage(packageManager, cmdPackage) {
11
+ const cliPackageJsonPath = require.resolve('../package.json', {
12
+ paths: [__dirname],
13
+ });
14
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
15
+ const cliPackageJson = require(cliPackageJsonPath);
16
+ // @ts-expect-error not declared method
17
+ await packageManager.install([
18
+ {
19
+ name: cmdPackage,
20
+ semVer: cliPackageJson.version,
21
+ },
22
+ ], (0, node_path_1.resolve)(''), {
23
+ saveDev: true,
24
+ });
25
+ }
26
+ }
27
+ exports.PackageLoader = PackageLoader;
28
+ //# sourceMappingURL=package.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.loader.js","sourceRoot":"","sources":["../src/package.loader.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AAEpC,MAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,cAAsB;QACpC,8DAA8D;QAC9D,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,cAA8B,EAC9B,UAAkB;QAElB,MAAM,kBAAkB,GAAW,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACpE,KAAK,EAAE,CAAC,SAAS,CAAC;SACnB,CAAC,CAAC;QAEH,8DAA8D;QAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEnD,uCAAuC;QACvC,MAAM,cAAc,CAAC,OAAO,CAC1B;YACE;gBACE,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,cAAc,CAAC,OAAO;aAC/B;SACF,EACD,IAAA,mBAAO,EAAC,EAAE,CAAC,EACX;YACE,OAAO,EAAE,IAAI;SACd,CACF,CAAC;IACJ,CAAC;CACF;AA/BD,sCA+BC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@rsdk/cli",
3
- "version": "4.2.4",
3
+ "version": "4.3.0-next.0",
4
4
  "description": "entry package to cli functions",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
- "rsdk": "dist/bin.js"
7
+ "rsdk": "bin.js"
8
8
  },
9
9
  "publishConfig": {
10
10
  "access": "public"
@@ -15,15 +15,20 @@
15
15
  ],
16
16
  "license": "Apache License 2.0",
17
17
  "dependencies": {
18
- "@sinclair/typebox": "^0.30.4",
19
- "commander": "^11.0.0",
18
+ "@parcel/fs": "^2.11.0",
19
+ "@parcel/package-manager": "^2.11.0",
20
+ "@sinclair/typebox": "^0.32.13",
21
+ "commander": "^12.0.0",
20
22
  "dotenv": "^16.3.1",
23
+ "enquirer": "^2.4.1",
21
24
  "kafkajs": "^2.2.4",
22
25
  "listr2": "^6.6.1",
23
26
  "yaml": "^2.3.1"
24
27
  },
25
28
  "peerDependencies": {
26
- "@rsdk/core": "^4.2.4"
29
+ "@rsdk/cli.cmd.kafka": "^4.3.0-next.0",
30
+ "@rsdk/cli.common": "^4.3.0-next.0",
31
+ "@rsdk/core": "^4.3.0-next.0"
27
32
  },
28
- "gitHead": "cf72bfa9b31f49827d069de835cde28478f7a395"
33
+ "gitHead": "68619cc6fc60db01568eede7df182d9882e857dd"
29
34
  }
@@ -0,0 +1,25 @@
1
+ export class FailedToInstall extends Error {
2
+ constructor(packageName: string, rsdkCommand: string, cause?: any) {
3
+ super('Failed to install ' + packageName, {
4
+ cause: {
5
+ packageName,
6
+ rsdkCommand,
7
+ cause,
8
+ },
9
+ });
10
+ this.name = this.constructor.name;
11
+ }
12
+
13
+ static assertError(
14
+ error: Error,
15
+ packageName: string,
16
+ rsdkCommand: string,
17
+ ): void {
18
+ const isFailedToInstall = (error.message as string).startsWith(
19
+ 'Failed to install',
20
+ );
21
+ if (isFailedToInstall) {
22
+ throw new FailedToInstall(packageName, rsdkCommand, error);
23
+ }
24
+ }
25
+ }
package/src/index.ts ADDED
@@ -0,0 +1,71 @@
1
+ import { NodeFS } from '@parcel/fs';
2
+ import { NodePackageManager } from '@parcel/package-manager';
3
+ import { program } from 'commander';
4
+ import { prompt } from 'enquirer';
5
+ import { resolve } from 'node:path';
6
+
7
+ import { FailedToInstall } from './exception';
8
+ import { PackageLoader } from './package.loader';
9
+
10
+ // TODO: сделать более понятным, переиспользуемым, консистентным и контролируем
11
+ process.env.RSDK_CLI_MODE = 'true';
12
+
13
+ process.title = 'rsdk';
14
+
15
+ export const execute = async (): Promise<void> => {
16
+ const rsdkCommand = process.argv.slice(2)[0];
17
+
18
+ if (!rsdkCommand || rsdkCommand.startsWith('-')) {
19
+ program.parse();
20
+ return;
21
+ }
22
+ const cmd = rsdkCommand.split(':')[0];
23
+ const cmdPackage = '@rsdk/cli.cmd.' + cmd;
24
+
25
+ const packageManager = new NodePackageManager(new NodeFS(), resolve());
26
+
27
+ const resolveResult = await packageManager
28
+ .resolve(cmdPackage, resolve(), null)
29
+ .catch((error) => error);
30
+
31
+ try {
32
+ const isNotResolved = resolveResult instanceof Error;
33
+ if (isNotResolved) {
34
+ console.log(
35
+ `Unable to resolve ${cmdPackage} cause:`,
36
+ resolveResult.message,
37
+ );
38
+ const response = await prompt<{ isInstall: boolean }>({
39
+ type: 'confirm',
40
+ name: 'isInstall',
41
+ message: 'Install ' + cmdPackage + ' package?',
42
+ initial: true,
43
+ });
44
+
45
+ if (!response.isInstall) {
46
+ console.log('Install was aborted');
47
+ return;
48
+ }
49
+ await PackageLoader.installPackage(packageManager, cmdPackage);
50
+ }
51
+ const resolvedPackage = isNotResolved
52
+ ? await packageManager.resolve(cmdPackage, resolve(), void 0)
53
+ : resolveResult;
54
+
55
+ const rsdkCliCommand = PackageLoader.getEntry(resolvedPackage.resolved);
56
+
57
+ const cmds = rsdkCliCommand.getCommands();
58
+
59
+ for (const cmd of cmds) {
60
+ program.addCommand(cmd);
61
+ }
62
+ } catch (error: any) {
63
+ if (!(error instanceof Error)) {
64
+ throw error;
65
+ }
66
+ FailedToInstall.assertError(error, cmdPackage, rsdkCommand);
67
+ throw error;
68
+ }
69
+
70
+ program.parse();
71
+ };
@@ -0,0 +1,36 @@
1
+ import type { PackageManager } from '@parcel/package-manager';
2
+ import type { RsdkCliCommand } from '@rsdk/cli.common';
3
+ import { resolve } from 'node:path';
4
+
5
+ export class PackageLoader {
6
+ static getEntry(cmdPackageName: string): RsdkCliCommand {
7
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
8
+ return require(cmdPackageName).Cmd;
9
+ }
10
+
11
+ static async installPackage(
12
+ packageManager: PackageManager,
13
+ cmdPackage: string,
14
+ ): Promise<void> {
15
+ const cliPackageJsonPath: string = require.resolve('../package.json', {
16
+ paths: [__dirname],
17
+ });
18
+
19
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
20
+ const cliPackageJson = require(cliPackageJsonPath);
21
+
22
+ // @ts-expect-error not declared method
23
+ await packageManager.install(
24
+ [
25
+ {
26
+ name: cmdPackage,
27
+ semVer: cliPackageJson.version,
28
+ },
29
+ ],
30
+ resolve(''),
31
+ {
32
+ saveDev: true,
33
+ },
34
+ );
35
+ }
36
+ }
package/dist/bin.d.ts DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
package/dist/bin.js DELETED
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const commander_1 = require("commander");
5
- const extract_command_1 = require("./kafka/commands/extract/extract.command");
6
- const schema_command_1 = require("./kafka/commands/schema/schema.command");
7
- const sync_command_1 = require("./kafka/commands/sync/sync.command");
8
- // TODO: сделать более понятным, переиспользуемым, консистентным и контролируем
9
- process.env.RSDK_CLI_MODE = 'true';
10
- const kafkaCommand = new commander_1.Command('kafka');
11
- commander_1.program.addCommand(kafkaCommand
12
- .addCommand(sync_command_1.KafkaSyncCommand)
13
- .addCommand(extract_command_1.KafkaExtractCommand)
14
- .addCommand(schema_command_1.SchemaCommand));
15
- const execute = () => {
16
- commander_1.program.parse();
17
- };
18
- if (require.main === module) {
19
- execute();
20
- }
21
- //# sourceMappingURL=bin.js.map
package/dist/bin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AACA,yCAA6C;AAE7C,8EAA+E;AAC/E,2EAAuE;AACvE,qEAAsE;AAEtE,+EAA+E;AAC/E,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC;AAEnC,MAAM,YAAY,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC,CAAC;AAE1C,mBAAO,CAAC,UAAU,CAChB,YAAY;KACT,UAAU,CAAC,+BAAgB,CAAC;KAC5B,UAAU,CAAC,qCAAmB,CAAC;KAC/B,UAAU,CAAC,8BAAa,CAAC,CAC7B,CAAC;AAEF,MAAM,OAAO,GAAG,GAAS,EAAE;IACzB,mBAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC;AAEF,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const KafkaExtractCommand: Command;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KafkaExtractCommand = void 0;
4
- const commander_1 = require("commander");
5
- const print_schema_1 = require("../schema/print-schema");
6
- const kafka_config_extractor_1 = require("./kafka-config.extractor");
7
- exports.KafkaExtractCommand = new commander_1.Command('extract')
8
- .description('extract kafka.yml from rsdk.json')
9
- .option('--with-schema', 'print and include $schema to yaml for autocomplete')
10
- .action(async (_, cmd) => {
11
- const options = cmd.opts();
12
- if (options.withSchema) {
13
- await (0, print_schema_1.printSchema)({ outFile: print_schema_1.printDefaultOutFile, pretty: true });
14
- }
15
- await kafka_config_extractor_1.KafkaConfigExtractor.extractCommand(print_schema_1.printDefaultOutFile);
16
- });
17
- //# sourceMappingURL=extract.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.command.js","sourceRoot":"","sources":["../../../../src/kafka/commands/extract/extract.command.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,yDAA0E;AAE1E,qEAAgE;AAEnD,QAAA,mBAAmB,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;KACtD,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,oDAAoD,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAY,EAAE,EAAE;IAChC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAA,0BAAW,EAAC,EAAE,OAAO,EAAE,kCAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,6CAAoB,CAAC,cAAc,CAAC,kCAAmB,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { Static } from '@sinclair/typebox';
2
- import type { CliKafkaConfigSchema } from '../../config.schema';
3
- export declare class KafkaConfigExtractor {
4
- static extractCommand(includeSchema?: string): Promise<void>;
5
- static extract(): Promise<Static<typeof CliKafkaConfigSchema>>;
6
- }
@@ -1,40 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.KafkaConfigExtractor = void 0;
7
- const core_1 = require("@rsdk/core");
8
- const promises_1 = require("node:fs/promises");
9
- const node_path_1 = require("node:path");
10
- const yaml_1 = __importDefault(require("yaml"));
11
- class KafkaConfigExtractor {
12
- static async extractCommand(includeSchema) {
13
- const resultKafkaConfig = await this.extract();
14
- await (0, promises_1.writeFile)((0, node_path_1.resolve)('kafka.yml'), yaml_1.default.stringify({
15
- ...(includeSchema && { $schema: includeSchema }),
16
- ...resultKafkaConfig,
17
- }));
18
- }
19
- static async extract() {
20
- const pathToRsdkJson = (0, node_path_1.resolve)('autodoc/rsdk.json');
21
- const rsdkJson = JSON.parse(await (0, promises_1.readFile)(pathToRsdkJson, 'utf8'));
22
- const kafkaMetadata = rsdkJson.rsdkMetadata
23
- .filter(({ scope }) => scope === 'kafka-topic')
24
- .map(({ value }) => value);
25
- const topics = kafkaMetadata.map((meta) => {
26
- const topicName = meta.topicName;
27
- if (!topicName) {
28
- throw new core_1.InputException('topicName must be provided', {
29
- details: meta,
30
- });
31
- }
32
- return {
33
- name: topicName,
34
- };
35
- });
36
- return { topics };
37
- }
38
- }
39
- exports.KafkaConfigExtractor = KafkaConfigExtractor;
40
- //# sourceMappingURL=kafka-config.extractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kafka-config.extractor.js","sourceRoot":"","sources":["../../../../src/kafka/commands/extract/kafka-config.extractor.ts"],"names":[],"mappings":";;;;;;AAAA,qCAA4C;AAE5C,+CAAuD;AACvD,yCAAoC;AACpC,gDAAwB;AAMxB,MAAa,oBAAoB;IAC/B,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,aAAsB;QAChD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAE/C,MAAM,IAAA,oBAAS,EACb,IAAA,mBAAO,EAAC,WAAW,CAAC,EACpB,cAAI,CAAC,SAAS,CAAC;YACb,GAAG,CAAC,aAAa,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YAChD,GAAG,iBAAiB;SACrB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO;QAClB,MAAM,cAAc,GAAG,IAAA,mBAAO,EAAC,mBAAmB,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAS,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAE1E,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY;aACxC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC;aAC9C,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAE7B,MAAM,MAAM,GACV,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,qBAAc,CAAC,4BAA4B,EAAE;oBACrD,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,SAAS;aAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AApCD,oDAoCC"}
@@ -1,85 +0,0 @@
1
- export interface Root {
2
- metadata: Metadata;
3
- rsdkMetadata: RsdkMetadaum[];
4
- }
5
- export interface Metadata {
6
- name: string;
7
- version: string;
8
- description: string;
9
- protocols: string[];
10
- config: Config;
11
- }
12
- export interface Config {
13
- prefix: string;
14
- sections: Section[];
15
- sources: any[];
16
- properties: any[];
17
- }
18
- export interface Section {
19
- tags?: string[];
20
- constructorName: string;
21
- properties: Property[];
22
- name?: string;
23
- }
24
- export interface Property {
25
- expectedInEnv: boolean;
26
- key: string;
27
- description: string;
28
- parser: Parser;
29
- defaultValue: any;
30
- }
31
- export interface Parser {
32
- type: string;
33
- description: string;
34
- }
35
- export interface RsdkMetadaum {
36
- scope: string;
37
- value: Value;
38
- }
39
- export interface Value {
40
- global?: boolean;
41
- imports?: Import[];
42
- providers?: Provider2[];
43
- exports?: string[];
44
- token?: string;
45
- partitionKeyField: any;
46
- topicName?: string;
47
- group?: string;
48
- type?: number;
49
- eventType?: EventType;
50
- options?: Options3;
51
- constructorName?: string;
52
- }
53
- export interface Import {
54
- providers: Provider[];
55
- exports: Export[];
56
- }
57
- export interface Provider {
58
- inject: Inject | undefined[];
59
- }
60
- export interface Inject {
61
- optional: boolean;
62
- }
63
- export interface Export {
64
- inject: Inject2 | undefined[];
65
- }
66
- export interface Inject2 {
67
- optional: boolean;
68
- }
69
- export interface Provider2 {
70
- provide: string;
71
- useValue: UseValue;
72
- }
73
- export interface UseValue {
74
- context: string;
75
- }
76
- export interface EventType {
77
- $group: string;
78
- $partitionKeyField: any;
79
- $type: string;
80
- }
81
- export interface Options3 {
82
- key: string;
83
- scope: string;
84
- description: string;
85
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kafka/commands/extract/types.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- export declare const printDefaultOutFile = "./kafka.schema.json";
2
- export declare function printSchema(options?: {
3
- outFile?: string;
4
- pretty?: boolean;
5
- }): Promise<void>;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.printSchema = exports.printDefaultOutFile = void 0;
4
- const promises_1 = require("node:fs/promises");
5
- const config_schema_1 = require("../../config.schema");
6
- exports.printDefaultOutFile = './kafka.schema.json';
7
- async function printSchema(options) {
8
- await (0, promises_1.writeFile)(options?.outFile ?? exports.printDefaultOutFile, JSON.stringify(config_schema_1.CliKafkaConfigSchema, null, options?.pretty ? 2 : 0));
9
- }
10
- exports.printSchema = printSchema;
11
- //# sourceMappingURL=print-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print-schema.js","sourceRoot":"","sources":["../../../../src/kafka/commands/schema/print-schema.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAE7C,uDAA2D;AAE9C,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAElD,KAAK,UAAU,WAAW,CAAC,OAGjC;IACC,MAAM,IAAA,oBAAS,EACb,OAAO,EAAE,OAAO,IAAI,2BAAmB,EACvC,IAAI,CAAC,SAAS,CAAC,oCAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AARD,kCAQC"}
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const SchemaCommand: Command;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SchemaCommand = void 0;
4
- const commander_1 = require("commander");
5
- const print_schema_1 = require("./print-schema");
6
- exports.SchemaCommand = new commander_1.Command('schema')
7
- .description('print json schema for kafka.yml')
8
- .option('-o, --out-file', 'output file name', 'kafka.schema.json')
9
- .action(async (_, cmd) => {
10
- await (0, print_schema_1.printSchema)(cmd.opts().outFile);
11
- });
12
- //# sourceMappingURL=schema.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.command.js","sourceRoot":"","sources":["../../../../src/kafka/commands/schema/schema.command.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,iDAA6C;AAEhC,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAY,EAAE,EAAE;IAChC,MAAM,IAAA,0BAAW,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- import type { Static } from '@sinclair/typebox';
2
- import type { Admin } from 'kafkajs';
3
- import type { Listr, ListrRendererFactory, ListrTaskWrapper } from 'listr2';
4
- import type { TopicSchema } from '../../config.schema';
5
- export declare class KafkaTopicConfigurator {
6
- static configure(topic: Static<typeof TopicSchema>, admin: Admin, parentTask: ListrTaskWrapper<unknown, ListrRendererFactory>): Promise<Listr | void>;
7
- }