Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
250 changes: 138 additions & 112 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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",
),
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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")