@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 +10 -0
- package/dist/cmd.core.js +60 -30
- package/dist/cmd.core.js.map +1 -1
- package/package.json +4 -4
- package/src/cmd.core.ts +73 -39
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
|
|
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
|
}
|
package/dist/cmd.core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd.core.js","sourceRoot":"","sources":["../src/cmd.core.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA8C;
|
|
1
|
+
{"version":3,"file":"cmd.core.js","sourceRoot":"","sources":["../src/cmd.core.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdk/cli.common",
|
|
3
|
-
"version": "5.3.0-next.
|
|
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.
|
|
19
|
-
"@rsdk/logging": "5.3.0-next.
|
|
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": "
|
|
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
|
|
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);
|