console/scripts/check-env-template.ts

33 lines
880 B
TypeScript
Raw Normal View History

import { readFile } from 'node:fs/promises';
import fg from 'fast-glob';
const FORBIDDEN_IP = '0.0.0.0';
const ALLOWED_IP = 'localhost';
const envTemplatePaths = await fg('**/.env.template', {
cwd: process.cwd(),
ignore: ['**/node_modules'],
});
for (const envPath of envTemplatePaths) {
const file = await readFile(envPath, 'utf8');
const entry = file
.split('\n')
.filter(line => line && !line.startsWith('#'))
.map(keyValue => {
const [key, value] = keyValue.split('=');
return [key, value.match(/(["'])((?:\1|.)*?)\1/)?.[2] || value];
});
for (const [key, value] of entry) {
if (value.includes(FORBIDDEN_IP)) {
throw new Error(`Error while validating "${key}" in ${envPath}.
Use "${ALLOWED_IP}" to make it compatible with both IPv4 and IPv6.
Replace: ${value} by ${value.replace(FORBIDDEN_IP, ALLOWED_IP)}
`);
}
}
}