File size: 1,234 Bytes
5ff2e6d
03e84b5
5ff2e6d
03e84b5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5ff2e6d
4397472
03e84b5
 
5ff2e6d
 
03e84b5
 
 
 
 
 
 
 
 
 
 
 
5ff2e6d
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import fs from "fs";
import yaml from "js-yaml";

const file = fs.readFileSync("chart/env/prod.yaml", "utf8");

// have to do a weird stringify/parse because of some node error
const prod = JSON.parse(JSON.stringify(yaml.load(file)));
const vars = prod.envVars as Record<string, string>;
const secrets = prod.externalSecrets.parameters;

let PUBLIC_CONFIG = "";
Object.entries(vars).forEach(([key, value]) => {
	PUBLIC_CONFIG += `${key}=\`${value}\`\n`;
});

let SECRET_CONFIG =
	(fs.existsSync(".env.SECRET_CONFIG")
		? fs.readFileSync(".env.SECRET_CONFIG", "utf8")
		: process.env.SECRET_CONFIG) ?? "";

if (!SECRET_CONFIG) {
	console.log(
		"SECRET_CONFIG is not defined. We will now try to fill in secrets found in the prod environemnt with environment variables."
	);

	Object.keys(secrets).forEach((key) => {
		const value = process.env[key];

		if (!value) {
			throw new Error(
				`Secret ${key} was found in prod.yaml but was not available as an environment variable.`
			);
		}

		SECRET_CONFIG += `${key}=${value}\n`;
	});
}

// Prepend the content of the env variable SECRET_CONFIG
const full_config = `${PUBLIC_CONFIG}\n${SECRET_CONFIG}`;

// Write full_config to .env.local
fs.writeFileSync(".env.local", full_config);