2020-01-13 22:59:24 +00:00
|
|
|
import xerial.sbt.pack.PackPlugin._
|
|
|
|
|
|
2016-02-05 08:19:13 +00:00
|
|
|
lazy val commonSettings = Seq(
|
2016-05-03 08:04:36 +00:00
|
|
|
organization := "net.psforever",
|
2016-08-05 22:11:46 +00:00
|
|
|
version := "1.0.2-SNAPSHOT",
|
2020-05-26 20:16:22 +00:00
|
|
|
scalaVersion := "2.13.2",
|
2020-07-14 03:54:05 +00:00
|
|
|
semanticdbEnabled := true,
|
|
|
|
|
semanticdbVersion := scalafixSemanticdb.revision,
|
|
|
|
|
scalacOptions := Seq(
|
|
|
|
|
"-unchecked",
|
|
|
|
|
"-feature",
|
|
|
|
|
"-deprecation",
|
|
|
|
|
"-encoding",
|
|
|
|
|
"utf8",
|
|
|
|
|
"-language:postfixOps",
|
|
|
|
|
"-Wunused:imports",
|
|
|
|
|
"-Xmacro-settings:materialize-derivations"
|
|
|
|
|
),
|
2020-01-08 13:33:25 +00:00
|
|
|
// Quiet test options
|
|
|
|
|
// https://github.com/etorreborre/specs2/blob/8305db76c5084e4b3ce5827ce23117f6fb6beee4/common/shared/src/main/scala/org/specs2/main/Report.scala#L94
|
|
|
|
|
// https://etorreborre.github.io/specs2/guide/SPECS2-2.4.17/org.specs2.guide.Runners.html
|
|
|
|
|
testOptions in QuietTest += Tests.Argument(TestFrameworks.Specs2, "showOnly", "x!"),
|
|
|
|
|
// http://www.scalatest.org/user_guide/using_the_runner
|
|
|
|
|
testOptions in QuietTest += Tests.Argument(TestFrameworks.ScalaTest, "-oCEHILMNOPQRX"),
|
2019-10-21 20:29:36 +00:00
|
|
|
// Trick taken from https://groups.google.com/d/msg/scala-user/mxV9ok7J_Eg/kt-LnsrD0bkJ
|
2020-01-08 13:33:25 +00:00
|
|
|
// scaladoc flags: https://github.com/scala/scala/blob/2.11.x/src/scaladoc/scala/tools/nsc/doc/Settings.scala
|
2020-07-14 03:54:05 +00:00
|
|
|
scalacOptions in (Compile, doc) ++= Seq(
|
2019-10-21 20:29:36 +00:00
|
|
|
"-groups",
|
|
|
|
|
"-implicits",
|
2020-07-14 03:54:05 +00:00
|
|
|
"-doc-title",
|
|
|
|
|
"PSF-LoginServer - ",
|
|
|
|
|
"-doc-version",
|
|
|
|
|
"master",
|
|
|
|
|
"-doc-footer",
|
|
|
|
|
"Copyright PSForever",
|
2019-10-21 20:29:36 +00:00
|
|
|
// For non unidoc builds, you may need bd.getName before the template parameter
|
2020-07-14 03:54:05 +00:00
|
|
|
"-doc-source-url",
|
|
|
|
|
"https://github.com/psforever/PSF-LoginServer/blob/master/€{FILE_PATH}.scala",
|
|
|
|
|
"-sourcepath",
|
|
|
|
|
baseDirectory.value.getAbsolutePath // needed for scaladoc relative source paths
|
|
|
|
|
),
|
2020-05-11 13:24:10 +00:00
|
|
|
classLoaderLayeringStrategy := ClassLoaderLayeringStrategy.Flat,
|
2016-02-05 08:19:13 +00:00
|
|
|
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
|
2016-07-27 02:31:54 +00:00
|
|
|
libraryDependencies ++= Seq(
|
2020-07-14 03:54:05 +00:00
|
|
|
"com.typesafe.akka" %% "akka-actor" % "2.6.6",
|
|
|
|
|
"com.typesafe.akka" %% "akka-slf4j" % "2.6.6",
|
|
|
|
|
"com.typesafe.akka" %% "akka-protobuf-v3" % "2.6.6",
|
|
|
|
|
"com.typesafe.akka" %% "akka-stream" % "2.6.6",
|
|
|
|
|
"com.typesafe.akka" %% "akka-testkit" % "2.6.6" % "test",
|
|
|
|
|
"com.typesafe.akka" %% "akka-actor-typed" % "2.6.6",
|
|
|
|
|
"com.typesafe.akka" %% "akka-cluster-typed" % "2.6.6",
|
|
|
|
|
"com.typesafe.scala-logging" %% "scala-logging" % "3.9.2",
|
|
|
|
|
"org.specs2" %% "specs2-core" % "4.9.4" % "test",
|
|
|
|
|
"org.scalatest" %% "scalatest" % "3.1.2" % "test",
|
|
|
|
|
"org.scodec" %% "scodec-core" % "1.11.7",
|
|
|
|
|
"net.java.dev.jna" % "jna" % "5.5.0",
|
|
|
|
|
"com.typesafe.akka" %% "akka-slf4j" % "2.6.5",
|
|
|
|
|
"ch.qos.logback" % "logback-classic" % "1.2.3",
|
|
|
|
|
"org.log4s" %% "log4s" % "1.8.2",
|
|
|
|
|
"org.fusesource.jansi" % "jansi" % "1.12",
|
2020-05-26 20:16:22 +00:00
|
|
|
"org.scoverage" %% "scalac-scoverage-plugin" % "1.4.1",
|
2020-07-14 03:54:05 +00:00
|
|
|
"com.github.nscala-time" %% "nscala-time" % "2.24.0",
|
|
|
|
|
"com.github.t3hnar" %% "scala-bcrypt" % "4.1",
|
|
|
|
|
"org.scala-graph" %% "graph-core" % "1.13.1",
|
|
|
|
|
"io.kamon" %% "kamon-bundle" % "2.1.0",
|
|
|
|
|
"io.kamon" %% "kamon-apm-reporter" % "2.1.0",
|
|
|
|
|
"org.json4s" %% "json4s-native" % "3.6.8",
|
|
|
|
|
"com.typesafe.akka" %% "akka-stream" % "2.6.5",
|
|
|
|
|
"io.getquill" %% "quill-jasync-postgres" % "3.5.2",
|
|
|
|
|
"org.flywaydb" % "flyway-core" % "6.5.0",
|
|
|
|
|
"org.postgresql" % "postgresql" % "42.2.14",
|
|
|
|
|
"com.typesafe" % "config" % "1.4.0",
|
|
|
|
|
"com.github.pureconfig" %% "pureconfig" % "0.13.0",
|
|
|
|
|
"com.beachape" %% "enumeratum" % "1.6.1",
|
|
|
|
|
"joda-time" % "joda-time" % "2.10.6",
|
2020-07-14 17:07:14 +00:00
|
|
|
"commons-io" % "commons-io" % "2.6",
|
|
|
|
|
"com.github.scopt" %% "scopt" % "4.0.0-RC2"
|
Let's Move Item, Together, Again (#445)
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
* manual merge-rebase of master with hand reconstruction of WorldSessionActor and PlayerControl, and variations for other files necessary to maintain both inventory operations and login reliability
* test fixes; MAX exo-suit cooldown is now five minutes again
2020-06-04 20:39:08 +00:00
|
|
|
)
|
2016-02-05 08:19:13 +00:00
|
|
|
)
|
|
|
|
|
|
2016-07-25 22:34:40 +00:00
|
|
|
lazy val pscryptoSettings = Seq(
|
2016-07-27 01:32:31 +00:00
|
|
|
unmanagedClasspath in Test += (baseDirectory in ThisBuild).value / "pscrypto-lib",
|
2016-08-27 03:46:57 +00:00
|
|
|
unmanagedClasspath in Runtime += (baseDirectory in ThisBuild).value / "pscrypto-lib",
|
|
|
|
|
unmanagedClasspath in Compile += (baseDirectory in ThisBuild).value / "pscrypto-lib"
|
2016-07-27 01:32:31 +00:00
|
|
|
)
|
|
|
|
|
|
2020-01-13 22:59:24 +00:00
|
|
|
lazy val psloginPackSettings = Seq(
|
2020-07-23 18:23:11 +00:00
|
|
|
packMain := Map("ps-login" -> "net.psforever.pslogin.PsLogin"),
|
2016-07-27 01:32:31 +00:00
|
|
|
packArchivePrefix := "pslogin",
|
2020-07-14 03:54:05 +00:00
|
|
|
packExtraClasspath := Map("ps-login" -> Seq("${PROG_HOME}/pscrypto-lib", "${PROG_HOME}/config")),
|
|
|
|
|
packResourceDir += (baseDirectory.value / "pscrypto-lib" -> "pscrypto-lib"),
|
|
|
|
|
packResourceDir += (baseDirectory.value / "config" -> "config"),
|
2020-05-12 05:11:12 +00:00
|
|
|
packResourceDir += (baseDirectory.value / "pslogin/src/main/resources" -> "config")
|
2016-07-25 22:34:40 +00:00
|
|
|
)
|
|
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
lazy val root = (project in file("."))
|
|
|
|
|
.configs(QuietTest)
|
|
|
|
|
.enablePlugins(PackPlugin)
|
|
|
|
|
.settings(commonSettings: _*)
|
|
|
|
|
.settings(psloginPackSettings: _*)
|
|
|
|
|
.enablePlugins(ScalaUnidocPlugin)
|
|
|
|
|
.aggregate(pslogin, common)
|
2020-07-23 18:23:11 +00:00
|
|
|
.dependsOn(pslogin, common)
|
2016-02-05 08:19:13 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
lazy val pslogin = (project in file("pslogin"))
|
|
|
|
|
.configs(QuietTest)
|
|
|
|
|
.settings(commonSettings: _*)
|
|
|
|
|
.settings(
|
2019-10-22 18:35:17 +00:00
|
|
|
name := "pslogin",
|
|
|
|
|
// ActorTests have specific timing requirements and will be flaky if run in parallel
|
2019-12-13 18:48:15 +00:00
|
|
|
parallelExecution in Test := false,
|
|
|
|
|
// TODO(chord): remove exclusion when WorldSessionActor is refactored: https://github.com/psforever/PSF-LoginServer/issues/279
|
2020-07-14 03:54:05 +00:00
|
|
|
coverageExcludedPackages := "net.psforever.pslogin.WorldSessionActor.*;net.psforever.pslogin.zonemaps.*",
|
2020-01-08 13:33:25 +00:00
|
|
|
// Copy all tests from Test -> QuietTest (we're only changing the run options)
|
|
|
|
|
inConfig(QuietTest)(Defaults.testTasks)
|
2020-07-14 03:54:05 +00:00
|
|
|
)
|
|
|
|
|
.settings(pscryptoSettings: _*)
|
|
|
|
|
.dependsOn(common)
|
2016-02-05 08:19:13 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
lazy val common = (project in file("common"))
|
|
|
|
|
.configs(QuietTest)
|
|
|
|
|
.settings(commonSettings: _*)
|
|
|
|
|
.settings(
|
2020-01-08 13:33:25 +00:00
|
|
|
name := "common",
|
|
|
|
|
// Copy all tests from Test -> QuietTest (we're only changing the run options)
|
|
|
|
|
inConfig(QuietTest)(Defaults.testTasks)
|
2020-07-14 03:54:05 +00:00
|
|
|
)
|
|
|
|
|
.settings(pscryptoSettings: _*)
|
2020-01-08 13:33:25 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
lazy val decodePackets = (project in file("tools/decode-packets"))
|
|
|
|
|
.enablePlugins(PackPlugin)
|
|
|
|
|
.settings(commonSettings: _*)
|
|
|
|
|
.settings(decodePacketsPackSettings: _*)
|
|
|
|
|
.settings(
|
2020-06-05 20:02:01 +00:00
|
|
|
libraryDependencies ++= Seq(
|
2020-07-14 17:07:14 +00:00
|
|
|
"org.scala-lang.modules" %% "scala-parallel-collections" % "0.2.0"
|
2020-06-05 20:02:01 +00:00
|
|
|
)
|
2020-07-14 03:54:05 +00:00
|
|
|
)
|
|
|
|
|
.dependsOn(common)
|
2020-06-05 20:02:01 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
lazy val decodePacketsPackSettings = Seq(packMain := Map("psf-decode-packets" -> "DecodePackets"))
|
2020-06-09 22:32:02 +00:00
|
|
|
|
2020-01-08 13:33:25 +00:00
|
|
|
// Special test configuration for really quiet tests (used in CI)
|
2020-07-14 03:54:05 +00:00
|
|
|
lazy val QuietTest = config("quiet") extend (Test)
|