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; 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);