UNPKG

laraship

Version:

Set sail with Laravel - Docker environment generator for Laravel projects

45 lines (40 loc) 1.47 kB
import { readFile } from 'fs-extra'; import { parse } from 'dotenv'; import { EnvVars } from '../types'; import { AppError, errorCodes } from './errorHandler'; export async function parseEnvFile(envPath: string): Promise<EnvVars> { try { const envFile = await readFile(envPath, 'utf8'); const parsed = parse(envFile); const envLines = envFile.split('\n'); const orderedEnv: string[] = []; let lastGroupWasEmpty = false; for (const line of envLines) { if (line.startsWith('#') || line.trim() === '') { if (!lastGroupWasEmpty && line.trim() === '') { orderedEnv.push(''); lastGroupWasEmpty = true; } continue; } lastGroupWasEmpty = false; const match = line.match(/^([^=]+)=/); if (match) { const key = match[1]; orderedEnv.push(`${key}=${parsed[key] || ''}`); } } return { parsed, orderedEnv }; } catch (error) { throw new AppError( 'Failed to parse .env file', errorCodes.INVALID_ENV, { code: errorCodes.INVALID_ENV, context: { error: error instanceof Error ? error.message : 'Unknown error' } } ); } }