Skip to content

Commit e1b3c08

Browse files
authored
Merge pull request #271 from HRanjan-11/CYP-871
fetching username and access key from .env for triggering test only
2 parents 5eee59b + 91515ee commit e1b3c08

File tree

5 files changed

+81
-26
lines changed

5 files changed

+81
-26
lines changed

commands/utils/constants.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ module.exports = {
1818
"&status=running,queued,created,initiated,pqueued,error,lambda error,failed,completed,queue_timeout,idle_timeout,stopped,cancelled,passed,timeout,inactive",
1919
BUILD_ERROR_STATES: "&status=error,lambda error,failed",
2020
CYPRESS_ENV_FILE_PATH: "cypress.env.json",
21+
LT_USERNAME_ENV: "LT_USERNAME",
22+
LT_ACCESS_KEY_ENV: "LT_ACCESS_KEY",
2123
ENVS: ["stage", "beta", "prod", "preprod", "stage_new"],
2224
prod: {
2325
INTEGRATION_BASE_URL: "https://api.lambdatest.com/liis",

commands/utils/set_args.js

Lines changed: 75 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,58 @@ function write_file(file_path, content) {
1717
function 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
}

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ const argv = require("yargs")
164164
type: "string",
165165
})
166166
.option("envfl", {
167-
alias: "env_file",
167+
alias: "env-file",
168168
describe: "path of .env file",
169169
type: "string",
170170
})

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "lambdatest-cypress-cli",
3-
"version": "3.0.19",
3+
"version": "3.0.20",
44
"description": "The lambdatest-cypress-cli is LambdaTest's command-line interface (CLI) aimed to help you run your Cypress tests on LambdaTest platform.",
55
"homepage": "https://github.com/LambdaTest/lambdatest-cypress-cli",
66
"author": "LambdaTest <[email protected]>",

0 commit comments

Comments
 (0)