case class Config(input: String, output: String)
val config =
Some(
List(inputTableEnvvar, outputTableEnvvar)
.map(sys.env.get)
.flatten
)
.flatMap {
// you'll have to keep the parameters here
// aligned with parameters of the case class
case List(a: String, b: String) => Some( (a, b) )
case _ => None
}
.map(Config.tupled)
config
será None
se qualquer uma das variáveis de ambiente não for especificada ou retornar nulo. Se você quiser eliminar strings vazias, adicione outra map
antes do achatamento que trata disso.