Skip to content

Commit

Permalink
* Update scala-sbt
Browse files Browse the repository at this point in the history
* use sbt-crossproject for the up-to-date cross publishing experience
* Remove neoScalafmt, coursier
* Update scalamft version
  • Loading branch information
lloydmeta committed Oct 21, 2018
1 parent c068935 commit 3144c04
Show file tree
Hide file tree
Showing 18 changed files with 82 additions and 143 deletions.
122 changes: 30 additions & 92 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import com.typesafe.sbt.SbtGit.{GitKeys => git}
import sbtcrossproject.CrossPlugin.autoImport.{crossProject, CrossType}

lazy val theScalaVersion = "2.12.6"

Expand Down Expand Up @@ -126,7 +127,7 @@ lazy val root =
.aggregate(baseProjectRefs ++ integrationProjectRefs: _*)

lazy val macrosAggregate = aggregateProject("macros", macrosJS, macrosJVM)
lazy val macros = crossProject
lazy val macros = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("macros"))
.settings(commonWithPublishSettings: _*)
Expand All @@ -147,7 +148,7 @@ lazy val macrosJVM = macros.jvm

// Aggregates core
lazy val coreAggregate = aggregateProject("core", coreJS, coreJVM)
lazy val core = crossProject
lazy val core = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-core"))
.settings(
Expand All @@ -163,7 +164,7 @@ lazy val coreJVM = core.jvm

lazy val testsAggregate = aggregateProject("test", enumeratumTestJs, enumeratumTestJvm)
// Project models used in test for some subprojects
lazy val enumeratumTest = crossProject
lazy val enumeratumTest = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-test"))
.settings(testSettings: _*)
Expand All @@ -172,14 +173,7 @@ lazy val enumeratumTest = crossProject
name := "enumeratum-test",
version := Versions.Core.stable,
libraryDependencies += {
import org.scalajs.sbtplugin._
val crossVersion =
if (ScalaJSPlugin.autoImport.jsDependencies.?.value.isDefined)
ScalaJSCrossVersion.binary
else
CrossVersion.binary
impl.ScalaJSGroupID
.withCross("com.beachape", "enumeratum", crossVersion) % Versions.Core.stable
"com.beachape" %%% "enumeratum" % Versions.Core.stable
}
)
lazy val enumeratumTestJs = enumeratumTest.js
Expand Down Expand Up @@ -223,7 +217,7 @@ lazy val playJsonAggregate =
versions
}
)
lazy val enumeratumPlayJson = crossProject
lazy val enumeratumPlayJson = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-play-json"))
.settings(commonWithPublishSettings: _*)
Expand All @@ -249,11 +243,9 @@ lazy val enumeratumPlayJson = crossProject
CrossVersion.binary
}
Seq(
impl.ScalaJSGroupID.withCross("com.typesafe.play", "play-json", cross) % thePlayJsonVersion(
scalaVersion.value),
impl.ScalaJSGroupID.withCross("com.beachape", "enumeratum", cross) % Versions.Core.stable,
impl.ScalaJSGroupID
.withCross("com.beachape", "enumeratum-test", cross) % Versions.Core.stable % Test
"com.typesafe.play" %%% "play-json" % thePlayJsonVersion(scalaVersion.value),
"com.beachape" %%% "enumeratum" % Versions.Core.stable,
"com.beachape" %%% "enumeratum-test" % Versions.Core.stable % Test
)
}
)
Expand All @@ -275,7 +267,7 @@ lazy val enumeratumPlay = Project(id = "enumeratum-play", base = file("enumeratu
.dependsOn(enumeratumPlayJsonJvm % "test->test;compile->compile")

lazy val uPickleAggregate = aggregateProject("upickle", enumeratumUPickleJs, enumeratumUPickleJvm)
lazy val enumeratumUPickle = crossProject
lazy val enumeratumUPickle = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-upickle"))
.settings(commonWithPublishSettings: _*)
Expand All @@ -284,16 +276,9 @@ lazy val enumeratumUPickle = crossProject
name := "enumeratum-upickle",
version := "1.5.13-SNAPSHOT",
libraryDependencies ++= {
import org.scalajs.sbtplugin._
val cross = {
if (ScalaJSPlugin.autoImport.jsDependencies.?.value.isDefined)
ScalaJSCrossVersion.binary
else
CrossVersion.binary
}
Seq(
impl.ScalaJSGroupID.withCross("com.lihaoyi", "upickle", cross) % uPickleVersion,
impl.ScalaJSGroupID.withCross("com.beachape", "enumeratum", cross) % Versions.Core.stable
"com.beachape" %%% "enumeratum" % Versions.Core.stable,
"com.lihaoyi" %%% "upickle" % uPickleVersion
)
} ++ {
val additionalMacroDeps =
Expand All @@ -312,7 +297,7 @@ lazy val enumeratumUPickleJs = enumeratumUPickle.js
lazy val enumeratumUPickleJvm = enumeratumUPickle.jvm

lazy val circeAggregate = aggregateProject("circe", enumeratumCirceJs, enumeratumCirceJvm)
lazy val enumeratumCirce = crossProject
lazy val enumeratumCirce = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-circe"))
.settings(commonWithPublishSettings: _*)
Expand All @@ -321,17 +306,9 @@ lazy val enumeratumCirce = crossProject
name := "enumeratum-circe",
version := "1.5.19-SNAPSHOT",
libraryDependencies ++= {
import org.scalajs.sbtplugin._
val cross = {
if (ScalaJSPlugin.autoImport.jsDependencies.?.value.isDefined)
ScalaJSCrossVersion.binary
else
CrossVersion.binary
}
Seq(
impl.ScalaJSGroupID.withCross("io.circe", "circe-core", cross) % theCirceVersion(
scalaVersion.value),
impl.ScalaJSGroupID.withCross("com.beachape", "enumeratum", cross) % Versions.Core.stable
"com.beachape" %%% "enumeratum" % Versions.Core.stable,
"io.circe" %%% "circe-core" % theCirceVersion(scalaVersion.value)
)
}
)
Expand All @@ -340,7 +317,7 @@ lazy val enumeratumCirceJvm = enumeratumCirce.jvm

lazy val argonautAggregate =
aggregateProject("argonaut", enumeratumArgonautJs, enumeratumArgonautJvm)
lazy val enumeratumArgonaut = crossProject
lazy val enumeratumArgonaut = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-argonaut"))
.settings(commonWithPublishSettings: _*)
Expand All @@ -349,16 +326,9 @@ lazy val enumeratumArgonaut = crossProject
name := "enumeratum-argonaut",
version := "1.5.14-SNAPSHOT",
libraryDependencies ++= {
import org.scalajs.sbtplugin._
val cross = {
if (ScalaJSPlugin.autoImport.jsDependencies.?.value.isDefined)
ScalaJSCrossVersion.binary
else
CrossVersion.binary
}
Seq(
impl.ScalaJSGroupID.withCross("io.argonaut", "argonaut", cross) % argonautVersion,
impl.ScalaJSGroupID.withCross("com.beachape", "enumeratum", cross) % Versions.Core.stable
"com.beachape" %%% "enumeratum" % Versions.Core.stable,
"io.argonaut" %%% "argonaut" % argonautVersion
)
}
)
Expand All @@ -382,7 +352,7 @@ lazy val enumeratumJson4s =
lazy val scalacheckAggregate =
aggregateProject("scalacheck", enumeratumScalacheckJs, enumeratumScalacheckJvm)

lazy val enumeratumScalacheck = crossProject
lazy val enumeratumScalacheck = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-scalacheck"))
.settings(commonWithPublishSettings: _*)
Expand All @@ -391,18 +361,10 @@ lazy val enumeratumScalacheck = crossProject
name := "enumeratum-scalacheck",
version := "1.5.16-SNAPSHOT",
libraryDependencies ++= {
import org.scalajs.sbtplugin._
val cross = {
if (ScalaJSPlugin.autoImport.jsDependencies.?.value.isDefined)
ScalaJSCrossVersion.binary
else
CrossVersion.binary
}
Seq(
impl.ScalaJSGroupID.withCross("org.scalacheck", "scalacheck", cross) % scalacheckVersion,
impl.ScalaJSGroupID.withCross("com.beachape", "enumeratum", cross) % Versions.Core.stable,
impl.ScalaJSGroupID
.withCross("com.beachape", "enumeratum-test", cross) % Versions.Core.stable % Test
"com.beachape" %%% "enumeratum" % Versions.Core.stable,
"org.scalacheck" %%% "scalacheck" % scalacheckVersion,
"com.beachape" %%% "enumeratum-test" % Versions.Core.stable % Test,
)
}
)
Expand All @@ -413,7 +375,7 @@ lazy val enumeratumScalacheckJvm = enumeratumScalacheck.jvm
lazy val quillAggregate = aggregateProject("quill", enumeratumQuillJs, enumeratumQuillJvm).settings(
crossScalaVersions := post210Only(crossScalaVersions.value)
)
lazy val enumeratumQuill = crossProject
lazy val enumeratumQuill = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-quill"))
.settings(commonWithPublishSettings: _*)
Expand All @@ -423,17 +385,10 @@ lazy val enumeratumQuill = crossProject
version := "1.5.14-SNAPSHOT",
crossScalaVersions := post210Only(crossScalaVersions.value),
libraryDependencies ++= {
import org.scalajs.sbtplugin._
val cross = {
if (ScalaJSPlugin.autoImport.jsDependencies.?.value.isDefined)
ScalaJSCrossVersion.binary
else
CrossVersion.binary
}
Seq(
impl.ScalaJSGroupID.withCross("io.getquill", "quill-core", cross) % quillVersion,
impl.ScalaJSGroupID.withCross("io.getquill", "quill-sql", cross) % quillVersion % Test,
impl.ScalaJSGroupID.withCross("com.beachape", "enumeratum", cross) % Versions.Core.stable
"com.beachape" %%% "enumeratum" % Versions.Core.stable,
"io.getquill" %%% "quill-core" % quillVersion,
"io.getquill" %%% "quill-sql" % quillVersion % Test
)
}
)
Expand All @@ -454,7 +409,7 @@ lazy val enumeratumSlick =
)

lazy val catsAggregate = aggregateProject("cats", enumeratumCatsJs, enumeratumCatsJvm)
lazy val enumeratumCats = crossProject
lazy val enumeratumCats = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.in(file("enumeratum-cats"))
.settings(commonWithPublishSettings: _*)
Expand All @@ -463,17 +418,9 @@ lazy val enumeratumCats = crossProject
name := "enumeratum-cats",
version := "1.5.15-SNAPSHOT",
libraryDependencies ++= {
import org.scalajs.sbtplugin._
val cross = {
if (ScalaJSPlugin.autoImport.jsDependencies.?.value.isDefined)
ScalaJSCrossVersion.binary
else
CrossVersion.binary
}
Seq(
impl.ScalaJSGroupID.withCross("org.typelevel", "cats-core", cross) % theCatsVersion(
scalaVersion.value),
impl.ScalaJSGroupID.withCross("com.beachape", "enumeratum", cross) % Versions.Core.stable
"com.beachape" %%% "enumeratum" % Versions.Core.stable,
"org.typelevel" %%% "cats-core" % theCatsVersion(scalaVersion.value)
)
}
)
Expand Down Expand Up @@ -588,17 +535,8 @@ lazy val publishSettings = Seq(
val testSettings = {
Seq(
libraryDependencies ++= {
import org.scalajs.sbtplugin._
val crossVersion =
if (ScalaJSPlugin.autoImport.jsDependencies.?.value.isDefined)
ScalaJSCrossVersion.binary
else
CrossVersion.binary
Seq(
impl.ScalaJSGroupID
.withCross("org.scalatest", "scalatest", crossVersion) % scalaTestVersion % Test,
impl.ScalaJSGroupID
.withCross("org.scalacheck", "scalacheck", crossVersion) % scalacheckVersion % Test force ()
"org.scalatest" %%% "scalatest" % scalaTestVersion % Test
)
},
doctestGenTests := {
Expand Down
12 changes: 6 additions & 6 deletions enumeratum-cats/src/main/scala/enumeratum/Cats.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@ import cats.{Eq, Hash, Show}
object Cats {

/**
* Builds an `Eq` instance which differentiates all enum values as it's based on universal equals.
*/
* Builds an `Eq` instance which differentiates all enum values as it's based on universal equals.
*/
def eqForEnum[A <: EnumEntry]: Eq[A] = Eq.fromUniversalEquals[A]

/**
* Builds a `Show` instance returning the entry name (respecting possible mixins).
*/
* Builds a `Show` instance returning the entry name (respecting possible mixins).
*/
def showForEnum[A <: EnumEntry]: Show[A] = Show.show[A](_.entryName)

/**
* `Hash` instance based on the entry name.
*/
* `Hash` instance based on the entry name.
*/
def hashForEnum[A <: EnumEntry]: Hash[A] = Hash.by[A, String](_.entryName)

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ object Cats {
* Builds an `Eq` instance which acts accordingly to the given `Eq` on the value type. Allows to implement different
* behaviour than [[eqForEnum]], for example grouping several enum values in special contexts.
*/
def valueEqForEnum[A <: ValueEnumEntry[V], V : Eq]: Eq[A] = Eq.by[A, V](_.value)
def valueEqForEnum[A <: ValueEnumEntry[V], V: Eq]: Eq[A] = Eq.by[A, V](_.value)

/**
* Builds a `Show` instance based on `toString`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ trait CatsCustomOrderValueEnum[ValueType, EntryType <: ValueEnumEntry[ValueType]
/**
* Builds a `Order` instance from the given `Order` (see [[valueTypeOrder]] on the value type.
*/
implicit val orderInstance: Order[EntryType] = Cats.valueOrderForEnum[EntryType, ValueType](valueTypeOrder)
implicit val orderInstance: Order[EntryType] =
Cats.valueOrderForEnum[EntryType, ValueType](valueTypeOrder)

}

Expand Down
4 changes: 2 additions & 2 deletions enumeratum-circe/src/main/scala/enumeratum/values/Circe.scala
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ object Circe {
}

def keyEncoder[EntryType <: ValueEnumEntry[String]](
enum: ValueEnum[String, EntryType]
enum: ValueEnum[String, EntryType]
): KeyEncoder[EntryType] =
KeyEncoder.instance(_.value)

def keyDecoder[EntryType <: ValueEnumEntry[String]](
enum: ValueEnum[String, EntryType]
enum: ValueEnum[String, EntryType]
): KeyDecoder[EntryType] =
KeyDecoder.instance(enum.withValueOpt)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ class CirceValueEnumSpec extends FunSpec with Matchers {
}

private def testCirceKeyEnum[EntryType <: ValueEnumEntry[String]: KeyEncoder: KeyDecoder](
enumKind: String,
enum: ValueEnum[String, EntryType] with CirceValueEnum[String, EntryType]
enumKind: String,
enum: ValueEnum[String, EntryType] with CirceValueEnum[String, EntryType]
): Unit = {
describe(s"$enumKind as Key") {
describe("to JSON") {
Expand All @@ -75,7 +75,8 @@ class CirceValueEnumSpec extends FunSpec with Matchers {

describe("from JSON") {
it("should fail to parse random JSON into a map") {
val invalidJsonMap = Stream.from(1).map(_.toString).take(10).toStream.zip(Stream.from(1)).toMap.asJson
val invalidJsonMap =
Stream.from(1).map(_.toString).take(10).toStream.zip(Stream.from(1)).toMap.asJson
invalidJsonMap.as[Map[EntryType, Int]].isLeft shouldBe true
}
}
Expand Down Expand Up @@ -114,9 +115,7 @@ case object CirceDrinks extends ShortEnum[CirceDrinks] with ShortCirceEnum[Circe

sealed abstract class CirceLibraryItem(val value: Int, val name: String) extends IntEnumEntry

case object CirceLibraryItem
extends IntEnum[CirceLibraryItem]
with IntCirceEnum[CirceLibraryItem] {
case object CirceLibraryItem extends IntEnum[CirceLibraryItem] with IntCirceEnum[CirceLibraryItem] {

// A good mix of named, unnamed, named + unordered args
case object Book extends CirceLibraryItem(value = 1, name = "book")
Expand Down
4 changes: 2 additions & 2 deletions enumeratum-core/src/main/scala/enumeratum/Enum.scala
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,13 @@ trait Enum[A <: EnumEntry] {
* Map of [[A]] object names in lower case to [[A]]s for case-insensitive comparison
*/
lazy final val lowerCaseNamesToValuesMap: Map[String, A] =
namesToValuesMap.map{ case (k, v) => k.toLowerCase -> v }
namesToValuesMap.map { case (k, v) => k.toLowerCase -> v }

/**
* Map of [[A]] object names in upper case to [[A]]s for case-insensitive comparison
*/
lazy final val upperCaseNameValuesToMap: Map[String, A] =
namesToValuesMap.map{ case (k, v) => k.toUpperCase() -> v }
namesToValuesMap.map { case (k, v) => k.toUpperCase() -> v }

/**
* Map of [[A]] to their index in the values sequence.
Expand Down
3 changes: 2 additions & 1 deletion enumeratum-core/src/main/scala/enumeratum/EnumEntry.scala
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ object EnumEntry {
trait Camelcase extends EnumEntry {
override def entryName: String = stableEntryName

private[this] lazy val stableEntryName: String = super.entryName.split("_+").map(s => capitalise(s.toLowerCase)).mkString
private[this] lazy val stableEntryName: String =
super.entryName.split("_+").map(s => capitalise(s.toLowerCase)).mkString
}

/**
Expand Down
2 changes: 1 addition & 1 deletion enumeratum-core/src/test/scala/enumeratum/EnumSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ class EnumSpec extends FunSpec with Matchers {

MultiEnum.withName("one") shouldBe MultiEnum.One
MultiEnum.withName("1") shouldBe MultiEnum.One
a [NoSuchElementException] should be thrownBy MultiEnum.withName("One")
a[NoSuchElementException] should be thrownBy MultiEnum.withName("One")
MultiEnum.withName("eins") shouldBe MultiEnum.One
MultiEnum.withName("two") shouldBe MultiEnum.Two
}
Expand Down
Loading

0 comments on commit 3144c04

Please sign in to comment.