Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split into multiple modules (2 for now) and overhaul build.sbt #24

Merged
merged 7 commits into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
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
7 changes: 5 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ jobs:
steps:

- name: Checkout current branch
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Setup JVM
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
Expand All @@ -24,5 +24,8 @@ jobs:
- name: Build project
run: sbt compile

- name: Test project
run: sbt test

- name: Check Formatting
run: sbt scalafmtCheckAll
22 changes: 18 additions & 4 deletions .scalafmt.conf
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
version = "3.7.3"
align.preset = "more"
version = "3.8.1"
runner.dialect = scala3

align.preset = more
maxColumn = 110
spaces.inImportCurlyBraces = true
rewrite.rules = [SortImports, RedundantParens, SortModifiers]
rewrite.rules = [SortModifiers]
rewrite.redundantBraces.stringInterpolation = true
runner.dialect = scala3

rewrite.scala3.convertToNewSyntax = yes
rewrite.scala3.removeOptionalBraces = yes
rewrite.rules = [AvoidInfix]

fileOverride {
"glob:**/build.sbt" {
runner.dialect = scala213
}
"glob:**/project/**" {
runner.dialect = scala213
}
}
75 changes: 51 additions & 24 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,26 +1,53 @@
lazy val scalalib = Project("scalalib", file("."))
organization := "com.github.lichess-org"
name := "scalalib"
version := "10.0.5"
scalaVersion := "3.4.1"
licenses += "MIT" -> url("https://opensource.org/licenses/MIT")
libraryDependencies += "org.typelevel" %% "cats-core" % "2.10.0"
libraryDependencies += "org.typelevel" %% "alleycats-core" % "2.10.0"
libraryDependencies += "com.lihaoyi" %% "pprint" % "0.7.0"
libraryDependencies += "com.github.ben-manes.caffeine" % "caffeine" % "3.1.8" % "compile"
libraryDependencies += "com.github.blemale" %% "scaffeine" % "5.2.1" % "compile"
libraryDependencies += "org.scalameta" %% "munit" % "1.0.0-M11" % Test
inThisBuild(
Seq(
scalaVersion := "3.4.1",
versionScheme := Some("early-semver"),
version := "10.0.5",
organization := "lichess.std",
licenses += ("MIT" -> url("https://opensource.org/licenses/MIT")),
publishTo := Option(Resolver.file("file", new File(sys.props.getOrElse("publishTo", ""))))
)
)

val commonSettings = Seq(
scalacOptions := Seq(
"-encoding",
"utf-8",
"-explaintypes",
"-feature",
"-language:postfixOps",
"-indent",
"-rewrite",
"-source:future-migration",
"-release:21",
"-Wunused:all"
)
)

scalacOptions := Seq(
"-encoding",
"utf-8",
"-explaintypes",
"-feature",
"-language:postfixOps",
"-indent",
"-rewrite",
"-source:future-migration",
"-release:21",
"-Wunused:all"
lazy val core: Project = Project("core", file("core")).settings(
commonSettings,
name := "core",
libraryDependencies ++= List(
"org.typelevel" %% "cats-core" % "2.10.0",
"org.typelevel" %% "alleycats-core" % "2.10.0",
"com.lihaoyi" %% "pprint" % "0.7.0",
)
)
publishTo := Some(Resolver.file("file", new File(sys.props.getOrElse("publishTo", ""))))

// functions that useful for lila & lila-ws
lazy val lila: Project = Project("lila", file("lila"))
.settings(
commonSettings,
name := "lila",
libraryDependencies ++= List(
"com.github.ben-manes.caffeine" % "caffeine" % "3.1.8" % "compile",
"com.github.blemale" %% "scaffeine" % "5.2.1" % "compile",
"org.scalameta" %% "munit" % "1.0.0-M11" % Test
)
)
.dependsOn(core)

lazy val root = project
.in(file("."))
.settings(publish := {}, publish / skip := true)
.aggregate(core, lila)
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ object extensions:
extension [A](seq: Seq[A])
def has(b: A)(using Eq[A]): Boolean = seq.contains(b)

def indexOption(a: A) = Option(seq indexOf a).filter(0 <= _)
def indexOption(a: A) = Option(seq.indexOf(a)).filter(0 <= _)

extension [A](self: Option[A])

Expand All @@ -59,10 +59,10 @@ object extensions:
inline def ifFalse(b: Boolean): Option[A] = self.filter(_ => !b)

// typesafe getOrElse
inline infix def |(default: => A): A = self getOrElse default
inline infix def |(default: => A): A = self.getOrElse(default)

inline def unary_~(using z: Zero[A]): A = self getOrElse z.zero
inline def orZero(using z: Zero[A]): A = self getOrElse z.zero
inline def unary_~(using z: Zero[A]): A = self.getOrElse(z.zero)
inline def orZero(using z: Zero[A]): A = self.getOrElse(z.zero)

def has(b: A)(using Eq[A]): Boolean = self.exists(_ === b)

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@ final class RandomApi(impl: java.util.Random):

private val chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
private inline def nextAlphanumeric(): Char =
chars `charAt` nextInt(chars.length) // Constant time
chars.charAt(nextInt(chars.length)) // Constant time

def nextString(len: Int): String =
val sb = StringBuilder(len)
for (_ <- 0 until len) sb += nextAlphanumeric()
for _ <- 0 until len do sb += nextAlphanumeric()
sb.result()

def shuffle[T, C](xs: IterableOnce[T])(using scala.collection.BuildFrom[xs.type, T, C]): C =
scala.util.Random(impl).shuffle(xs)

def oneOf[A](vec: Vector[A]): Option[A] =
if vec.nonEmpty then vec lift nextInt(vec.size) else None
if vec.nonEmpty then vec.lift(nextInt(vec.size)) else None

// odds(1) = 100% true
// odds(2) = 50% true
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -842,4 +842,3 @@ class WMMatchingTest extends munit.FunSuite:
94, 80, 24, 9, 43, 20, 52, 33, 74),
(10, 46)
)

2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sbt.version=1.9.1
sbt.version=1.9.9
2 changes: 1 addition & 1 deletion project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")