@rsdk/cli.common 5.3.0-next.0 → 5.3.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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
+ ## [5.3.0-next.2](https://github.com/R-Vision/rsdk/compare/v5.3.0-next.1...v5.3.0-next.2) (2024-10-31)
7
+
8
+ ### Bug Fixes
9
+
10
+ * **cli.common:** correctly value priority ([#294](https://github.com/R-Vision/rsdk/issues/294)) ([9cc5962](https://github.com/R-Vision/rsdk/commit/9cc5962120ca59ca96a5598998aee256cd02bfb0))
11
+
12
+ ## [5.3.0-next.1](https://github.com/R-Vision/rsdk/compare/v5.3.0-next.0...v5.3.0-next.1) (2024-10-29)
13
+
14
+ **Note:** Version bump only for package @rsdk/cli.common
15
+
6
16
  ## [5.3.0-next.0](https://github.com/R-Vision/rsdk/compare/v5.2.1-next.2...v5.3.0-next.0) (2024-10-23)
7
17
 
8
18
  **Note:** Version bump only for package @rsdk/cli.common
package/dist/cmd.core.js CHANGED
@@ -20,6 +20,65 @@ function getRootCommand(globalMetadata) {
20
20
  function createEnvKey(optionMetadata) {
21
21
  return lodash_1.default.snakeCase(`${optionMetadata.name}${optionMetadata.strategy === Boolean ? '_enabled' : ''}`).toUpperCase();
22
22
  }
23
+ /**
24
+ * Приоритет значений env -> flagValue -> defaultValue
25
+ * Сделано намеренно так как в кейсе использования локально проблем с ENV вряд ли будет.
26
+ * А вот в кубе например удобнее редактировать ConfigMap и добавить туда ключ, чем редактировать Deployment
27
+ * @param {OptionMetadata} optionMetadata
28
+ * @param {OptionValues} opts
29
+ * @returns {any}
30
+ */
31
+ function extractValue(optionMetadata, opts) {
32
+ // Создаем ключ для переменной окружения на основе метаданных опции
33
+ const envKey = createEnvKey(optionMetadata);
34
+ // Проверяем, существует ли значение для данного ключа в переменных окружения
35
+ const envHasValue = env_provider_1.Env.has(envKey);
36
+ // Преобразуем имя опции в camelCase для использования в объекте opts
37
+ const optsKey = lodash_1.default.camelCase(optionMetadata.name);
38
+ // Получаем значение флага из объекта opts
39
+ const flagValue = opts[optsKey];
40
+ // Проверяем, был ли предоставлен флаг в объекте opts
41
+ const flagProvided = Object.hasOwn(opts, optsKey);
42
+ // Если значение переменной окружения существует
43
+ if (envHasValue) {
44
+ // Получаем значение переменной окружения
45
+ const envValue = env_provider_1.Env.get(envKey);
46
+ // Если флаг был предоставлен, выводим предупреждение о переопределении значения флага значением переменной окружения
47
+ if (flagProvided) {
48
+ cliLogger.warn('Env value override flag value', {
49
+ optionMetadata,
50
+ envKey,
51
+ envValue,
52
+ flagValue,
53
+ });
54
+ }
55
+ // Возвращаем значение переменной окружения
56
+ return envValue;
57
+ }
58
+ // Если значение переменной окружения не предоставлено, выводим отладочное сообщение
59
+ cliLogger.trace('Env value not provided', { key: optsKey, envKey });
60
+ // Если флаг был предоставлен, выводим отладочное сообщение и возвращаем значение флага
61
+ if (flagProvided) {
62
+ cliLogger.trace('Use flag value', {
63
+ key: optsKey,
64
+ flagValue,
65
+ opts,
66
+ envHasValue,
67
+ envKey,
68
+ });
69
+ return flagValue;
70
+ }
71
+ // Если ни значение переменной окружения, ни флаг не предоставлены, выводим отладочное сообщение и возвращаем значение по умолчанию
72
+ cliLogger.trace('Use default value', {
73
+ key: optsKey,
74
+ flagValue,
75
+ opts,
76
+ envHasValue,
77
+ envKey,
78
+ defaultValue: optionMetadata.defaultValue,
79
+ });
80
+ return optionMetadata.defaultValue;
81
+ }
23
82
  function createCommandHandler(argMap, handler) {
24
83
  return (__, cmd) => {
25
84
  const opts = cmd.opts();
@@ -32,36 +91,7 @@ function createCommandHandler(argMap, handler) {
32
91
  cliLogger.trace('handle arg', {
33
92
  optionMetadata,
34
93
  });
35
- const key = lodash_1.default.camelCase(optionMetadata.name);
36
- const v = opts[key];
37
- const isNotProvided = Object.hasOwn(opts, key);
38
- const isDefaultValue = optionMetadata.defaultValue !== undefined &&
39
- v === optionMetadata.defaultValue;
40
- const isNotDefaultValue = !isDefaultValue;
41
- const envKey = createEnvKey(optionMetadata);
42
- cliLogger.trace('use env key for option', {
43
- envKey,
44
- });
45
- const envHasValue = env_provider_1.Env.has(envKey);
46
- const envValue = env_provider_1.Env.get(envKey);
47
- cliLogger.trace('option value state', {
48
- isNotProvided,
49
- isDefaultValue,
50
- envKey,
51
- envValue,
52
- optionMetadata,
53
- });
54
- if (isNotDefaultValue && envHasValue && envValue !== v) {
55
- cliLogger.warn('Flag value override env value', {
56
- optionMetadata,
57
- envKey,
58
- envValue,
59
- isDefaultValue,
60
- flagValue: v,
61
- });
62
- }
63
- // Если нам пробросили не значение по умолчанию - берем v, иначе берем значение из env или проброшенное
64
- const result = isNotDefaultValue ? v : envValue ?? v;
94
+ const result = extractValue(optionMetadata, opts);
65
95
  if (optionMetadata.parser) {
66
96
  return optionMetadata.parser(result);
67
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.core.js","sourceRoot":"","sources":["../src/cmd.core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmd.core.js","sourceRoot":"","sources":["../src/cmd.core.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA8C;AAE9C,yCAAoC;AACpC,oDAAuB;AAEvB,iDAAqC;AAErC,mCAAmC;AAEnC,MAAM,SAAS,GAAG,uBAAa,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAG3D,SAAS,cAAc,CAAC,cAAmB;IACzC,MAAM,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,gBAAQ,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;IACT,CAAC;IACD,OAAO,IAAI,mBAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CAAC,cAA8B;IAClD,OAAO,gBAAC,CAAC,SAAS,CAChB,GAAG,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CACjF,CAAC,WAAW,EAAE,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,cAA8B,EAAE,IAAkB;IACtE,mEAAmE;IACnE,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IAE5C,6EAA6E;IAC7E,MAAM,WAAW,GAAG,kBAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpC,qEAAqE;IACrE,MAAM,OAAO,GAAG,gBAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAEjD,0CAA0C;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAEhC,qDAAqD;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAElD,gDAAgD;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,yCAAyC;QACzC,MAAM,QAAQ,GAAG,kBAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEjC,qHAAqH;QACrH,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAC9C,cAAc;gBACd,MAAM;gBACN,QAAQ;gBACR,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAED,2CAA2C;QAC3C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,oFAAoF;IACpF,SAAS,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAEpE,uFAAuF;IACvF,IAAI,YAAY,EAAE,CAAC;QACjB,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAChC,GAAG,EAAE,OAAO;YACZ,SAAS;YACT,IAAI;YACJ,WAAW;YACX,MAAM;SACP,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mIAAmI;IACnI,SAAS,CAAC,KAAK,CAAC,mBAAmB,EAAE;QACnC,GAAG,EAAE,OAAO;QACZ,SAAS;QACT,IAAI;QACJ,WAAW;QACX,MAAM;QACN,YAAY,EAAE,cAAc,CAAC,YAAY;KAC1C,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,YAAY,CAAC;AACrC,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAA2C,EAC3C,OAAgC;IAEhC,OAAO,CAAC,EAAE,EAAE,GAAY,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAExB,MAAM,iBAAiB,GAGjB,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;YAClD,KAAK;YACL,cAAc;SACf,CAAC,CAAC,CAAC;QACJ,MAAM,aAAa,GACjB,gBAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzC,MAAM,IAAI,GAA2B,aAAa,CAAC,GAAG,CACpD,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;YACrB,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE;gBAC5B,cAAc;aACf,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAElD,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAWD,SAAS,YAAY,CACnB,QAA6C;IAE7C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACnC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,KAAK,gBAAQ,CAAC,KAAK,CAAC;YACpB,KAAK,gBAAQ,CAAC,YAAY,CAAC;YAC3B,KAAK,gBAAQ,CAAC,MAAM;gBAClB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;oBACjC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;oBACrC,GAAG,IAAI,CAAC,KAAK;iBACd,CAAC,CAAC;QACP,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,IAAI,GAAG,EAAkC,CAAC,CAAC;AAChD,CAAC;AAEM,MAAM,mBAAmB,GAAG,CAAC,GAAQ,EAAa,EAAE;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjE,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEnD,MAAM,GAAG,GAAoB,KAAK,CAAC;IAEnC,gEAAgE;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CACpC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,gBAAQ,CAAC,MAAM,CAC7C,CAAC;QACF,IAAI,cAAc,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE;gBAC7C,KAAK,EAAE;oBACL,cAAc;iBACf;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,mBAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CACvD,WAAW,CAAC,WAAW,CACxB,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEtC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,OAAO,CAAC,MAAM,CACZ,KAAK,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EACjE,GAAG,MAAM,CAAC,WAAW,QAAQ,YAAY,CAAC,MAAM,CAAC,UAAU,EAC3D,MAAM,CAAC,YAAY,CACpB,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,MAAM,CACZ,oBAAoB,CAClB,MAAM;QACN,4FAA4F;QAC5F,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CACrC,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AA5DW,QAAA,mBAAmB,uBA4D9B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/cli.common",
3
- "version": "5.3.0-next.0",
3
+ "version": "5.3.0-next.2",
4
4
  "description": "Shared types and helpers for build work with cli",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -15,8 +15,8 @@
15
15
  ],
16
16
  "license": "Apache License 2.0",
17
17
  "dependencies": {
18
- "@rsdk/common": "5.3.0-next.0",
19
- "@rsdk/logging": "5.3.0-next.0",
18
+ "@rsdk/common": "5.3.0-next.2",
19
+ "@rsdk/logging": "5.3.0-next.2",
20
20
  "@sinclair/typebox": "^0.32.13",
21
21
  "commander": "^12.0.0",
22
22
  "dotenv": "^16.3.1",
@@ -28,5 +28,5 @@
28
28
  "@rsdk/core": "*",
29
29
  "reflect-metadata": "^0.1.12 || ^0.2.0"
30
30
  },
31
- "gitHead": "15f91b8250e2726de273f0a93df4eae3908d1b55"
31
+ "gitHead": "9b49dd4bf045a1a4c9ab68a2eead229c284390e3"
32
32
  }
package/src/cmd.core.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { LoggerFactory } from '@rsdk/logging';
2
+ import type { OptionValues } from 'commander';
2
3
  import { Command } from 'commander';
3
4
  import _ from 'lodash';
4
5
 
@@ -24,6 +25,77 @@ function createEnvKey(optionMetadata: OptionMetadata): string {
24
25
  ).toUpperCase();
25
26
  }
26
27
 
28
+ /**
29
+ * Приоритет значений env -> flagValue -> defaultValue
30
+ * Сделано намеренно так как в кейсе использования локально проблем с ENV вряд ли будет.
31
+ * А вот в кубе например удобнее редактировать ConfigMap и добавить туда ключ, чем редактировать Deployment
32
+ * @param {OptionMetadata} optionMetadata
33
+ * @param {OptionValues} opts
34
+ * @returns {any}
35
+ */
36
+ function extractValue(optionMetadata: OptionMetadata, opts: OptionValues): any {
37
+ // Создаем ключ для переменной окружения на основе метаданных опции
38
+ const envKey = createEnvKey(optionMetadata);
39
+
40
+ // Проверяем, существует ли значение для данного ключа в переменных окружения
41
+ const envHasValue = Env.has(envKey);
42
+
43
+ // Преобразуем имя опции в camelCase для использования в объекте opts
44
+ const optsKey = _.camelCase(optionMetadata.name);
45
+
46
+ // Получаем значение флага из объекта opts
47
+ const flagValue = opts[optsKey];
48
+
49
+ // Проверяем, был ли предоставлен флаг в объекте opts
50
+ const flagProvided = Object.hasOwn(opts, optsKey);
51
+
52
+ // Если значение переменной окружения существует
53
+ if (envHasValue) {
54
+ // Получаем значение переменной окружения
55
+ const envValue = Env.get(envKey);
56
+
57
+ // Если флаг был предоставлен, выводим предупреждение о переопределении значения флага значением переменной окружения
58
+ if (flagProvided) {
59
+ cliLogger.warn('Env value override flag value', {
60
+ optionMetadata,
61
+ envKey,
62
+ envValue,
63
+ flagValue,
64
+ });
65
+ }
66
+
67
+ // Возвращаем значение переменной окружения
68
+ return envValue;
69
+ }
70
+
71
+ // Если значение переменной окружения не предоставлено, выводим отладочное сообщение
72
+ cliLogger.trace('Env value not provided', { key: optsKey, envKey });
73
+
74
+ // Если флаг был предоставлен, выводим отладочное сообщение и возвращаем значение флага
75
+ if (flagProvided) {
76
+ cliLogger.trace('Use flag value', {
77
+ key: optsKey,
78
+ flagValue,
79
+ opts,
80
+ envHasValue,
81
+ envKey,
82
+ });
83
+ return flagValue;
84
+ }
85
+
86
+ // Если ни значение переменной окружения, ни флаг не предоставлены, выводим отладочное сообщение и возвращаем значение по умолчанию
87
+ cliLogger.trace('Use default value', {
88
+ key: optsKey,
89
+ flagValue,
90
+ opts,
91
+ envHasValue,
92
+ envKey,
93
+ defaultValue: optionMetadata.defaultValue,
94
+ });
95
+
96
+ return optionMetadata.defaultValue;
97
+ }
98
+
27
99
  function createCommandHandler(
28
100
  argMap: Map<ParameterIndex, OptionMetadata>,
29
101
  handler: (...args: any[]) => any,
@@ -46,45 +118,7 @@ function createCommandHandler(
46
118
  cliLogger.trace('handle arg', {
47
119
  optionMetadata,
48
120
  });
49
- const key = _.camelCase(optionMetadata.name);
50
- const v = opts[key];
51
-
52
- const isNotProvided = Object.hasOwn(opts, key);
53
-
54
- const isDefaultValue =
55
- optionMetadata.defaultValue !== undefined &&
56
- v === optionMetadata.defaultValue;
57
- const isNotDefaultValue = !isDefaultValue;
58
-
59
- const envKey = createEnvKey(optionMetadata);
60
-
61
- cliLogger.trace('use env key for option', {
62
- envKey,
63
- });
64
-
65
- const envHasValue = Env.has(envKey);
66
- const envValue = Env.get(envKey);
67
-
68
- cliLogger.trace('option value state', {
69
- isNotProvided,
70
- isDefaultValue,
71
- envKey,
72
- envValue,
73
- optionMetadata,
74
- });
75
-
76
- if (isNotDefaultValue && envHasValue && envValue !== v) {
77
- cliLogger.warn('Flag value override env value', {
78
- optionMetadata,
79
- envKey,
80
- envValue,
81
- isDefaultValue,
82
- flagValue: v,
83
- });
84
- }
85
-
86
- // Если нам пробросили не значение по умолчанию - берем v, иначе берем значение из env или проброшенное
87
- const result = isNotDefaultValue ? v : envValue ?? v;
121
+ const result = extractValue(optionMetadata, opts);
88
122
 
89
123
  if (optionMetadata.parser) {
90
124
  return optionMetadata.parser(result);