From 92079fe2e00f6058b46cc6d22eb79857eb9d939c Mon Sep 17 00:00:00 2001
From: Aljoscha Rittner <aljoscha.rittner@ipoint-systems.de>
Date: Sun, 20 Mar 2022 13:22:00 +0100
Subject: [PATCH] Build: Fix shell script run under Windows OS

---
 build.sbt         | 14 ++++++--------
 project/Cmd.scala |  7 ++++++-
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/build.sbt b/build.sbt
index 7a837d9c..dc59e8e3 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,5 +1,4 @@
 import com.github.eikek.sbt.openapi._
-import scala.sys.process._
 import com.typesafe.sbt.SbtGit.GitKeys._
 import docspell.build._
 import de.heikoseeberger.sbtheader.CommentBlockCreator
@@ -997,13 +996,12 @@ def compileElm(
   logger.info("Compile elm files ...")
   val target =
     outBase / "META-INF" / "resources" / "webjars" / artifact / version / "docspell-app.js"
-  val cmd = Seq("elm", "make") ++ mode.flags ++ Seq("--output", target.toString)
-  val proc = Process(
-    cmd ++ Seq(wd / "src" / "main" / "elm" / "Main.elm").map(_.toString),
-    Some(wd)
-  )
-  val out = proc.!!
-  logger.info(out)
+  val cmd = (Seq("elm", "make")
+    ++ mode.flags
+    ++ Seq("--output", target.toString)
+    ++ Seq(wd / "src" / "main" / "elm" / "Main.elm").map(_.toString)
+    )
+  Cmd.run(cmd, wd, logger)
   val targetGZ = file(target.toString + ".gz")
   IO.gzip(target, targetGZ)
   Seq(target, targetGZ)
diff --git a/project/Cmd.scala b/project/Cmd.scala
index cf5535f5..a9e0a8d9 100644
--- a/project/Cmd.scala
+++ b/project/Cmd.scala
@@ -23,8 +23,13 @@ object Cmd {
   }
 
   def exec(cmd: Seq[String], wd: Option[File]): Result = {
+    val command =
+      sys.props.get("os.name").getOrElse("").toLowerCase match {
+        case win if win.startsWith("windows") => Seq ("cmd", "/C") ++ cmd
+        case _ => cmd
+      }
     val capt = new Capture
-    val rc = Process(cmd, wd).!(capt.logger)
+    val rc = Process(command, wd).!(capt.logger)
     Result(rc, capt.out.get.mkString("\n"), capt.err.get.mkString("\n"))
   }