diff --git a/.travis.yml b/.travis.yml index e793c6e..555dba3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,4 +2,4 @@ language: scala scala: - 2.12.8 -script: "sbt clean coverage test coverageReport coveralls" +script: "sbt clean coverage test coverageReport && sbt coverageAggregate && sbt coveralls" diff --git a/README.md b/README.md index 53e8d46..de26a2d 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,9 @@ Wen is available for Scala 2.12. You can add wen to your sbt project by adding t your `build.sbt`: ```scala -libraryDependencies += "dev.mlopes" %% "wen" % "0.9.0" +libraryDependencies += "dev.mlopes" %% "wen" % "1.0.0-M1" +libraryDependencies += "dev.mlopes" %% "wen-cats" % "1.0.0-M1" // For cats instances +libraryDependencies += "dev.mlopes" %% "wen-circe" % "1.0.0-M1" // For circe encoders and decoders ``` ## What is Wen? diff --git a/build.sbt b/build.sbt index c602604..5aec235 100644 --- a/build.sbt +++ b/build.sbt @@ -1,23 +1,55 @@ import Dependencies._ ThisBuild / scalaVersion := "2.12.8" -ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / organization := "dev.mlopes" ThisBuild / organizationName := "mlopes" lazy val wen = project .in(file(".")) - .settings(moduleName := "wen", name := "Wen") + .aggregate(core, cats, circe) + .settings(name := "Wen Root") .settings( - scalacOptions := appScalacOptions, - compile in Compile := (compile in Compile).dependsOn(dependencyUpdates).value, - libraryDependencies ++= scalaTest, - libraryDependencies ++= wenDependencies, - coverageMinimum := 100, - coverageFailOnMinimum := true, - publishTo := sonatypePublishTo.value + publish := {}, + publishArtifact := false ) +lazy val core = project + .in(file("modules/core")) + .settings(moduleName := "wen", name := "Wen", description := "Idiomatic Date and Time types") + .settings( + libraryDependencies ++= refinedDependencies, + libraryDependencies ++= testDependencies ++ catsDependencies.map(_ % Test), + defaultConfig + ) + +lazy val cats = project + .in(file("modules/cats")) + .dependsOn(core) + .settings(moduleName := "wen-cats", name := "Wen Cats", description := "Cats instances for Wen") + .settings( + libraryDependencies ++= catsDependencies, + libraryDependencies ++= testDependencies, + defaultConfig + ) + +lazy val circe = project + .in(file("modules/circe")) + .dependsOn(core % "compile->compile;test->test", cats) + .settings(moduleName := "wen-circe", name := "Wen Circe", description := "Circe encoders and decoders for Wen types") + .settings( + libraryDependencies ++= circeDependencies, + libraryDependencies ++= testDependencies ++ circeExtraDependencies.map(_ % Test), + defaultConfig + ) + +lazy val defaultConfig = Seq( + scalacOptions := appScalacOptions, + compile in Compile := (compile in Compile).dependsOn(dependencyUpdates).value, + coverageMinimum := 100, + coverageFailOnMinimum := true, + publishTo := sonatypePublishTo.value +) + lazy val appScalacOptions = Seq( "-deprecation", // Emit warning and location for usages of deprecated APIs. "-encoding", "utf-8", // Specify character encoding used by source files. diff --git a/src/main/scala/wen/implicits.scala b/modules/cats/src/main/scala/wen/implicits.scala similarity index 100% rename from src/main/scala/wen/implicits.scala rename to modules/cats/src/main/scala/wen/implicits.scala diff --git a/src/main/scala/wen/instances/DayInstances.scala b/modules/cats/src/main/scala/wen/instances/DayInstances.scala similarity index 100% rename from src/main/scala/wen/instances/DayInstances.scala rename to modules/cats/src/main/scala/wen/instances/DayInstances.scala diff --git a/src/main/scala/wen/instances/EpochInstances.scala b/modules/cats/src/main/scala/wen/instances/EpochInstances.scala similarity index 100% rename from src/main/scala/wen/instances/EpochInstances.scala rename to modules/cats/src/main/scala/wen/instances/EpochInstances.scala diff --git a/src/main/scala/wen/instances/HourInstances.scala b/modules/cats/src/main/scala/wen/instances/HourInstances.scala similarity index 100% rename from src/main/scala/wen/instances/HourInstances.scala rename to modules/cats/src/main/scala/wen/instances/HourInstances.scala diff --git a/src/main/scala/wen/instances/MillisecondInstances.scala b/modules/cats/src/main/scala/wen/instances/MillisecondInstances.scala similarity index 100% rename from src/main/scala/wen/instances/MillisecondInstances.scala rename to modules/cats/src/main/scala/wen/instances/MillisecondInstances.scala diff --git a/src/main/scala/wen/instances/MinuteInstances.scala b/modules/cats/src/main/scala/wen/instances/MinuteInstances.scala similarity index 100% rename from src/main/scala/wen/instances/MinuteInstances.scala rename to modules/cats/src/main/scala/wen/instances/MinuteInstances.scala diff --git a/src/main/scala/wen/instances/MonthInstances.scala b/modules/cats/src/main/scala/wen/instances/MonthInstances.scala similarity index 100% rename from src/main/scala/wen/instances/MonthInstances.scala rename to modules/cats/src/main/scala/wen/instances/MonthInstances.scala diff --git a/src/main/scala/wen/instances/SecondInstances.scala b/modules/cats/src/main/scala/wen/instances/SecondInstances.scala similarity index 100% rename from src/main/scala/wen/instances/SecondInstances.scala rename to modules/cats/src/main/scala/wen/instances/SecondInstances.scala diff --git a/src/main/scala/wen/instances/WeekDayInstances.scala b/modules/cats/src/main/scala/wen/instances/WeekDayInstances.scala similarity index 100% rename from src/main/scala/wen/instances/WeekDayInstances.scala rename to modules/cats/src/main/scala/wen/instances/WeekDayInstances.scala diff --git a/src/main/scala/wen/instances/YearInstances.scala b/modules/cats/src/main/scala/wen/instances/YearInstances.scala similarity index 100% rename from src/main/scala/wen/instances/YearInstances.scala rename to modules/cats/src/main/scala/wen/instances/YearInstances.scala diff --git a/src/main/scala/wen/instances/datetime/DateInstances.scala b/modules/cats/src/main/scala/wen/instances/datetime/DateInstances.scala similarity index 100% rename from src/main/scala/wen/instances/datetime/DateInstances.scala rename to modules/cats/src/main/scala/wen/instances/datetime/DateInstances.scala diff --git a/src/main/scala/wen/instances/datetime/DateTimeInstances.scala b/modules/cats/src/main/scala/wen/instances/datetime/DateTimeInstances.scala similarity index 100% rename from src/main/scala/wen/instances/datetime/DateTimeInstances.scala rename to modules/cats/src/main/scala/wen/instances/datetime/DateTimeInstances.scala diff --git a/src/main/scala/wen/instances/datetime/TimeInstances.scala b/modules/cats/src/main/scala/wen/instances/datetime/TimeInstances.scala similarity index 100% rename from src/main/scala/wen/instances/datetime/TimeInstances.scala rename to modules/cats/src/main/scala/wen/instances/datetime/TimeInstances.scala diff --git a/src/main/scala/wen/instances/iso/DateInstances.scala b/modules/cats/src/main/scala/wen/instances/iso/DateInstances.scala similarity index 100% rename from src/main/scala/wen/instances/iso/DateInstances.scala rename to modules/cats/src/main/scala/wen/instances/iso/DateInstances.scala diff --git a/src/main/scala/wen/instances/iso/DateTimeInstances.scala b/modules/cats/src/main/scala/wen/instances/iso/DateTimeInstances.scala similarity index 100% rename from src/main/scala/wen/instances/iso/DateTimeInstances.scala rename to modules/cats/src/main/scala/wen/instances/iso/DateTimeInstances.scala diff --git a/src/main/scala/wen/instances/iso/TimeInstances.scala b/modules/cats/src/main/scala/wen/instances/iso/TimeInstances.scala similarity index 100% rename from src/main/scala/wen/instances/iso/TimeInstances.scala rename to modules/cats/src/main/scala/wen/instances/iso/TimeInstances.scala diff --git a/src/main/scala/wen/instances/iso/package.scala b/modules/cats/src/main/scala/wen/instances/iso/package.scala similarity index 100% rename from src/main/scala/wen/instances/iso/package.scala rename to modules/cats/src/main/scala/wen/instances/iso/package.scala diff --git a/src/test/scala/wen/instances/DayInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/DayInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/DayInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/DayInstancesSpec.scala diff --git a/src/test/scala/wen/instances/EpochInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/EpochInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/EpochInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/EpochInstancesSpec.scala diff --git a/src/test/scala/wen/instances/HourInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/HourInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/HourInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/HourInstancesSpec.scala diff --git a/src/test/scala/wen/instances/MillisecondInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/MillisecondInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/MillisecondInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/MillisecondInstancesSpec.scala diff --git a/src/test/scala/wen/instances/MinuteInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/MinuteInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/MinuteInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/MinuteInstancesSpec.scala diff --git a/src/test/scala/wen/instances/MonthInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/MonthInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/MonthInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/MonthInstancesSpec.scala diff --git a/src/test/scala/wen/instances/SecondInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/SecondInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/SecondInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/SecondInstancesSpec.scala diff --git a/src/test/scala/wen/instances/WeekDayInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/WeekDayInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/WeekDayInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/WeekDayInstancesSpec.scala diff --git a/src/test/scala/wen/instances/YearInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/YearInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/YearInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/YearInstancesSpec.scala diff --git a/src/test/scala/wen/instances/datetime/DateInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/datetime/DateInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/datetime/DateInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/datetime/DateInstancesSpec.scala diff --git a/src/test/scala/wen/instances/datetime/DateTimeInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/datetime/DateTimeInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/datetime/DateTimeInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/datetime/DateTimeInstancesSpec.scala diff --git a/src/test/scala/wen/instances/datetime/TimeInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/datetime/TimeInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/datetime/TimeInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/datetime/TimeInstancesSpec.scala diff --git a/src/test/scala/wen/instances/iso/IsoDateInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/iso/IsoDateInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/iso/IsoDateInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/iso/IsoDateInstancesSpec.scala diff --git a/src/test/scala/wen/instances/iso/IsoDateTimeInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/iso/IsoDateTimeInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/iso/IsoDateTimeInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/iso/IsoDateTimeInstancesSpec.scala diff --git a/src/test/scala/wen/instances/iso/IsoTimeInstancesSpec.scala b/modules/cats/src/test/scala/wen/instances/iso/IsoTimeInstancesSpec.scala similarity index 100% rename from src/test/scala/wen/instances/iso/IsoTimeInstancesSpec.scala rename to modules/cats/src/test/scala/wen/instances/iso/IsoTimeInstancesSpec.scala diff --git a/src/main/scala/wen/circe/package.scala b/modules/circe/src/main/scala/wen/circe/package.scala similarity index 100% rename from src/main/scala/wen/circe/package.scala rename to modules/circe/src/main/scala/wen/circe/package.scala diff --git a/src/test/scala/wen/circe/CirceSpec.scala b/modules/circe/src/test/scala/wen/circe/CirceSpec.scala similarity index 100% rename from src/test/scala/wen/circe/CirceSpec.scala rename to modules/circe/src/test/scala/wen/circe/CirceSpec.scala diff --git a/src/main/scala/wen/datetime/Date.scala b/modules/core/src/main/scala/wen/datetime/Date.scala similarity index 100% rename from src/main/scala/wen/datetime/Date.scala rename to modules/core/src/main/scala/wen/datetime/Date.scala diff --git a/src/main/scala/wen/datetime/DateTime.scala b/modules/core/src/main/scala/wen/datetime/DateTime.scala similarity index 100% rename from src/main/scala/wen/datetime/DateTime.scala rename to modules/core/src/main/scala/wen/datetime/DateTime.scala diff --git a/src/main/scala/wen/datetime/Time.scala b/modules/core/src/main/scala/wen/datetime/Time.scala similarity index 100% rename from src/main/scala/wen/datetime/Time.scala rename to modules/core/src/main/scala/wen/datetime/Time.scala diff --git a/src/main/scala/wen/datetime/ZoneDateTime.scala b/modules/core/src/main/scala/wen/datetime/ZoneDateTime.scala similarity index 100% rename from src/main/scala/wen/datetime/ZoneDateTime.scala rename to modules/core/src/main/scala/wen/datetime/ZoneDateTime.scala diff --git a/src/main/scala/wen/datetime/ZoneTime.scala b/modules/core/src/main/scala/wen/datetime/ZoneTime.scala similarity index 100% rename from src/main/scala/wen/datetime/ZoneTime.scala rename to modules/core/src/main/scala/wen/datetime/ZoneTime.scala diff --git a/src/main/scala/wen/refine/package.scala b/modules/core/src/main/scala/wen/refine/package.scala similarity index 100% rename from src/main/scala/wen/refine/package.scala rename to modules/core/src/main/scala/wen/refine/package.scala diff --git a/src/main/scala/wen/types/types.scala b/modules/core/src/main/scala/wen/types/types.scala similarity index 100% rename from src/main/scala/wen/types/types.scala rename to modules/core/src/main/scala/wen/types/types.scala diff --git a/src/test/scala/wen/datetime/DateSpec.scala b/modules/core/src/test/scala/wen/datetime/DateSpec.scala similarity index 100% rename from src/test/scala/wen/datetime/DateSpec.scala rename to modules/core/src/test/scala/wen/datetime/DateSpec.scala diff --git a/src/test/scala/wen/datetime/DateTimeSpec.scala b/modules/core/src/test/scala/wen/datetime/DateTimeSpec.scala similarity index 100% rename from src/test/scala/wen/datetime/DateTimeSpec.scala rename to modules/core/src/test/scala/wen/datetime/DateTimeSpec.scala diff --git a/src/test/scala/wen/datetime/OffsetSpec.scala b/modules/core/src/test/scala/wen/datetime/OffsetSpec.scala similarity index 100% rename from src/test/scala/wen/datetime/OffsetSpec.scala rename to modules/core/src/test/scala/wen/datetime/OffsetSpec.scala diff --git a/src/test/scala/wen/datetime/TimeSpec.scala b/modules/core/src/test/scala/wen/datetime/TimeSpec.scala similarity index 100% rename from src/test/scala/wen/datetime/TimeSpec.scala rename to modules/core/src/test/scala/wen/datetime/TimeSpec.scala diff --git a/src/test/scala/wen/datetime/ZoneDateTimeSpec.scala b/modules/core/src/test/scala/wen/datetime/ZoneDateTimeSpec.scala similarity index 100% rename from src/test/scala/wen/datetime/ZoneDateTimeSpec.scala rename to modules/core/src/test/scala/wen/datetime/ZoneDateTimeSpec.scala diff --git a/src/test/scala/wen/datetime/ZoneTimeSpec.scala b/modules/core/src/test/scala/wen/datetime/ZoneTimeSpec.scala similarity index 100% rename from src/test/scala/wen/datetime/ZoneTimeSpec.scala rename to modules/core/src/test/scala/wen/datetime/ZoneTimeSpec.scala diff --git a/src/test/scala/wen/refine/refineSpec.scala b/modules/core/src/test/scala/wen/refine/refineSpec.scala similarity index 100% rename from src/test/scala/wen/refine/refineSpec.scala rename to modules/core/src/test/scala/wen/refine/refineSpec.scala diff --git a/src/test/scala/wen/test/Arbitraries.scala b/modules/core/src/test/scala/wen/test/Arbitraries.scala similarity index 100% rename from src/test/scala/wen/test/Arbitraries.scala rename to modules/core/src/test/scala/wen/test/Arbitraries.scala diff --git a/src/test/scala/wen/test/Generators.scala b/modules/core/src/test/scala/wen/test/Generators.scala similarity index 100% rename from src/test/scala/wen/test/Generators.scala rename to modules/core/src/test/scala/wen/test/Generators.scala diff --git a/src/test/scala/wen/types/DaySpec.scala b/modules/core/src/test/scala/wen/types/DaySpec.scala similarity index 100% rename from src/test/scala/wen/types/DaySpec.scala rename to modules/core/src/test/scala/wen/types/DaySpec.scala diff --git a/src/test/scala/wen/types/HourSpec.scala b/modules/core/src/test/scala/wen/types/HourSpec.scala similarity index 100% rename from src/test/scala/wen/types/HourSpec.scala rename to modules/core/src/test/scala/wen/types/HourSpec.scala diff --git a/src/test/scala/wen/types/MillisecondSpec.scala b/modules/core/src/test/scala/wen/types/MillisecondSpec.scala similarity index 100% rename from src/test/scala/wen/types/MillisecondSpec.scala rename to modules/core/src/test/scala/wen/types/MillisecondSpec.scala diff --git a/src/test/scala/wen/types/MinuteSpec.scala b/modules/core/src/test/scala/wen/types/MinuteSpec.scala similarity index 100% rename from src/test/scala/wen/types/MinuteSpec.scala rename to modules/core/src/test/scala/wen/types/MinuteSpec.scala diff --git a/src/test/scala/wen/types/MonthSpec.scala b/modules/core/src/test/scala/wen/types/MonthSpec.scala similarity index 100% rename from src/test/scala/wen/types/MonthSpec.scala rename to modules/core/src/test/scala/wen/types/MonthSpec.scala diff --git a/src/test/scala/wen/types/SecondSpec.scala b/modules/core/src/test/scala/wen/types/SecondSpec.scala similarity index 100% rename from src/test/scala/wen/types/SecondSpec.scala rename to modules/core/src/test/scala/wen/types/SecondSpec.scala diff --git a/src/test/scala/wen/types/WeekDaySpec.scala b/modules/core/src/test/scala/wen/types/WeekDaySpec.scala similarity index 100% rename from src/test/scala/wen/types/WeekDaySpec.scala rename to modules/core/src/test/scala/wen/types/WeekDaySpec.scala diff --git a/src/test/scala/wen/types/YearSpec.scala b/modules/core/src/test/scala/wen/types/YearSpec.scala similarity index 100% rename from src/test/scala/wen/types/YearSpec.scala rename to modules/core/src/test/scala/wen/types/YearSpec.scala diff --git a/notes/1.0.0-M1.markdown b/notes/1.0.0-M1.markdown new file mode 100644 index 0000000..17578c0 --- /dev/null +++ b/notes/1.0.0-M1.markdown @@ -0,0 +1,5 @@ +1.0.0-M1 +======== + +- Split project in 3, now there's wen, wen-cats, and wen-circe + diff --git a/project/Dependencies.scala b/project/Dependencies.scala index a7d067d..729585a 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -9,22 +9,28 @@ object Dependencies { val circeVersion = "0.11.1" - lazy val scalaTest = Seq( - "org.scalatest" %% "scalatest" % scalaTestVersion % Test - ,"org.scalactic" %% "scalactic" % scalaTestVersion % Test - ,"org.scalacheck" %% "scalacheck" % scalaCheckVersion % Test - ,"eu.timepit" %% "refined-scalacheck" % refinedVersion % Test - ,"eu.timepit" %% "refined" % refinedVersion - ,"org.typelevel" %% "cats-core" % catsVersion - ,"io.circe" %% "circe-core" % circeVersion - ,"io.circe" %% "circe-literal" % circeVersion - ,"io.circe" %% "circe-generic" % circeVersion - ,"org.typelevel" %% "jawn-parser" % "0.14.2" + lazy val testDependencies = Seq( + "org.scalatest" %% "scalatest" % scalaTestVersion + ,"org.scalactic" %% "scalactic" % scalaTestVersion + ,"org.scalacheck" %% "scalacheck" % scalaCheckVersion + ,"eu.timepit" %% "refined-scalacheck" % refinedVersion + ).map(_ % Test) + + lazy val catsDependencies = Seq( + "org.typelevel" %% "cats-core" % catsVersion ) - lazy val wenDependencies = Seq( + lazy val refinedDependencies = Seq( "eu.timepit" %% "refined" % refinedVersion - ,"org.typelevel" %% "cats-core" % catsVersion - ,"io.circe" %% "circe-core" % circeVersion % Optional + ) + + lazy val circeDependencies = Seq( + "io.circe" %% "circe-core" % circeVersion % Optional + ) + + lazy val circeExtraDependencies = Seq ( + "io.circe" %% "circe-literal" % circeVersion + ,"io.circe" %% "circe-generic" % circeVersion + ,"org.typelevel" %% "jawn-parser" % "0.14.2" ) } diff --git a/publish.sbt b/publish.sbt index e5dcc09..50ef689 100644 --- a/publish.sbt +++ b/publish.sbt @@ -46,7 +46,6 @@ ensureVersionUpdateOnReadme in ThisBuild := { } } -ThisBuild / description := "Date and time types and instances" ThisBuild / licenses := List("Apache 2" -> new URL("http://www.apache.org/licenses/LICENSE-2.0.txt")) ThisBuild / homepage := Some(url("https://github.com/mlopes/wen")) diff --git a/version.sbt b/version.sbt index 972f262..6dc0588 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version in ThisBuild := "0.9.1-SNAPSHOT" +version in ThisBuild := "1.0.0-SNAPSHOT"