parseEnvFile method

Future<Map<String, String>> parseEnvFile(
  1. File envFile
)

Parses an environment file into a Map.

Implementation

Future<Map<String, String>> parseEnvFile(File envFile) async {
  if (!envFile.existsSync()) {
    return {};
  }

  try {
    final envVars = <String, String>{};
    final lines = await envFile.readAsLines();

    for (final line in lines) {
      final trimmed = line.trim();
      if (trimmed.isEmpty || trimmed.startsWith('#')) continue;

      final parts = trimmed.split('=');
      if (parts.length >= 2) {
        final key = parts[0].trim();
        final value = parts.sublist(1).join('=').trim();
        // Remove surrounding quotes
        envVars[key] = value.replaceAll(RegExp(r'^"|"$'), '');
      }
    }
    return envVars;
  } catch (e, s) {
    throw BuildException(
      'Failed to read environment file at "${envFile.path}"',
      fix:
          'Ensure the file is readable and properly formatted as KEY=VALUE pairs.',
      originalStackTrace: s,
    );
  }
}