Validate environment variables with Groovy defaults

Groovy
int port = (System.getenv('APP_PORT') ?: '8080').toInteger()
String host = System.getenv('APP_HOST') ?: '127.0.0.1'
boolean debug = (System.getenv('APP_DEBUG') ?: 'false').toBoolean()
String level = (System.getenv('LOG_LEVEL') ?: 'INFO').toUpperCase()

Set<String> allowed = ['DEBUG', 'INFO', 'WARN', 'ERROR'] as Set
List<String> problems = []
if (port < 1 || port > 65535) problems << "APP_PORT out of range: $port"
if (!allowed.contains(level)) problems << "LOG_LEVEL must be one of ${allowed.join(', ')}"
if (problems) throw new IllegalArgumentException(problems.join('; '))

def config = [port: port, host: host, debug: debug, level: level]
println config