@@ -17,7 +17,58 @@ function write_file(file_path, content) {
1717function sync_args_from_cmd ( args ) {
1818 return new Promise ( function ( resolve , reject ) {
1919 let rawdata = fs . readFileSync ( args [ "lambdatest-config-file" ] ) ;
20- let lt_config = JSON . parse ( rawdata ) ;
20+ let lt_config ;
21+ try {
22+ lt_config = JSON . parse ( rawdata ) ;
23+ } catch ( err ) {
24+ reject ( "error in parsing lambdatest-config-file" , err ) ;
25+ }
26+ let usernameFromEnvFile = undefined ;
27+ let accessKeyFromEnvFile = undefined ;
28+ let envFile , parsedEnv ;
29+ let dot_env_vars = undefined ;
30+ let dot_env_keys_list = undefined ;
31+ let envFilePath = path . join ( "." , `.env` ) ;
32+ if ( "sys-env-keys" in args ) {
33+ dot_env_vars = args [ "sys-env-keys" ] ;
34+ } else if ( lt_config [ "run_settings" ] && lt_config [ "run_settings" ] [ "sys_env_keys" ] ) {
35+ dot_env_vars = lt_config [ "run_settings" ] [ "sys_env_keys" ] ;
36+ }
37+ if ( dot_env_vars ) {
38+ dot_env_vars = dot_env_vars . trim ( ) ;
39+ dot_env_keys_list = dot_env_vars . split ( "," ) ;
40+ if ( "envfl" in args ) {
41+ envFilePath = args [ "envfl" ] ;
42+ } else if ( lt_config [ "run_settings" ] && lt_config [ "run_settings" ] [ "env_file" ] ) {
43+ envFilePath = lt_config [ "run_settings" ] [ "env_file" ] ;
44+ }
45+
46+ try {
47+ envFile = fs . readFileSync ( envFilePath , { encoding : 'utf8' } )
48+ parsedEnv = dotenv . parse ( envFile )
49+ for ( index in dot_env_keys_list ) {
50+ let envKey = dot_env_keys_list [ index ]
51+ if ( envKey == constants . LT_USERNAME_ENV ) {
52+ let envValue = parsedEnv [ envKey ]
53+ if ( envValue ) {
54+ usernameFromEnvFile = envValue
55+ } else {
56+ console . error ( `value of username is not set in .env file.` )
57+ }
58+
59+ } else if ( envKey == constants . LT_ACCESS_KEY_ENV ) {
60+ let envValue = parsedEnv [ envKey ]
61+ if ( envValue ) {
62+ accessKeyFromEnvFile = envValue
63+ } else {
64+ console . error ( `value of access key is not set in .env file.` )
65+ }
66+ }
67+ }
68+ } catch ( err ) {
69+ console . error ( "error in fetching environment variables from .env file" , err ) ;
70+ }
71+ }
2172
2273 if (
2374 "lambdatest_auth" in lt_config &&
@@ -31,6 +82,17 @@ function sync_args_from_cmd(args) {
3182 ) ;
3283 lt_config [ "lambdatest_auth" ] [ "username" ] = process . env . LT_USERNAME ;
3384 }
85+ } else if ( usernameFromEnvFile &&
86+ ( ! ( "lambdatest_auth" in lt_config ) ||
87+ ! ( "username" in lt_config [ "lambdatest_auth" ] ) ) ) {
88+ console . log (
89+ "Setting user name from .env file" ,
90+ usernameFromEnvFile
91+ ) ;
92+ if ( ! lt_config [ "lambdatest_auth" ] ) {
93+ lt_config [ "lambdatest_auth" ] = { } ;
94+ }
95+ lt_config [ "lambdatest_auth" ] [ "username" ] = usernameFromEnvFile ;
3496 } else if (
3597 process . env . LT_USERNAME &&
3698 ( ! ( "lambdatest_auth" in lt_config ) ||
@@ -58,6 +120,14 @@ function sync_args_from_cmd(args) {
58120 console . log ( "setting access key from environment" ) ;
59121 lt_config [ "lambdatest_auth" ] [ "access_key" ] = process . env . LT_ACCESS_KEY ;
60122 }
123+ } else if ( accessKeyFromEnvFile &&
124+ ( ! ( "lambdatest_auth" in lt_config ) ||
125+ ! ( "access_key" in lt_config [ "lambdatest_auth" ] ) ) ) {
126+ if ( ! lt_config [ "lambdatest_auth" ] ) {
127+ lt_config [ "lambdatest_auth" ] = { } ;
128+ }
129+ console . log ( "Setting access key from .env file" ) ;
130+ lt_config [ "lambdatest_auth" ] [ "access_key" ] = accessKeyFromEnvFile ;
61131 } else if (
62132 process . env . LT_ACCESS_KEY &&
63133 ( ! ( "lambdatest_auth" in lt_config ) ||
@@ -386,28 +456,11 @@ function sync_args_from_cmd(args) {
386456 }
387457 }
388458 }
389- let dot_env_vars = undefined ;
390- if ( "sys-env-keys" in args ) {
391- dot_env_vars = args [ "sys-env-keys" ] ;
392- } else if ( lt_config [ "run_settings" ] && lt_config [ "run_settings" ] [ "sys_env_keys" ] ) {
393- dot_env_vars = lt_config [ "run_settings" ] [ "sys_env_keys" ] ;
394- }
395- let parsedEnv , envFile ;
396- let envFilePath = path . join ( "." , `.env` )
397- if ( dot_env_vars ) {
398- dot_env_vars = dot_env_vars . trim ( ) ;
399- dot_env_vars = dot_env_vars . split ( "," ) ;
400- if ( "envfl" in args ) {
401- envFilePath = args [ "envfl" ] ;
402- } else if ( lt_config [ "run_settings" ] [ "env_file" ] ) {
403- envFilePath = lt_config [ "run_settings" ] [ "env_file" ] ;
404- }
405-
459+
460+ if ( dot_env_keys_list ) {
406461 try {
407- envFile = fs . readFileSync ( envFilePath , { encoding : 'utf8' } )
408- parsedEnv = dotenv . parse ( envFile )
409- for ( index in dot_env_vars ) {
410- let envKey = dot_env_vars [ index ]
462+ for ( index in dot_env_keys_list ) {
463+ let envKey = dot_env_keys_list [ index ]
411464 let envValue = parsedEnv [ envKey ]
412465 envs [ envKey ] = envValue
413466 }
0 commit comments