diff --git a/build.sbt b/build.sbt index c2ce057..6e845dd 100644 --- a/build.sbt +++ b/build.sbt @@ -4,7 +4,7 @@ import scala.language.postfixOps import scala.scalanative.build.* import scala.sys.process.* -val scala3Version = "3.8.0-RC3" +val scala3Version = "3.8.0-RC4" ThisBuild / scalaVersion := scala3Version @@ -17,18 +17,18 @@ val sharedSettings = Seq( "-explain", "-explain-cyclic", "-source:future", - //"-Yexplicit-nulls", + // "-Yexplicit-nulls", "-Wvalue-discard", "-Wunused:all", - "-experimental", - //"-language:experimental.captureChecking", - //"-language:experimental.into", - //"-language:experimental.pureFunctions", - //"-language:experimental.modularity", - //"-language:experimental.multiSpreads", - //"-language:experimental.subCases", - //"-language:experimental.relaxedLambdaSyntax", - //"-language.experimental.separationChecking" + "-experimental" + // "-language:experimental.captureChecking", + // "-language:experimental.into", + // "-language:experimental.pureFunctions", + // "-language:experimental.modularity", + // "-language:experimental.multiSpreads", + // "-language:experimental.subCases", + // "-language:experimental.relaxedLambdaSyntax", + // "-language.experimental.separationChecking" // "-no-indent", // "-rewrite", ), @@ -44,11 +44,11 @@ lazy val appRestart = inputKey[Unit]("run app") lazy val showPid = inputKey[Unit]("show app PID") lazy val `fast4s-common` = - crossProject(JSPlatform, JVMPlatform, NativePlatform). - crossType(CrossType.Full). - in(file("fast4s-common")). - settings(sharedSettings *). - settings( + crossProject(JSPlatform, JVMPlatform, NativePlatform) + .crossType(CrossType.Full) + .in(file("fast4s-common")) + .settings(sharedSettings *) + .settings( name := "fast4s-common", organization := "io.fast4s.common", libraryDependencies ++= Seq( @@ -57,12 +57,12 @@ lazy val `fast4s-common` = ) lazy val `fast4s-data` = - crossProject(JSPlatform, JVMPlatform, NativePlatform). - crossType(CrossType.Full). - in(file("fast4s-data")). - dependsOn(`fast4s-common`). - settings(sharedSettings *). - settings( + crossProject(JSPlatform, JVMPlatform, NativePlatform) + .crossType(CrossType.Full) + .in(file("fast4s-data")) + .dependsOn(`fast4s-common`) + .settings(sharedSettings *) + .settings( name := "fast4s-data", organization := "io.fast4s.data", libraryDependencies ++= Seq( @@ -72,13 +72,13 @@ lazy val `fast4s-data` = ) lazy val `fast4s-core` = - crossProject(JSPlatform, JVMPlatform, NativePlatform). - crossType(CrossType.Full). - in(file("fast4s-core")). - dependsOn(`fast4s-common`). - dependsOn(`fast4s-data`). - settings(sharedSettings *). - settings( + crossProject(JSPlatform, JVMPlatform, NativePlatform) + .crossType(CrossType.Full) + .in(file("fast4s-core")) + .dependsOn(`fast4s-common`) + .dependsOn(`fast4s-data`) + .settings(sharedSettings *) + .settings( name := "fast4s-core", organization := "io.fast4s.core", libraryDependencies ++= Seq( @@ -88,12 +88,12 @@ lazy val `fast4s-core` = ) lazy val `fast4s-api` = - crossProject(JSPlatform, JVMPlatform, NativePlatform). - crossType(CrossType.Full). - in(file("fast4s-api")). - dependsOn(`fast4s-core`). - settings(sharedSettings *). - settings( + crossProject(JSPlatform, JVMPlatform, NativePlatform) + .crossType(CrossType.Full) + .in(file("fast4s-api")) + .dependsOn(`fast4s-core`) + .settings(sharedSettings *) + .settings( name := "fast4s-api", organization := "io.fast4s.api", libraryDependencies ++= Seq( @@ -103,92 +103,118 @@ lazy val `fast4s-api` = ) lazy val `fast4s-beast` = - crossProject(JSPlatform, JVMPlatform, NativePlatform). - crossType(CrossType.Full). - in(file("fast4s-beast")). - dependsOn(`fast4s-core`). - settings(sharedSettings *). - settings( - name := "fast4s-beast", - organization := "io.fast4s.backend.beast", - libraryDependencies ++= Seq( - "org.scalatest" %%% "scalatest" % "3.2.19" % "test" + crossProject(JSPlatform, JVMPlatform, NativePlatform) + .crossType(CrossType.Full) + .in(file("fast4s-beast")) + .dependsOn(`fast4s-core`) + .settings(sharedSettings *) + .settings( + name := "fast4s-beast", + organization := "io.fast4s.backend.beast", + libraryDependencies ++= Seq( + "org.scalatest" %%% "scalatest" % "3.2.19" % "test" + ) ) - ) lazy val `fast4s-example` = - crossProject(JSPlatform, JVMPlatform, NativePlatform). - crossType(CrossType.Full). - in(file("fast4s-example")). - dependsOn(`fast4s-beast`). - dependsOn(`fast4s-api`). - settings(sharedSettings *). - settings( - name := "fast4s-example", - organization := "io.fast4s.example", - libraryDependencies ++= Seq( - "io.decoda" %%% "decoda" % "0.0.1", - "org.scalatest" %%% "scalatest" % "3.2.19" % "test" - ), - ). - nativeSettings( - nativeConfig ~= { c => - c.withLTO(LTO.none) // thin - .withMode(Mode.debug) // releaseFast - .withGC(GC.immix) - }, - appStop := { - val logger: TaskStreams = streams.value - val shell: Seq[String] = if (sys.props("os.name").contains("Windows")) Seq("cmd", "/c") else Seq("bash", "-c") - val cmdGetPid = Seq( - "ps", "-ef", "|", "grep", name.value, "|", "grep", "-v", "grep", "|", "awk", "'{print $2}'" - ).mkString(" ") - - //logger.log.info(s"execute: ${cmdGetPid.mkString(" ")}") - val pid = ((shell :+ cmdGetPid) !!) - if (pid.nonEmpty) { - - logger.log.info(s"PID=$pid") + crossProject(JSPlatform, JVMPlatform, NativePlatform) + .crossType(CrossType.Full) + .in(file("fast4s-example")) + .dependsOn(`fast4s-beast`) + .dependsOn(`fast4s-api`) + .settings(sharedSettings *) + .settings( + name := "fast4s-example", + organization := "io.fast4s.example", + libraryDependencies ++= Seq( + "io.decoda" %%% "decoda" % "0.0.1", + "org.scalatest" %%% "scalatest" % "3.2.19" % "test" + ) + ) + .nativeSettings( + nativeConfig ~= { c => + c.withLTO(LTO.none) // thin + .withMode(Mode.debug) // releaseFast + .withGC(GC.immix) + }, + appStop := { + val logger: TaskStreams = streams.value + val shell: Seq[String] = + if (sys.props("os.name").contains("Windows")) Seq("cmd", "/c") + else Seq("bash", "-c") + val cmdGetPid = Seq( + "ps", + "-ef", + "|", + "grep", + name.value, + "|", + "grep", + "-v", + "grep", + "|", + "awk", + "'{print $2}'" + ).mkString(" ") + // logger.log.info(s"execute: ${cmdGetPid.mkString(" ")}") + val pid = ((shell :+ cmdGetPid) !!) + if (pid.nonEmpty) { + + logger.log.info(s"PID=$pid") + + val cmd = Seq( + "kill", + "-s", + "9", + pid + ).mkString(" ") + + val result = ((shell :+ cmd) ! logger.log) + if (result == 0) { + logger.log.success(s"stop app successful") + } else { + logger.log.success("stop app failure") + } + } else { + logger.log.info("app is not running") + } + }, + showPid := { + val logger: TaskStreams = streams.value + val shell: Seq[String] = + if (sys.props("os.name").contains("Windows")) Seq("cmd", "/c") + else Seq("bash", "-c") val cmd = Seq( - "kill", "-s", "9", pid + "ps", + "-ef", + "|", + "grep", + name.value, + "|", + "grep", + "-v", + "grep", + "|", + "awk", + "'{print $2}'" ).mkString(" ") - val result = ((shell :+ cmd) ! logger.log) - if(result == 0){ - logger.log.success(s"stop app successful") + // logger.log.info(s"execute: ${cmd.mkString(" ")}") + val pid = (shell :+ cmd) !! + + if (pid.nonEmpty) { + logger.log.info(s"PID=$pid") } else { - logger.log.success("stop app failure") + logger.log.info(s"pid not found") } - } else { - logger.log.info("app is not running") - } - }, - - showPid := { - val logger: TaskStreams = streams.value - val shell: Seq[String] = if (sys.props("os.name").contains("Windows")) Seq("cmd", "/c") else Seq("bash", "-c") - val cmd = Seq( - "ps", "-ef", "|", "grep", name.value, "|", "grep", "-v", "grep", "|", "awk", "'{print $2}'" - ).mkString(" ") - - //logger.log.info(s"execute: ${cmd.mkString(" ")}") - val pid = (shell :+ cmd) !! - - if(pid.nonEmpty){ - logger.log.info(s"PID=$pid") - }else{ - logger.log.info(s"pid not found") + }, + appRestart := { + val logger: TaskStreams = streams.value + logger.log.info("app restart..") + appStop.evaluated + (Compile / run).evaluated } - }, - appRestart := { - val logger: TaskStreams = streams.value - logger.log.info("app restart..") - appStop.evaluated - (Compile / run).evaluated - } - ) - + ) addCommandAlias("run", "app/appStart") -