Skip to content

Commit 85cec22

Browse files
committed
feat(terraform/environment): add support for .tfcrc
Allows user to configure variables using .tfcrc file in current directory
1 parent 596f680 commit 85cec22

File tree

5 files changed

+76
-15
lines changed

5 files changed

+76
-15
lines changed

package-lock.json

Lines changed: 34 additions & 0 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 & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
}
4040
},
4141
"dependencies": {
42+
"command-line-args": "^5.2.0",
4243
"follow-redirects": "^1.14.1"
4344
}
4445
}

scripts/shared/environment.js

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,48 @@
1+
const { existsSync, readFileSync } = require('fs');
2+
const path = require('path');
3+
4+
const currentEnv = {
5+
TFCRC_PATH: undefined,
6+
config: undefined
7+
}
18
const Environment = (render) => {
2-
const env = {
3-
// args: process.argv,
4-
paths: {
5-
pwd: process.env.PWD,
6-
home: process.env.HOME,
7-
},
8-
secrets: {
9-
TFC_TOKEN: process.env.TFC_TOKEN,
10-
TFC_WORKSPACE: process.env.TFC_WORKSPACE,
11-
},
12-
action: process.argv[3] || '',
13-
resource: process.argv[2] || '',
14-
args: process.argv.slice(4)
9+
if (!currentEnv.config) {
10+
const TFCRC_PATH = path.join(process.env.PWD, '.tfcrc');
11+
const TFC_CONFIG = {};
12+
if (existsSync(TFCRC_PATH)) {
13+
currentEnv.TFCRC_PATH = TFCRC_PATH;
14+
15+
readFileSync(TFCRC_PATH, { encoding: 'utf-8' })
16+
.split('\n').forEach(line => {
17+
const [key, value] = line.split('=');
18+
if(key && value) {
19+
TFC_CONFIG[key] = value;
20+
}
21+
});
22+
}
23+
24+
currentEnv.config = {
25+
// args: process.argv,
26+
paths: {
27+
pwd: process.env.PWD,
28+
home: process.env.HOME,
29+
},
30+
secrets: {
31+
TFC_TOKEN: process.env.TFC_TOKEN || TFC_CONFIG.TFC_TOKEN,
32+
TFC_WORKSPACE: process.env.TFC_WORKSPACE || TFC_CONFIG.TFC_WORKSPACE || TFC_CONFIG.WORKSPACE_ID,
33+
},
34+
action: process.argv[3] || '',
35+
resource: process.argv[2] || '',
36+
args: process.argv.slice(4)
37+
}
1538
}
39+
1640
if (render) {
1741
console.log('Envrionment');
18-
console.log(env);
42+
console.log(currentEnv.config);
1943
}
2044

21-
return env;
45+
return currentEnv.config;
2246
}
2347

2448
module.exports = Environment;

scripts/terraform/cli.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ if (
6060
console.log(JSON.stringify(value, null, ' '));
6161
}
6262
}).catch(err => {
63+
// console.log(err);
6364
Help(err);
6465
});
6566
}

scripts/terraform/help.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
function Help(errorMessage) {
22
if (errorMessage) {
33
console.error(`Error: ${errorMessage}`);
4+
// console.trace()
45
}
56

67
console.log(`

0 commit comments

Comments
 (0)