Попробуйте opt[Map[String,String]]
вот так
case class Config(args: Map[String, String] = Map())
object Hello extends App {
val parser = new scopt.OptionParser[Config]("scopt") {
head("scopt", "3.x")
opt[Map[String,String]]("args").valueName("k1=v1,k2=v2...").action( (x, c) =>
c.copy(args = x) ).text("other arguments")
}
parser.parse(args, Config()) match {
case Some(config) => println(config)
case None =>
// arguments are bad, error message will have been displayed
}
}
, который при выполнении с
run --args key1=val1,key2=val2
выводит
Config(Map(key1 -> val1, key2 -> val2))