@@ -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