@calvear/env 2.10.5 → 3.0.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.
- package/CHANGELOG.md +26 -0
- package/README.md +97 -113
- package/arguments.d.ts +15 -15
- package/arguments.d.ts.map +1 -1
- package/arguments.js +142 -131
- package/arguments.js.map +1 -1
- package/commands/env.command.d.ts +8 -2
- package/commands/env.command.d.ts.map +1 -1
- package/commands/env.command.js +65 -80
- package/commands/env.command.js.map +1 -1
- package/commands/export.command.d.ts +9 -2
- package/commands/export.command.d.ts.map +1 -1
- package/commands/export.command.js +54 -56
- package/commands/export.command.js.map +1 -1
- package/commands/index.d.ts +5 -5
- package/commands/index.d.ts.map +1 -1
- package/commands/index.js +5 -14
- package/commands/pull.command.d.ts +6 -1
- package/commands/pull.command.d.ts.map +1 -1
- package/commands/pull.command.js +21 -37
- package/commands/pull.command.js.map +1 -1
- package/commands/push.command.d.ts +6 -1
- package/commands/push.command.d.ts.map +1 -1
- package/commands/push.command.js +21 -36
- package/commands/push.command.js.map +1 -1
- package/commands/schema.command.d.ts +6 -1
- package/commands/schema.command.d.ts.map +1 -1
- package/commands/schema.command.js +17 -17
- package/commands/schema.command.js.map +1 -1
- package/exec.d.ts +7 -1
- package/exec.d.ts.map +1 -1
- package/exec.js +88 -147
- package/exec.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.d.ts.map +1 -1
- package/index.js +3 -20
- package/interfaces/index.d.ts +1 -1
- package/interfaces/index.d.ts.map +1 -1
- package/interfaces/loader.interface.d.ts +29 -3
- package/interfaces/loader.interface.d.ts.map +1 -1
- package/main.d.ts +0 -1
- package/main.js +7 -26
- package/main.js.map +1 -1
- package/package.json +53 -33
- package/providers/app-settings.provider.d.ts +5 -3
- package/providers/app-settings.provider.d.ts.map +1 -1
- package/providers/app-settings.provider.js +36 -51
- package/providers/app-settings.provider.js.map +1 -1
- package/providers/index.d.ts +2 -2
- package/providers/index.d.ts.map +1 -1
- package/providers/index.js +18 -28
- package/providers/index.js.map +1 -1
- package/providers/local.provider.d.ts +5 -2
- package/providers/local.provider.d.ts.map +1 -1
- package/providers/local.provider.js +27 -40
- package/providers/local.provider.js.map +1 -1
- package/providers/package-json.provider.d.ts +5 -2
- package/providers/package-json.provider.d.ts.map +1 -1
- package/providers/package-json.provider.js +26 -28
- package/providers/package-json.provider.js.map +1 -1
- package/providers/secrets.provider.d.ts +5 -2
- package/providers/secrets.provider.d.ts.map +1 -1
- package/providers/secrets.provider.js +24 -33
- package/providers/secrets.provider.js.map +1 -1
- package/schemas/env.schema.json +1 -0
- package/utils/argv.util.d.ts +10 -0
- package/utils/argv.util.d.ts.map +1 -0
- package/utils/argv.util.js +24 -0
- package/utils/argv.util.js.map +1 -0
- package/utils/command.util.d.ts +71 -4
- package/utils/command.util.d.ts.map +1 -1
- package/utils/command.util.js +60 -135
- package/utils/command.util.js.map +1 -1
- package/utils/index.d.ts +8 -6
- package/utils/index.d.ts.map +1 -1
- package/utils/index.js +9 -23
- package/utils/interpolate.util.d.ts +29 -1
- package/utils/interpolate.util.d.ts.map +1 -1
- package/utils/interpolate.util.js +12 -29
- package/utils/interpolate.util.js.map +1 -1
- package/utils/json.util.d.ts +41 -3
- package/utils/json.util.d.ts.map +1 -1
- package/utils/json.util.js +29 -41
- package/utils/json.util.js.map +1 -1
- package/utils/logger.d.ts +21 -2
- package/utils/logger.d.ts.map +1 -1
- package/utils/logger.js +31 -17
- package/utils/logger.js.map +1 -1
- package/utils/normalize.util.d.ts +24 -2
- package/utils/normalize.util.d.ts.map +1 -1
- package/utils/normalize.util.js +35 -57
- package/utils/normalize.util.js.map +1 -1
- package/utils/schema.util.d.ts +62 -3
- package/utils/schema.util.d.ts.map +1 -1
- package/utils/schema.util.js +64 -92
- package/utils/schema.util.js.map +1 -1
- package/utils/ui.d.ts +14 -0
- package/utils/ui.d.ts.map +1 -0
- package/utils/ui.js +75 -0
- package/utils/ui.js.map +1 -0
- package/commands/index.js.map +0 -1
- package/index.js.map +0 -1
- package/interfaces/index.js +0 -18
- package/interfaces/index.js.map +0 -1
- package/interfaces/loader.interface.js +0 -3
- package/interfaces/loader.interface.js.map +0 -1
- package/tsconfig.build.tsbuildinfo +0 -1
- package/utils/index.js.map +0 -1
package/arguments.js
CHANGED
|
@@ -1,133 +1,144 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
1
|
+
import { IntegratedProviderConfig as e } from "./providers/index.js";
|
|
2
|
+
import t from "ci-info";
|
|
3
|
+
//#region src/arguments.ts
|
|
4
|
+
var n = {
|
|
5
|
+
CORE: "Core Options",
|
|
6
|
+
GROUP_WORKSPACE: "Workspace Options",
|
|
7
|
+
JSON_SCHEMA_WORKSPACE: "JSON Schema Options",
|
|
8
|
+
LOG_WORKSPACE: "Logger Options"
|
|
9
|
+
}, r = {
|
|
10
|
+
arrayDescomposition: {
|
|
11
|
+
alias: "arrDesc",
|
|
12
|
+
default: !1,
|
|
13
|
+
describe: "Whether serialize or break down arrays",
|
|
14
|
+
group: n.CORE,
|
|
15
|
+
type: "boolean"
|
|
16
|
+
},
|
|
17
|
+
ci: {
|
|
18
|
+
default: t.isCI,
|
|
19
|
+
group: n.CORE,
|
|
20
|
+
type: "boolean",
|
|
21
|
+
describe: "Run providers in continuous-integration mode (skips local files)"
|
|
22
|
+
},
|
|
23
|
+
configFile: {
|
|
24
|
+
alias: "c",
|
|
25
|
+
default: "[[root]]/settings/settings.json",
|
|
26
|
+
describe: "Config JSON file path",
|
|
27
|
+
group: n.GROUP_WORKSPACE,
|
|
28
|
+
type: "string"
|
|
29
|
+
},
|
|
30
|
+
detectFormat: {
|
|
31
|
+
alias: "df",
|
|
32
|
+
default: !1,
|
|
33
|
+
describe: "Whether format of strings variables are included in schema",
|
|
34
|
+
group: n.JSON_SCHEMA_WORKSPACE,
|
|
35
|
+
type: "boolean"
|
|
36
|
+
},
|
|
37
|
+
env: {
|
|
38
|
+
alias: "e",
|
|
39
|
+
describe: "Environment to load, i.e. dev, prod",
|
|
40
|
+
group: n.CORE,
|
|
41
|
+
type: "string"
|
|
42
|
+
},
|
|
43
|
+
expand: {
|
|
44
|
+
alias: "x",
|
|
45
|
+
default: !1,
|
|
46
|
+
describe: "Interpolate environment variables using themselves",
|
|
47
|
+
group: n.CORE,
|
|
48
|
+
type: "boolean"
|
|
49
|
+
},
|
|
50
|
+
exportIgnoreKeys: {
|
|
51
|
+
alias: "iek",
|
|
52
|
+
default: [],
|
|
53
|
+
group: n.JSON_SCHEMA_WORKSPACE,
|
|
54
|
+
hidden: !0,
|
|
55
|
+
type: "array"
|
|
56
|
+
},
|
|
57
|
+
logLevel: {
|
|
58
|
+
alias: "log",
|
|
59
|
+
choices: [
|
|
60
|
+
"silly",
|
|
61
|
+
"trace",
|
|
62
|
+
"debug",
|
|
63
|
+
"info",
|
|
64
|
+
"warn",
|
|
65
|
+
"error"
|
|
66
|
+
],
|
|
67
|
+
default: "info",
|
|
68
|
+
describe: "Log verbosity level",
|
|
69
|
+
group: n.LOG_WORKSPACE,
|
|
70
|
+
type: "string"
|
|
71
|
+
},
|
|
72
|
+
logMaskAnyRegEx: {
|
|
73
|
+
alias: "mrx",
|
|
74
|
+
default: [],
|
|
75
|
+
describe: "Mask log values matching these regular expressions",
|
|
76
|
+
group: n.LOG_WORKSPACE,
|
|
77
|
+
type: "array"
|
|
78
|
+
},
|
|
79
|
+
logMaskValuesOfKeys: {
|
|
80
|
+
alias: "mvk",
|
|
81
|
+
default: [],
|
|
82
|
+
describe: "Mask the values of these keys in logs",
|
|
83
|
+
group: n.LOG_WORKSPACE,
|
|
84
|
+
type: "array"
|
|
85
|
+
},
|
|
86
|
+
modes: {
|
|
87
|
+
alias: "m",
|
|
88
|
+
describe: "Execution modes, i.e. debug, test",
|
|
89
|
+
group: n.CORE,
|
|
90
|
+
type: "array"
|
|
91
|
+
},
|
|
92
|
+
nestingDelimiter: {
|
|
93
|
+
alias: "nd",
|
|
94
|
+
default: "__",
|
|
95
|
+
group: n.CORE,
|
|
96
|
+
type: "string",
|
|
97
|
+
describe: "Nesting level delimiter for flatten, i.e. { l1: { l2: \"value\" } } turns into { l1__l2: \"value\" }"
|
|
98
|
+
},
|
|
99
|
+
nullable: {
|
|
100
|
+
alias: "null",
|
|
101
|
+
default: !0,
|
|
102
|
+
describe: "Whether variables are nullable",
|
|
103
|
+
group: n.JSON_SCHEMA_WORKSPACE,
|
|
104
|
+
type: "boolean"
|
|
105
|
+
},
|
|
106
|
+
packageJson: {
|
|
107
|
+
alias: ["pkg"],
|
|
108
|
+
default: "",
|
|
109
|
+
describe: "package.json path",
|
|
110
|
+
group: n.GROUP_WORKSPACE,
|
|
111
|
+
type: "string"
|
|
112
|
+
},
|
|
113
|
+
providers: {
|
|
114
|
+
default: e,
|
|
115
|
+
describe: "Providers handling variables loading",
|
|
116
|
+
hidden: !0,
|
|
117
|
+
type: "array"
|
|
118
|
+
},
|
|
119
|
+
resolve: {
|
|
120
|
+
alias: "r",
|
|
121
|
+
choices: ["merge", "override"],
|
|
122
|
+
default: "merge",
|
|
123
|
+
describe: "Whether merges new schema or override",
|
|
124
|
+
group: n.JSON_SCHEMA_WORKSPACE,
|
|
125
|
+
type: "string"
|
|
126
|
+
},
|
|
127
|
+
root: {
|
|
128
|
+
default: "env",
|
|
129
|
+
describe: "Default environment folder path",
|
|
130
|
+
group: n.GROUP_WORKSPACE,
|
|
131
|
+
type: "string"
|
|
132
|
+
},
|
|
133
|
+
schemaFile: {
|
|
134
|
+
alias: ["s", "schema"],
|
|
135
|
+
default: "[[root]]/settings/schema.json",
|
|
136
|
+
describe: "Environment Schema JSON file path",
|
|
137
|
+
group: n.GROUP_WORKSPACE,
|
|
138
|
+
type: "string"
|
|
139
|
+
}
|
|
132
140
|
};
|
|
141
|
+
//#endregion
|
|
142
|
+
export { r as args };
|
|
143
|
+
|
|
133
144
|
//# sourceMappingURL=arguments.js.map
|
package/arguments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arguments.js","
|
|
1
|
+
{"version":3,"file":"arguments.js","names":[],"sources":["../src/arguments.ts"],"sourcesContent":["import type { JSONSchemaType } from 'ajv';\r\nimport ci from 'ci-info';\r\nimport type { Arguments, Options } from 'yargs';\r\nimport type { EnvProviderConfig } from './interfaces/index.js';\r\nimport { IntegratedProviderConfig } from './providers/index.js';\r\n\r\nconst GROUPS = {\r\n\tCORE: 'Core Options',\r\n\tGROUP_WORKSPACE: 'Workspace Options',\r\n\tJSON_SCHEMA_WORKSPACE: 'JSON Schema Options',\r\n\tLOG_WORKSPACE: 'Logger Options',\r\n};\r\n\r\nexport interface CommandArguments extends Arguments {\r\n\tarrayDescomposition: boolean;\r\n\tci: boolean;\r\n\tconfigFile: string;\r\n\tdetectFormat: boolean;\r\n\tenv: string;\r\n\texpand: boolean;\r\n\tnestingDelimiter: string;\r\n\tnullable: boolean;\r\n\tpackageJson: string;\r\n\tprojectInfo: Record<string, string>;\r\n\tproviders: EnvProviderConfig[];\r\n\tresolve: 'merge' | 'override';\r\n\troot: string;\r\n\tschemaFile: string;\r\n\texportIgnoreKeys?: string[];\r\n\tlogLevel?: 'debug' | 'error' | 'info' | 'silly' | 'trace' | 'warn';\r\n\tlogMaskAnyRegEx?: string[];\r\n\tlogMaskValuesOfKeys?: string[];\r\n\tmodes?: string[];\r\n\tschema?: Record<string, JSONSchemaType<object>>;\r\n}\r\n\r\n// common CLI arguments\r\nexport const args: Record<keyof CommandArguments, Options> = {\r\n\tarrayDescomposition: {\r\n\t\talias: 'arrDesc',\r\n\t\tdefault: false,\r\n\t\tdescribe: 'Whether serialize or break down arrays',\r\n\t\tgroup: GROUPS.CORE,\r\n\t\ttype: 'boolean',\r\n\t},\r\n\tci: {\r\n\t\tdefault: ci.isCI,\r\n\t\tgroup: GROUPS.CORE,\r\n\t\ttype: 'boolean',\r\n\t\tdescribe:\r\n\t\t\t'Run providers in continuous-integration mode (skips local files)',\r\n\t},\r\n\tconfigFile: {\r\n\t\talias: 'c',\r\n\t\tdefault: '[[root]]/settings/settings.json',\r\n\t\tdescribe: 'Config JSON file path',\r\n\t\tgroup: GROUPS.GROUP_WORKSPACE,\r\n\t\ttype: 'string',\r\n\t},\r\n\tdetectFormat: {\r\n\t\talias: 'df',\r\n\t\tdefault: false,\r\n\t\tdescribe: 'Whether format of strings variables are included in schema',\r\n\t\tgroup: GROUPS.JSON_SCHEMA_WORKSPACE,\r\n\t\ttype: 'boolean',\r\n\t},\r\n\tenv: {\r\n\t\talias: 'e',\r\n\t\tdescribe: 'Environment to load, i.e. dev, prod',\r\n\t\tgroup: GROUPS.CORE,\r\n\t\ttype: 'string',\r\n\t},\r\n\texpand: {\r\n\t\talias: 'x',\r\n\t\tdefault: false,\r\n\t\tdescribe: 'Interpolate environment variables using themselves',\r\n\t\tgroup: GROUPS.CORE,\r\n\t\ttype: 'boolean',\r\n\t},\r\n\texportIgnoreKeys: {\r\n\t\talias: 'iek',\r\n\t\tdefault: [],\r\n\t\tgroup: GROUPS.JSON_SCHEMA_WORKSPACE,\r\n\t\thidden: true,\r\n\t\ttype: 'array',\r\n\t},\r\n\tlogLevel: {\r\n\t\talias: 'log',\r\n\t\tchoices: ['silly', 'trace', 'debug', 'info', 'warn', 'error'],\r\n\t\tdefault: 'info',\r\n\t\tdescribe: 'Log verbosity level',\r\n\t\tgroup: GROUPS.LOG_WORKSPACE,\r\n\t\ttype: 'string',\r\n\t},\r\n\tlogMaskAnyRegEx: {\r\n\t\talias: 'mrx',\r\n\t\tdefault: [],\r\n\t\tdescribe: 'Mask log values matching these regular expressions',\r\n\t\tgroup: GROUPS.LOG_WORKSPACE,\r\n\t\ttype: 'array',\r\n\t},\r\n\tlogMaskValuesOfKeys: {\r\n\t\talias: 'mvk',\r\n\t\tdefault: [],\r\n\t\tdescribe: 'Mask the values of these keys in logs',\r\n\t\tgroup: GROUPS.LOG_WORKSPACE,\r\n\t\ttype: 'array',\r\n\t},\r\n\tmodes: {\r\n\t\talias: 'm',\r\n\t\tdescribe: 'Execution modes, i.e. debug, test',\r\n\t\tgroup: GROUPS.CORE,\r\n\t\ttype: 'array',\r\n\t},\r\n\tnestingDelimiter: {\r\n\t\talias: 'nd',\r\n\t\tdefault: '__',\r\n\t\tgroup: GROUPS.CORE,\r\n\t\ttype: 'string',\r\n\t\tdescribe:\r\n\t\t\t'Nesting level delimiter for flatten, i.e. { l1: { l2: \"value\" } } turns into { l1__l2: \"value\" }',\r\n\t},\r\n\tnullable: {\r\n\t\talias: 'null',\r\n\t\tdefault: true,\r\n\t\tdescribe: 'Whether variables are nullable',\r\n\t\tgroup: GROUPS.JSON_SCHEMA_WORKSPACE,\r\n\t\ttype: 'boolean',\r\n\t},\r\n\tpackageJson: {\r\n\t\talias: ['pkg'],\r\n\t\tdefault: '',\r\n\t\tdescribe: 'package.json path',\r\n\t\tgroup: GROUPS.GROUP_WORKSPACE,\r\n\t\ttype: 'string',\r\n\t},\r\n\tproviders: {\r\n\t\tdefault: IntegratedProviderConfig,\r\n\t\tdescribe: 'Providers handling variables loading',\r\n\t\thidden: true,\r\n\t\ttype: 'array',\r\n\t},\r\n\tresolve: {\r\n\t\talias: 'r',\r\n\t\tchoices: ['merge', 'override'],\r\n\t\tdefault: 'merge',\r\n\t\tdescribe: 'Whether merges new schema or override',\r\n\t\tgroup: GROUPS.JSON_SCHEMA_WORKSPACE,\r\n\t\ttype: 'string',\r\n\t},\r\n\troot: {\r\n\t\tdefault: 'env',\r\n\t\tdescribe: 'Default environment folder path',\r\n\t\tgroup: GROUPS.GROUP_WORKSPACE,\r\n\t\ttype: 'string',\r\n\t},\r\n\tschemaFile: {\r\n\t\talias: ['s', 'schema'],\r\n\t\tdefault: '[[root]]/settings/schema.json',\r\n\t\tdescribe: 'Environment Schema JSON file path',\r\n\t\tgroup: GROUPS.GROUP_WORKSPACE,\r\n\t\ttype: 'string',\r\n\t},\r\n};\r\n"],"mappings":";;;AAMA,IAAM,IAAS;CACd,MAAM;CACN,iBAAiB;CACjB,uBAAuB;CACvB,eAAe;AAChB,GA0Ba,IAAgD;CAC5D,qBAAqB;EACpB,OAAO;EACP,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,IAAI;EACH,SAAS,EAAG;EACZ,OAAO,EAAO;EACd,MAAM;EACN,UACC;CACF;CACA,YAAY;EACX,OAAO;EACP,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,cAAc;EACb,OAAO;EACP,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,KAAK;EACJ,OAAO;EACP,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,QAAQ;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,kBAAkB;EACjB,OAAO;EACP,SAAS,CAAC;EACV,OAAO,EAAO;EACd,QAAQ;EACR,MAAM;CACP;CACA,UAAU;EACT,OAAO;EACP,SAAS;GAAC;GAAS;GAAS;GAAS;GAAQ;GAAQ;EAAO;EAC5D,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,iBAAiB;EAChB,OAAO;EACP,SAAS,CAAC;EACV,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,qBAAqB;EACpB,OAAO;EACP,SAAS,CAAC;EACV,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,OAAO;EACN,OAAO;EACP,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,kBAAkB;EACjB,OAAO;EACP,SAAS;EACT,OAAO,EAAO;EACd,MAAM;EACN,UACC;CACF;CACA,UAAU;EACT,OAAO;EACP,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,aAAa;EACZ,OAAO,CAAC,KAAK;EACb,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,WAAW;EACV,SAAS;EACT,UAAU;EACV,QAAQ;EACR,MAAM;CACP;CACA,SAAS;EACR,OAAO;EACP,SAAS,CAAC,SAAS,UAAU;EAC7B,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,MAAM;EACL,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;CACA,YAAY;EACX,OAAO,CAAC,KAAK,QAAQ;EACrB,SAAS;EACT,UAAU;EACV,OAAO,EAAO;EACd,MAAM;CACP;AACD"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { CommandModule } from 'yargs';
|
|
2
|
-
import { CommandArguments } from '../arguments';
|
|
2
|
+
import { CommandArguments } from '../arguments.js';
|
|
3
3
|
export interface EnvCommandArguments extends CommandArguments {
|
|
4
|
-
subcmd: string[];
|
|
5
4
|
schemaValidate: boolean;
|
|
5
|
+
subcmd: string[];
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Main command.
|
|
9
|
+
* Injects environment variables into process.env.
|
|
10
|
+
*
|
|
11
|
+
* @example [>_]: env -e dev -m debug : npm start
|
|
12
|
+
*/
|
|
7
13
|
export declare const envCommand: CommandModule<any, EnvCommandArguments>;
|
|
8
14
|
//# sourceMappingURL=env.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.command.d.ts","sourceRoot":"","sources":["../../src/commands/env.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.command.d.ts","sourceRoot":"","sources":["../../src/commands/env.command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAaxD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAE5D,cAAc,EAAE,OAAO,CAAC;IAGxB,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAmH9D,CAAC"}
|
package/commands/env.command.js
CHANGED
|
@@ -1,82 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
properties: schema
|
|
53
|
-
});
|
|
54
|
-
if (!validator(env)) {
|
|
55
|
-
utils_1.logger.error('schema validation failed', validator.errors);
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
env = (0, utils_1.normalize)(env, argv.nestingDelimiter, argv.arrayDescomposition);
|
|
60
|
-
if (expand) {
|
|
61
|
-
env = (0, utils_1.interpolate)(env, env);
|
|
62
|
-
argv.subcmd = (0, utils_1.interpolate)(argv.subcmd, env);
|
|
63
|
-
}
|
|
64
|
-
utils_1.logger.debug('environment loaded:', env);
|
|
65
|
-
for (const varname in env)
|
|
66
|
-
process.env[varname] = env[varname];
|
|
67
|
-
utils_1.logger.info('executing command >', chalk_1.default.bold.yellow(argv.subcmd.join(' ')));
|
|
68
|
-
(0, child_process_1.spawn)(argv.subcmd[0], argv.subcmd.slice(1), {
|
|
69
|
-
stdio: 'inherit',
|
|
70
|
-
shell: true
|
|
71
|
-
}).on('exit', (code) => {
|
|
72
|
-
if (code === 0) {
|
|
73
|
-
utils_1.logger.info('process finished successfully');
|
|
74
|
-
}
|
|
75
|
-
else if (code === 1) {
|
|
76
|
-
utils_1.logger.error('process finished with error');
|
|
77
|
-
process.exit(code);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
}
|
|
1
|
+
import { flatResults as e, loadVariablesFromProviders as t } from "../utils/command.util.js";
|
|
2
|
+
import { interpolate as n } from "../utils/interpolate.util.js";
|
|
3
|
+
import { logger as r } from "../utils/logger.js";
|
|
4
|
+
import { flatten as i, normalize as a } from "../utils/normalize.util.js";
|
|
5
|
+
import { createValidator as o, flatSchema as s } from "../utils/schema.util.js";
|
|
6
|
+
import { ui as c } from "../utils/ui.js";
|
|
7
|
+
import "../utils/index.js";
|
|
8
|
+
import l from "merge-deep";
|
|
9
|
+
import { spawn as u } from "node:child_process";
|
|
10
|
+
//#region src/commands/env.command.ts
|
|
11
|
+
var d = {
|
|
12
|
+
command: "$0 [options..] [: <subcmd> :]",
|
|
13
|
+
describe: "Inject environment variables into a process and run a command",
|
|
14
|
+
builder: (e) => (e.options({
|
|
15
|
+
schemaValidate: {
|
|
16
|
+
alias: "validate",
|
|
17
|
+
default: !0,
|
|
18
|
+
describe: "Whether validates variables using JSON schema",
|
|
19
|
+
type: "boolean"
|
|
20
|
+
},
|
|
21
|
+
subcmd: {
|
|
22
|
+
describe: "Command for inject environment variables",
|
|
23
|
+
type: "array"
|
|
24
|
+
}
|
|
25
|
+
}).example("env -e dev -m test unit : npm test", "Loads \"dev\" environment variables, in \"test\" and \"unit\" modes, for \"npm start\" command").example("env -e dev -m debug : npm start : -c my-config.json", "Loads \"dev\" environment variables, in \"debug\" mode, for \"npm test\" command and custom config file").example("env -e dev -m debug -c [[root]]/[[env]].env.json : npm start", "Loads custom config file placed in root folder and named same as the env").check((e) => (e._.length === 0 && !e.subcmd && (r.error("No one subcommand provided for exec surrounded by :"), process.exit(1)), !0)), e),
|
|
26
|
+
handler: async ({ expand: o, providers: s, schemaValidate: d, ...p }) => {
|
|
27
|
+
let m = performance.now(), h = d ? f(s, p) : void 0, g = await t(s, p);
|
|
28
|
+
for (let { key: e, value: t } of g) {
|
|
29
|
+
let n = Array.isArray(t) ? l({}, ...t.map((e) => i(e, p.nestingDelimiter))) : i(t, p.nestingDelimiter);
|
|
30
|
+
c.provider(e, Object.keys(n).length);
|
|
31
|
+
}
|
|
32
|
+
let _ = l({ NODE_ENV: "development" }, ...e(g, p.nestingDelimiter));
|
|
33
|
+
if (h) {
|
|
34
|
+
let e = await h;
|
|
35
|
+
e(_) || (r.error("schema validation failed", e.errors), process.exit(1));
|
|
36
|
+
}
|
|
37
|
+
_ = a(_, p.nestingDelimiter, p.arrayDescomposition), o && (_ = n(_, _), p.subcmd = n(p.subcmd, _)), c.variables(_);
|
|
38
|
+
for (let e in _) process.env[e] = String(_[e]);
|
|
39
|
+
c.summary(Object.keys(_).length, performance.now() - m);
|
|
40
|
+
let v = p.subcmd.join(" ");
|
|
41
|
+
c.running(v), u(v, {
|
|
42
|
+
shell: !0,
|
|
43
|
+
stdio: "inherit"
|
|
44
|
+
}).on("exit", (e) => {
|
|
45
|
+
if (e === 0 || e === null) {
|
|
46
|
+
c.finished(performance.now() - m);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
c.failed(e), r.error("process finished with error"), process.exit(e);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
81
52
|
};
|
|
53
|
+
function f(e, t) {
|
|
54
|
+
let n = {};
|
|
55
|
+
for (let { handler: { key: r } } of e) {
|
|
56
|
+
let e = t.schema?.[r];
|
|
57
|
+
e && (n = Object.assign(n, s(e, "", t.nestingDelimiter)));
|
|
58
|
+
}
|
|
59
|
+
return o({
|
|
60
|
+
properties: n,
|
|
61
|
+
type: "object"
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
export { d as envCommand };
|
|
66
|
+
|
|
82
67
|
//# sourceMappingURL=env.command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.command.js","
|
|
1
|
+
{"version":3,"file":"env.command.js","names":[],"sources":["../../src/commands/env.command.ts"],"sourcesContent":["import merge from 'merge-deep';\r\nimport { spawn } from 'node:child_process';\r\nimport type { CommandModule } from 'yargs';\r\nimport type { CommandArguments } from '../arguments.js';\r\nimport {\r\n\tcreateValidator,\r\n\tflatResults,\r\n\tflatSchema,\r\n\tflatten,\r\n\tinterpolate,\r\n\tloadVariablesFromProviders,\r\n\tlogger,\r\n\tnormalize,\r\n\tui,\r\n} from '../utils/index.js';\r\n\r\nexport interface EnvCommandArguments extends CommandArguments {\r\n\t// whether validate schema before injecting variables\r\n\tschemaValidate: boolean;\r\n\t// command for execute after inject environment variables.\r\n\t// Should be prefixed or surrounded by ':' character.\r\n\tsubcmd: string[];\r\n}\r\n\r\n/**\r\n * Main command.\r\n * Injects environment variables into process.env.\r\n *\r\n * @example [>_]: env -e dev -m debug : npm start\r\n */\r\nexport const envCommand: CommandModule<any, EnvCommandArguments> = {\r\n\tcommand: '$0 [options..] [: <subcmd> :]',\r\n\tdescribe: 'Inject environment variables into a process and run a command',\r\n\tbuilder: (builder) => {\r\n\t\tbuilder\r\n\t\t\t.options({\r\n\t\t\t\tschemaValidate: {\r\n\t\t\t\t\talias: 'validate',\r\n\t\t\t\t\tdefault: true,\r\n\t\t\t\t\tdescribe: 'Whether validates variables using JSON schema',\r\n\t\t\t\t\ttype: 'boolean',\r\n\t\t\t\t},\r\n\t\t\t\tsubcmd: {\r\n\t\t\t\t\tdescribe: 'Command for inject environment variables',\r\n\t\t\t\t\ttype: 'array',\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.example(\r\n\t\t\t\t'env -e dev -m test unit : npm test',\r\n\t\t\t\t'Loads \"dev\" environment variables, in \"test\" and \"unit\" modes, for \"npm start\" command',\r\n\t\t\t)\r\n\t\t\t.example(\r\n\t\t\t\t'env -e dev -m debug : npm start : -c my-config.json',\r\n\t\t\t\t'Loads \"dev\" environment variables, in \"debug\" mode, for \"npm test\" command and custom config file',\r\n\t\t\t)\r\n\t\t\t.example(\r\n\t\t\t\t'env -e dev -m debug -c [[root]]/[[env]].env.json : npm start',\r\n\t\t\t\t'Loads custom config file placed in root folder and named same as the env',\r\n\t\t\t)\r\n\t\t\t.check((argv): boolean => {\r\n\t\t\t\t// special check for custom argument\r\n\t\t\t\tif (argv._.length === 0 && !argv.subcmd) {\r\n\t\t\t\t\tlogger.error(\r\n\t\t\t\t\t\t'No one subcommand provided for exec surrounded by :',\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tprocess.exit(1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\r\n\t\treturn builder;\r\n\t},\r\n\thandler: async ({ expand, providers, schemaValidate, ...argv }) => {\r\n\t\tconst started = performance.now();\r\n\r\n\t\t// kick off validator build (lazy-imports AJV) in parallel with provider I/O\r\n\t\tconst validatorPromise = schemaValidate\r\n\t\t\t? buildEnvValidator(providers, argv)\r\n\t\t\t: undefined;\r\n\r\n\t\tconst results = await loadVariablesFromProviders(providers, argv);\r\n\r\n\t\t// per-provider variable counts\r\n\t\tfor (const { key, value } of results) {\r\n\t\t\tconst flat = Array.isArray(value)\r\n\t\t\t\t? merge(\r\n\t\t\t\t\t\t{},\r\n\t\t\t\t\t\t...value.map((v: any) =>\r\n\t\t\t\t\t\t\tflatten(v, argv.nestingDelimiter),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t)\r\n\t\t\t\t: flatten(value, argv.nestingDelimiter);\r\n\r\n\t\t\tui.provider(key, Object.keys(flat).length);\r\n\t\t}\r\n\r\n\t\tlet env = merge(\r\n\t\t\t{ NODE_ENV: 'development' },\r\n\t\t\t...flatResults(results, argv.nestingDelimiter),\r\n\t\t);\r\n\r\n\t\tif (validatorPromise) {\r\n\t\t\tconst validator = await validatorPromise;\r\n\r\n\t\t\tif (!validator(env)) {\r\n\t\t\t\tlogger.error('schema validation failed', validator.errors);\r\n\r\n\t\t\t\tprocess.exit(1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tenv = normalize(env, argv.nestingDelimiter, argv.arrayDescomposition);\r\n\t\tif (expand) {\r\n\t\t\tenv = interpolate(env, env);\r\n\t\t\targv.subcmd = interpolate(argv.subcmd, env);\r\n\t\t}\r\n\r\n\t\tui.variables(env);\r\n\r\n\t\t// loads env vars to process.env\r\n\t\tfor (const varname in env) process.env[varname] = String(env[varname]);\r\n\r\n\t\tui.summary(Object.keys(env).length, performance.now() - started);\r\n\r\n\t\tconst cmdProcess = argv.subcmd.join(' ');\r\n\r\n\t\tui.running(cmdProcess);\r\n\r\n\t\tspawn(cmdProcess, {\r\n\t\t\tshell: true,\r\n\t\t\tstdio: 'inherit',\r\n\t\t}).on('exit', (code) => {\r\n\t\t\tif (code === 0 || code === null) {\r\n\t\t\t\tui.finished(performance.now() - started);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tui.failed(code);\r\n\t\t\tlogger.error('process finished with error');\r\n\t\t\tprocess.exit(code);\r\n\t\t});\r\n\t},\r\n};\r\n\r\nfunction buildEnvValidator(\r\n\tproviders: EnvCommandArguments['providers'],\r\n\targv: Partial<EnvCommandArguments>,\r\n) {\r\n\tlet schema = {};\r\n\r\n\tfor (const {\r\n\t\thandler: { key },\r\n\t} of providers) {\r\n\t\tconst providerSchema = argv.schema?.[key];\r\n\r\n\t\tif (providerSchema)\r\n\t\t\tschema = Object.assign(\r\n\t\t\t\tschema,\r\n\t\t\t\tflatSchema(providerSchema, '', argv.nestingDelimiter),\r\n\t\t\t);\r\n\t}\r\n\r\n\treturn createValidator({ properties: schema, type: 'object' });\r\n}\r\n"],"mappings":";;;;;;;;;;AA8BA,IAAa,IAAsD;CAClE,SAAS;CACT,UAAU;CACV,UAAU,OACT,EACE,QAAQ;EACR,gBAAgB;GACf,OAAO;GACP,SAAS;GACT,UAAU;GACV,MAAM;EACP;EACA,QAAQ;GACP,UAAU;GACV,MAAM;EACP;CACD,CAAC,EACA,QACA,sCACA,gGACD,EACC,QACA,uDACA,yGACD,EACC,QACA,gEACA,0EACD,EACC,OAAO,OAEH,EAAK,EAAE,WAAW,KAAK,CAAC,EAAK,WAChC,EAAO,MACN,qDACD,GAEA,QAAQ,KAAK,CAAC,IAGR,GACP,GAEK;CAER,SAAS,OAAO,EAAE,WAAQ,cAAW,mBAAgB,GAAG,QAAW;EAClE,IAAM,IAAU,YAAY,IAAI,GAG1B,IAAmB,IACtB,EAAkB,GAAW,CAAI,IACjC,KAAA,GAEG,IAAU,MAAM,EAA2B,GAAW,CAAI;EAGhE,KAAK,IAAM,EAAE,QAAK,cAAW,GAAS;GACrC,IAAM,IAAO,MAAM,QAAQ,CAAK,IAC7B,EACA,CAAC,GACD,GAAG,EAAM,KAAK,MACb,EAAQ,GAAG,EAAK,gBAAgB,CACjC,CACD,IACC,EAAQ,GAAO,EAAK,gBAAgB;GAEvC,EAAG,SAAS,GAAK,OAAO,KAAK,CAAI,EAAE,MAAM;EAC1C;EAEA,IAAI,IAAM,EACT,EAAE,UAAU,cAAc,GAC1B,GAAG,EAAY,GAAS,EAAK,gBAAgB,CAC9C;EAEA,IAAI,GAAkB;GACrB,IAAM,IAAY,MAAM;GAExB,AAAK,EAAU,CAAG,MACjB,EAAO,MAAM,4BAA4B,EAAU,MAAM,GAEzD,QAAQ,KAAK,CAAC;EAEhB;EAQA,AANA,IAAM,EAAU,GAAK,EAAK,kBAAkB,EAAK,mBAAmB,GAChE,MACH,IAAM,EAAY,GAAK,CAAG,GAC1B,EAAK,SAAS,EAAY,EAAK,QAAQ,CAAG,IAG3C,EAAG,UAAU,CAAG;EAGhB,KAAK,IAAM,KAAW,GAAK,QAAQ,IAAI,KAAW,OAAO,EAAI,EAAQ;EAErE,EAAG,QAAQ,OAAO,KAAK,CAAG,EAAE,QAAQ,YAAY,IAAI,IAAI,CAAO;EAE/D,IAAM,IAAa,EAAK,OAAO,KAAK,GAAG;EAIvC,AAFA,EAAG,QAAQ,CAAU,GAErB,EAAM,GAAY;GACjB,OAAO;GACP,OAAO;EACR,CAAC,EAAE,GAAG,SAAS,MAAS;GACvB,IAAI,MAAS,KAAK,MAAS,MAAM;IAChC,EAAG,SAAS,YAAY,IAAI,IAAI,CAAO;IAEvC;GACD;GAIA,AAFA,EAAG,OAAO,CAAI,GACd,EAAO,MAAM,6BAA6B,GAC1C,QAAQ,KAAK,CAAI;EAClB,CAAC;CACF;AACD;AAEA,SAAS,EACR,GACA,GACC;CACD,IAAI,IAAS,CAAC;CAEd,KAAK,IAAM,EACV,SAAS,EAAE,cACP,GAAW;EACf,IAAM,IAAiB,EAAK,SAAS;EAErC,AAAI,MACH,IAAS,OAAO,OACf,GACA,EAAW,GAAgB,IAAI,EAAK,gBAAgB,CACrD;CACF;CAEA,OAAO,EAAgB;EAAE,YAAY;EAAQ,MAAM;CAAS,CAAC;AAC9D"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { CommandModule } from 'yargs';
|
|
2
|
-
import { CommandArguments } from '../arguments';
|
|
2
|
+
import { CommandArguments } from '../arguments.js';
|
|
3
3
|
export interface ExportCommandArguments extends CommandArguments {
|
|
4
|
-
format: '
|
|
4
|
+
format: 'dotenv' | 'json';
|
|
5
5
|
uri: string;
|
|
6
|
+
exportQuotes: boolean;
|
|
6
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* Export command.
|
|
10
|
+
* Export environment variables to a file.
|
|
11
|
+
*
|
|
12
|
+
* @example [>_]: env export -e dev -m build
|
|
13
|
+
*/
|
|
7
14
|
export declare const exportCommand: CommandModule<any, ExportCommandArguments>;
|
|
8
15
|
//# sourceMappingURL=export.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.command.d.ts","sourceRoot":"","sources":["../../src/commands/export.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"export.command.d.ts","sourceRoot":"","sources":["../../src/commands/export.command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAYxD,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC/D,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAE1B,GAAG,EAAE,MAAM,CAAC;IAEZ,YAAY,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,sBAAsB,CA0FpE,CAAC"}
|