Environment config with defaults and range checks

Crystal
def env_int(name : String, default : Int32? = nil, min : Int32? = nil) : Int32
  raw = ENV[name]?
  value = raw ? raw.to_i? : default
  unless value
    raise ArgumentError.new("#{name} must be an integer, got #{raw.inspect}")
  end
  raise ArgumentError.new("#{name} must be >= #{min}") if (lo = min) && value < lo
  value
end

host = ENV["HOST"]? || "127.0.0.1"
port = env_int("PORT", 8080, min: 1)
puts "#{host}:#{port}"