Spaces:
Running
on
Inf2
Running
on
Inf2
| 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); | |