¿Cómo cambiar la configuración dentro del comando SBT?

Quiero tener un comandopublish-snapshot que correría elpublish tarea con modificadoversion configuración (esa configuración debe calcularse en el momento de la ejecución del comando).

Descubrí cómo obtener el valor actual de laversion comando interno, yProject.runTask("task", "scope", ...) Parece ser una llamada correcta para invocar elpublish tarea.

Lo único con lo que estoy confundido es cómo modificar elState instancia con un nuevo valor de versión. Todos mis intentos parecen no hacer nada con la configuración de la versión original.

Mi último intento:

val printVers = TaskKey[Unit]("printvers")
val printVersTask = TaskKey[Unit]("printvers") <<= {version map println}

def publishSnapshot = Command.command("publish-snapshot") { state =>
  val newState = SessionSettings.reapply(state.get(sessionSettings).get.appendRaw(version := "???"), state)
  Project.runTask(printVers in Compile, newState, true)

  state
}

lazy val root = Project("main", file("."),
                        settings =
                          Defaults.defaultSettings ++
                          Seq(printVersTask)).settings(commands += publishSnapshot)

¿Hay alguna manera de arreglar ese comportamiento?

Respuestas a la pregunta(3)

Su respuesta a la pregunta