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? maxPlayersPerRoom,
int? maxConcurrentPlayers,
int? maxRooms,
bool? noDarkRooms,
}) {
final descriptionEnv =
Platform.environment[descriptionEnvironment] ??
String.fromEnvironment(descriptionEnvironment);
final maxPlayersPerRoomEnvString =
Platform.environment[maxPlayersPerRoomEnvironment] ??
(int.fromEnvironment(maxPlayersPerRoomEnvironment, defaultValue: -1) ==
-1
? null
: int.fromEnvironment(maxPlayersPerRoomEnvironment).toString());
final maxPlayersPerRoomEnv = maxPlayersPerRoomEnvString != null
? int.tryParse(maxPlayersPerRoomEnvString)
: null;
final maxConcurrentPlayersEnvString =
Platform.environment[maxConcurrentPlayersEnvironment] ??
(int.fromEnvironment(
maxConcurrentPlayersEnvironment,
defaultValue: -1,
) ==
-1
? null
: int.fromEnvironment(maxConcurrentPlayersEnvironment).toString());
final maxConcurrentPlayersEnv = maxConcurrentPlayersEnvString != null
? int.tryParse(maxConcurrentPlayersEnvString)
: null;
final maxRoomsEnvString =
Platform.environment[maxRoomsEnvironment] ??
(int.fromEnvironment(maxRoomsEnvironment, defaultValue: -1) == -1
? null
: int.fromEnvironment(maxRoomsEnvironment).toString());
final maxRoomsEnv = maxRoomsEnvString != null
? int.tryParse(maxRoomsEnvString)
: 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 (maxPlayersPerRoomEnv != null && maxPlayersPerRoomEnv >= 0)
'maxPlayersPerRoom': maxPlayersPerRoomEnv,
if (maxConcurrentPlayersEnv != null && maxConcurrentPlayersEnv >= 0)
'maxConcurrentPlayers': maxConcurrentPlayersEnv,
if (maxRoomsEnv != null && maxRoomsEnv >= 0) 'maxRooms': maxRoomsEnv,
if (noDarkRoomsEnv) 'noDarkRooms': true,
'noDarkRooms': ?noDarkRooms,
'maxPlayersPerRoom': ?maxPlayersPerRoom,
'maxConcurrentPlayers': ?maxConcurrentPlayers,
'maxRooms': ?maxRooms,
'description': ?description,
});
}