Pregunta ¿Cómo agregar comillas de compromiso a las plantillas de juego?


Quiero poner el hash de confirmación en un archivo de plantilla de Play Framework para poder ver la información de construcción mediante la llamada REST GET.

En sbt puedo obtener un hash de commit de git y el nombre de la rama de git, de todos modos hay que poner esta información en un archivo de plantilla durante el proceso de compilación?

build.sbt

name := "my-project"

val branch = "git rev-parse --abbrev-ref HEAD".!!.trim
val commit = "git rev-parse HEAD".!!.trim
val buildTime = (new java.text.SimpleDateFormat("yyyyMMdd-HHmmss")).format(new java.util.Date())

version := "%s-%s-%s".format(branch, commit, buildTime)

6
2018-06-12 18:28


origen


Respuestas:


Usé un plugin sbt llamado sbt-buildinfo para hacer esto. Ver la respuesta a ¿Tiene sbt algo así como la tarea processResources de gradle con el soporte ReplaceTokens? . Técnicamente, funcionó. Efectivamente, fue un poco chupado que Play recargara todo el proyecto cada vez que algo cambiara. ¿Quizás ya hayan superado esto? Prueba sbt-buildinfo: https://github.com/sbt/sbt-buildinfo#usage


3
2018-06-12 20:27



Agregando mi fea solución para agregar el hash de git head para compilar:
(Además de los enlaces de Bob Kuharrespuesta de s)
Ya he tenido "root val perezoso", así que esto es lo que parece ahora.

lazy val root = (project in file(".")).
  enablePlugins(PlayScala).
  enablePlugins(BuildInfoPlugin).
  settings(
    buildInfoKeys := Seq[BuildInfoKey](
      name, version, scalaVersion, sbtVersion,
      "hostname" -> java.net.InetAddress.getLocalHost().getHostName(),
      "whoami" -> System.getProperty("user.name"),
      "buildTimestamp" -> new java.util.Date(System.currentTimeMillis()),      
      "gitHash" -> new java.lang.Object(){
              override def toString(): String = {
                      try { 
                    val extracted = new java.io.InputStreamReader(
                              java.lang.Runtime.getRuntime().exec("git rev-parse HEAD").getInputStream())                         
                    (new java.io.BufferedReader(extracted)).readLine()
                      } catch {      case t: Throwable => "get git hash failed"    }
              }}.toString()
    ),
    buildInfoPackage := "buildpkg"
  )

4
2018-04-06 14:40