SwampConfig.withEnvironment constructor
Creates a SwampConfig merging default values, environment variables, and provided parameters.
Environment variables take precedence over defaults, and explicit parameters take precedence over environment variables.
Implementation
factory SwampConfig.withEnvironment(
Map<String, dynamic> data, {
String? description,
int? maxPlayers,
bool? noDarkRooms,
}) {
final descriptionEnv =
Platform.environment[descriptionEnvironment] ??
String.fromEnvironment(descriptionEnvironment);
final maxPlayersEnvString =
Platform.environment[maxPlayersEnvironment] ??
(int.fromEnvironment(maxPlayersEnvironment, defaultValue: -1) == -1
? null
: int.fromEnvironment(maxPlayersEnvironment).toString());
final maxPlayersEnv = maxPlayersEnvString != null
? int.tryParse(maxPlayersEnvString)
: null;
final noDarkRoomsEnvString =
Platform.environment[noDarkRoomsEnvironment] ??
(bool.fromEnvironment(noDarkRoomsEnvironment) ? 'true' : null);
final noDarkRoomsEnv =
noDarkRoomsEnvString?.toLowerCase() == 'true' ||
noDarkRoomsEnvString == '1';
return SwampConfigMapper.fromMap({
...data,
if (descriptionEnv.isNotEmpty) 'description': descriptionEnv,
if (maxPlayersEnv != null && maxPlayersEnv >= 0)
'maxPlayers': maxPlayersEnv,
if (noDarkRoomsEnv) 'noDarkRooms': true,
'noDarkRooms': ?noDarkRooms,
'maxPlayers': ?maxPlayers,
'description': ?description,
});
}