readEnvFile function

Future<Map<String, EnvVariable>> readEnvFile(
  1. File file
)

Implementation

Future<Map<String, EnvVariable>> readEnvFile(File file) async {
  final lines = await file.readAsLines();
  final variables = <String, EnvVariable>{};
  final fileName = file.path;

  for (final line in lines) {
    final trimmedLine = line.trim();

    // Skip empty lines and comments
    if (trimmedLine.isEmpty || trimmedLine.startsWith('#')) {
      continue;
    }

    // Parse key=value pairs
    final equalIndex = trimmedLine.indexOf('=');
    if (equalIndex > 0) {
      final key = trimmedLine.substring(0, equalIndex).trim();
      final value = trimmedLine.substring(equalIndex + 1).trim();

      // Remove quotes if present
      var cleanValue = value;
      if ((cleanValue.startsWith('"') && cleanValue.endsWith('"')) ||
          (cleanValue.startsWith("'") && cleanValue.endsWith("'"))) {
        cleanValue = cleanValue.substring(1, cleanValue.length - 1);
      }

      final type = inferType(cleanValue);
      variables[key] = EnvVariable(key, cleanValue, type, {fileName});
    }
  }

  return variables;
}