From d87546942f3ab04b54aa3093de1699b6609dc0d2 Mon Sep 17 00:00:00 2001 From: Joao Baroni Date: Mon, 29 Aug 2022 13:25:13 -0300 Subject: [PATCH] chore: added packageName feature when loading the .env file --- lib/src/dotenv.dart | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/src/dotenv.dart b/lib/src/dotenv.dart index f933700..4db282f 100644 --- a/lib/src/dotenv.dart +++ b/lib/src/dotenv.dart @@ -59,10 +59,14 @@ class DotEnv { /// Loads environment variables from the env file into a map /// Merge with any entries defined in [mergeWith] - Future load( - {String fileName = '.env', Parser parser = const Parser(), Map mergeWith = const {}}) async { + Future load({ + String fileName = '.env', + Parser parser = const Parser(), + Map mergeWith = const {}, + String? packageName, + }) async { clean(); - final linesFromFile = await _getEntriesFromFile(fileName); + final linesFromFile = await _getEntriesFromFile(fileName, packageName: packageName); final linesFromMergeWith = mergeWith.entries.map((entry) => "${entry.key}=${entry.value}").toList(); final allLines = linesFromMergeWith..addAll(linesFromFile); final envEntries = parser.parse(allLines); @@ -70,8 +74,7 @@ class DotEnv { _isInitialized = true; } - void testLoad( - {String fileInput = '', Parser parser = const Parser(), Map mergeWith = const {}}) { + void testLoad({String fileInput = '', Parser parser = const Parser(), Map mergeWith = const {}}) { clean(); final linesFromFile = fileInput.split('\n'); final linesFromMergeWith = mergeWith.entries.map((entry) => "${entry.key}=${entry.value}").toList(); @@ -86,10 +89,11 @@ class DotEnv { /// Note [load] should be called first. bool isEveryDefined(Iterable vars) => vars.every((k) => _envMap[k]?.isNotEmpty ?? false); - Future> _getEntriesFromFile(String filename) async { + Future> _getEntriesFromFile(String filename, {String? packageName}) async { try { WidgetsFlutterBinding.ensureInitialized(); - var envString = await rootBundle.loadString(filename); + final keyToLoad = packageName == null ? filename : 'packages/$packageName/$filename'; + var envString = await rootBundle.loadString(keyToLoad); if (envString.isEmpty) { throw EmptyEnvFileError(); }