@@ -41,25 +41,35 @@ extended: base + sets "global" as alias for "globalThis"
41
41
return flags
42
42
}
43
43
44
- func saveBoolFromEnv (env map [string ]string , varName string , placeholder * null.Bool ) error {
45
- strValue , ok := env [varName ]
46
- if ! ok {
47
- return nil
44
+ func getRuntimeOptions (
45
+ flags * pflag.FlagSet ,
46
+ environment map [string ]string ,
47
+ ) (lib.RuntimeOptions , error ) {
48
+ // TODO: refactor with composable helpers as a part of #883, to reduce copy-paste
49
+ // TODO: get these options out of the JSON config file as well?
50
+ opts , err := populateRuntimeOptionsFromEnv (runtimeOptionsFromFlags (flags ), environment )
51
+ if err != nil {
52
+ return opts , err
48
53
}
49
- val , err := strconv .ParseBool (strValue )
54
+
55
+ // Set/overwrite environment variables with custom user-supplied values
56
+ envVars , err := flags .GetStringArray ("env" )
50
57
if err != nil {
51
- return fmt . Errorf ( "env var '%s' is not a valid boolean value: %w" , varName , err )
58
+ return opts , err
52
59
}
53
- // Only override if not explicitly set via the CLI flag
54
- if ! placeholder .Valid {
55
- * placeholder = null .BoolFrom (val )
60
+ for _ , kv := range envVars {
61
+ k , v := state .ParseEnvKeyValue (kv )
62
+ // Allow only alphanumeric ASCII variable names for now
63
+ if ! userEnvVarName .MatchString (k ) {
64
+ return opts , fmt .Errorf ("invalid environment variable name '%s'" , k )
65
+ }
66
+ opts .Env [k ] = v
56
67
}
57
- return nil
68
+
69
+ return opts , nil
58
70
}
59
71
60
- func getRuntimeOptions (flags * pflag.FlagSet , environment map [string ]string ) (lib.RuntimeOptions , error ) {
61
- // TODO: refactor with composable helpers as a part of #883, to reduce copy-paste
62
- // TODO: get these options out of the JSON config file as well?
72
+ func runtimeOptionsFromFlags (flags * pflag.FlagSet ) lib.RuntimeOptions {
63
73
opts := lib.RuntimeOptions {
64
74
TestType : getNullString (flags , "type" ),
65
75
IncludeSystemEnvVars : getNullBool (flags , "include-system-env-vars" ),
@@ -70,65 +80,69 @@ func getRuntimeOptions(flags *pflag.FlagSet, environment map[string]string) (lib
70
80
TracesOutput : getNullString (flags , "traces-output" ),
71
81
Env : make (map [string ]string ),
72
82
}
83
+ return opts
84
+ }
73
85
74
- if envVar , ok := environment ["K6_TYPE" ]; ok && ! opts .TestType .Valid {
75
- // Only override if not explicitly set via the CLI flag
86
+ func populateRuntimeOptionsFromEnv (opts lib.RuntimeOptions , environment map [string ]string ) (lib.RuntimeOptions , error ) {
87
+ // Only override if not explicitly set via the CLI flag
88
+
89
+ if envVar , ok := environment ["K6_TYPE" ]; ! opts .TestType .Valid && ok {
76
90
opts .TestType = null .StringFrom (envVar )
77
91
}
78
- if envVar , ok := environment [ "K6_COMPATIBILITY_MODE" ]; ok && ! opts . CompatibilityMode . Valid {
79
- // Only override if not explicitly set via the CLI flag
92
+
93
+ if envVar , ok := environment [ "K6_COMPATIBILITY_MODE" ]; ! opts . CompatibilityMode . Valid && ok {
80
94
opts .CompatibilityMode = null .StringFrom (envVar )
81
95
}
82
- if _ , err := lib .ValidateCompatibilityMode (opts .CompatibilityMode .String ); err != nil {
83
- // some early validation
84
- return opts , err
85
- }
86
96
87
97
if err := saveBoolFromEnv (environment , "K6_INCLUDE_SYSTEM_ENV_VARS" , & opts .IncludeSystemEnvVars ); err != nil {
88
98
return opts , err
89
99
}
100
+
90
101
if err := saveBoolFromEnv (environment , "K6_NO_THRESHOLDS" , & opts .NoThresholds ); err != nil {
91
102
return opts , err
92
103
}
104
+
93
105
if err := saveBoolFromEnv (environment , "K6_NO_SUMMARY" , & opts .NoSummary ); err != nil {
94
106
return opts , err
95
107
}
96
108
97
- if envVar , ok := environment ["K6_SUMMARY_EXPORT" ]; ok {
98
- if ! opts .SummaryExport .Valid {
99
- opts .SummaryExport = null .StringFrom (envVar )
100
- }
109
+ if _ , err := lib .ValidateCompatibilityMode (opts .CompatibilityMode .String ); err != nil {
110
+ // some early validation
111
+ return opts , err
101
112
}
102
113
103
- if envVar , ok := environment ["SSLKEYLOGFILE" ]; ok {
104
- if ! opts .KeyWriter .Valid {
105
- opts .KeyWriter = null .StringFrom (envVar )
106
- }
114
+ if envVar , ok := environment ["K6_SUMMARY_EXPORT" ]; ! opts .SummaryExport .Valid && ok {
115
+ opts .SummaryExport = null .StringFrom (envVar )
107
116
}
108
117
109
- if envVar , ok := environment ["K6_TRACES_OUTPUT" ]; ok {
110
- if ! opts .TracesOutput .Valid {
111
- opts .TracesOutput = null .StringFrom (envVar )
112
- }
118
+ if envVar , ok := environment ["SSLKEYLOGFILE" ]; ! opts .KeyWriter .Valid && ok {
119
+ opts .KeyWriter = null .StringFrom (envVar )
120
+ }
121
+
122
+ if envVar , ok := environment ["K6_TRACES_OUTPUT" ]; ! opts .TracesOutput .Valid && ok {
123
+ opts .TracesOutput = null .StringFrom (envVar )
113
124
}
114
125
115
- if opts .IncludeSystemEnvVars .Bool { // If enabled, gather the actual system environment variables
126
+ // If enabled, gather the actual system environment variables
127
+ if opts .IncludeSystemEnvVars .Bool {
116
128
opts .Env = environment
117
129
}
118
130
119
- // Set/overwrite environment variables with custom user-supplied values
120
- envVars , err := flags .GetStringArray ("env" )
131
+ return opts , nil
132
+ }
133
+
134
+ func saveBoolFromEnv (env map [string ]string , varName string , placeholder * null.Bool ) error {
135
+ strValue , ok := env [varName ]
136
+ if ! ok {
137
+ return nil
138
+ }
139
+ val , err := strconv .ParseBool (strValue )
121
140
if err != nil {
122
- return opts , err
141
+ return fmt . Errorf ( "env var '%s' is not a valid boolean value: %w" , varName , err )
123
142
}
124
- for _ , kv := range envVars {
125
- k , v := state .ParseEnvKeyValue (kv )
126
- // Allow only alphanumeric ASCII variable names for now
127
- if ! userEnvVarName .MatchString (k ) {
128
- return opts , fmt .Errorf ("invalid environment variable name '%s'" , k )
129
- }
130
- opts .Env [k ] = v
143
+ // Only override if not explicitly set via the CLI flag
144
+ if ! placeholder .Valid {
145
+ * placeholder = null .BoolFrom (val )
131
146
}
132
-
133
- return opts , nil
147
+ return nil
134
148
}
0 commit comments