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

Use @newtype macro #122

Merged
merged 7 commits into from
Feb 4, 2020
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 8 additions & 2 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name := "jadd"
organization in ThisBuild := "ru.d10xa"

scalaVersion in ThisBuild := "2.13.1"
version in ThisBuild := IO.read(new File("VERSION")).trim
version in ThisBuild := IO.read(file("VERSION")).trim
mainClass in Compile := Some("ru.d10xa.jadd.Jadd")

lazy val root = project
Expand All @@ -16,11 +16,15 @@ lazy val root = project
"-feature", // warn about misused language features
"-language:higherKinds", // allow higher kinded types without `import scala.language.higherKinds`
"-Xlint", // enable handy linter warnings
"-Xfatal-warnings" // turn compiler warnings into errors
"-Xfatal-warnings", // turn compiler warnings into errors,
"-Ymacro-annotations" // for @newtype
)
)

enablePlugins(JavaAppPackaging)

addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.0" cross CrossVersion.full)

//wartremoverErrors ++= Warts.unsafe
wartremoverErrors in (Compile, compile) ++= Seq(
// Wart.Any,
Expand Down Expand Up @@ -63,3 +67,5 @@ libraryDependencies += "org.typelevel" %% "cats-effect" % "2.1.0"
libraryDependencies += "com.github.pathikrit" %% "better-files" % "3.8.0"
libraryDependencies += "io.get-coursier" %% "coursier-core" % "2.0.0-RC5-6"
libraryDependencies += "org.antlr" % "antlr4-runtime" % "4.8"
libraryDependencies += "io.estatico" %% "newtype" % "0.4.3"
//libraryDependencies += "eu.timepit" %% "refined" % "0.9.12"
1 change: 1 addition & 0 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.6.1")
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1")
addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.2.7")
addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.4.3")

///https://dl.bintray.com/sbt/sbt-plugin-releases/com.typesafe.sbt/sbt-native-packager/scala_2.12/sbt_1.0/
2 changes: 1 addition & 1 deletion src/main/scala/ru/d10xa/jadd/cli/Cli.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import ru.d10xa.jadd.cli.Command.Install
import ru.d10xa.jadd.cli.Command.Search
import ru.d10xa.jadd.cli.Command.Show
import ru.d10xa.jadd.core.Ctx
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.show.JaddFormatShowPrinter
import ru.d10xa.jadd.show.ShowPrinter
import scopt.OptionDef
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/ru/d10xa/jadd/cli/Config.scala
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ru.d10xa.jadd.cli

import ru.d10xa.jadd.cli.Command.Repl
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.repository.RepositoryConstants
import ru.d10xa.jadd.show.JaddFormatShowPrinter
import ru.d10xa.jadd.show.ShowPrinter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package ru.d10xa.jadd.code.inserts
import cats.implicits._
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.CodeBlock
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.view.ArtifactView.Match

import scala.util.matching.Regex
Expand Down
18 changes: 2 additions & 16 deletions src/main/scala/ru/d10xa/jadd/core/Artifact.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import cats.Show
import cats.implicits._
import com.typesafe.scalalogging.StrictLogging
import coursier.core.Version
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.repository.MavenMetadata
import ru.d10xa.jadd.show.JaddFormatShowPrinter
import troubles.ArtifactTrouble
Expand Down Expand Up @@ -86,22 +88,6 @@ final case class Artifact(

}

final case class GroupId(val value: String) extends AnyVal {
def path: String = value.replace('.', '/')
}

final case class ScalaVersion(val version: Version) extends AnyVal

object ScalaVersion {
def fromString(str: String): ScalaVersion = ScalaVersion(Version(str))
implicit val showScalaVersion: Show[ScalaVersion] =
Show[ScalaVersion](_.version.repr)
}

object GroupId {
implicit val showGroupId: Show[GroupId] = Show[GroupId](_.value.toString)
}

object Artifact {

implicit val showArtifact: Show[Artifact] = (t: Artifact) =>
Expand Down
2 changes: 2 additions & 0 deletions src/main/scala/ru/d10xa/jadd/core/ProjectMeta.scala
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package ru.d10xa.jadd.core

import ru.d10xa.jadd.core.types.ScalaVersion

final case class ProjectMeta(scalaVersion: Option[ScalaVersion])
35 changes: 35 additions & 0 deletions src/main/scala/ru/d10xa/jadd/core/types.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package ru.d10xa.jadd.core

import cats.Show
import coursier.core.Version
import io.estatico.newtype.macros.newtype

import scala.language.implicitConversions

/**
* Warnings disabled because of @newtype
*/
@SuppressWarnings(
Array(
"org.wartremover.warts.FinalCaseClass",
"org.wartremover.warts.ImplicitParameter",
"org.wartremover.warts.PublicInference",
"org.wartremover.warts.ImplicitConversion"
))
object types {

@newtype case class GroupId(value: String) {
def path: String =
value.replace('.', '/') //refineMV(value.value.replace('.', '/'))
}
object GroupId {
implicit val showGroupId: Show[GroupId] = Show[GroupId](_.value.toString)
}

@newtype case class ScalaVersion(version: Version)
object ScalaVersion {
def fromString(str: String): ScalaVersion = ScalaVersion(Version(str))
implicit val showScalaVersion: Show[ScalaVersion] =
Show[ScalaVersion](_.version.repr)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.Ctx
import ru.d10xa.jadd.core.ProjectFileReader
import ru.d10xa.jadd.core.SafeFileWriter
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.show.AmmoniteFormatShowPrinter
import ru.d10xa.jadd.versions.ScalaVersions

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import com.typesafe.scalalogging.StrictLogging
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.Ctx
import ru.d10xa.jadd.core.SafeFileWriter
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.code.inserts.GradleFileInserts
import ru.d10xa.jadd.shortcuts.ArtifactInfoFinder
import ru.d10xa.jadd.show.GradleShowCommand
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/ru/d10xa/jadd/pipelines/MavenPipeline.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import ru.d10xa.jadd.code.Indentation
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.Ctx
import ru.d10xa.jadd.core.SafeFileWriter
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.code.inserts.MavenFileInserts
import ru.d10xa.jadd.shortcuts.ArtifactInfoFinder
import ru.d10xa.jadd.show.MavenFormatShowPrinter
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/ru/d10xa/jadd/pipelines/Pipeline.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.Ctx
import ru.d10xa.jadd.core.Loader
import ru.d10xa.jadd.core.ProjectMeta
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.core.Utils
import ru.d10xa.jadd.core.troubles
import ru.d10xa.jadd.core.troubles.ArtifactTrouble
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/ru/d10xa/jadd/pipelines/SbtPipeline.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.Ctx
import ru.d10xa.jadd.core.ProjectFileReader
import ru.d10xa.jadd.core.SafeFileWriter
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.code.inserts.SbtFileInserts
import ru.d10xa.jadd.shortcuts.ArtifactInfoFinder
import ru.d10xa.jadd.show.SbtShowCommand
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import cats.implicits._
import com.typesafe.scalalogging.StrictLogging
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.Ctx
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.shortcuts.ArtifactInfoFinder
import ru.d10xa.jadd.versions.ScalaVersions

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package ru.d10xa.jadd.repository
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.xml.MavenMetadataVersionsRawReader

import scala.util.Try
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import cats.effect.Sync
import cats.implicits._
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.ArtifactInfo
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.Scope
import ru.d10xa.jadd.core.Utils
import ru.d10xa.jadd.core.troubles
import ru.d10xa.jadd.core.types.GroupId

import scala.util.Try

Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/ru/d10xa/jadd/show/MavenShowCommand.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package ru.d10xa.jadd.show
import com.typesafe.scalalogging.StrictLogging
import coursier.core.Version
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.types.GroupId

import scala.xml.Node
import scala.xml.XML
Expand Down
4 changes: 2 additions & 2 deletions src/main/scala/ru/d10xa/jadd/show/SbtShowCommand.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import ru.d10xa.jadd.core
import ru.d10xa.jadd.cli.Config
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.CodeBlock
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.core.ProjectFileReader
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.core.Scope
import ru.d10xa.jadd.generated.antlr.SbtDependenciesBaseVisitor
import ru.d10xa.jadd.generated.antlr.SbtDependenciesLexer
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/ru/d10xa/jadd/versions/ScalaVersions.scala
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ru.d10xa.jadd.versions

import cats.data.NonEmptyList
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion

object ScalaVersions {
val supportedMinorVersions: NonEmptyList[ScalaVersion] =
Expand Down
4 changes: 2 additions & 2 deletions src/test/scala/ru/d10xa/jadd/ArtifactInfoFinderTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import ru.d10xa.jadd.core.troubles.ArtifactTrouble
import cats.implicits._
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.ArtifactInfo
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.core.Scope

class ArtifactInfoFinderTest extends TestBase {
Expand Down
4 changes: 2 additions & 2 deletions src/test/scala/ru/d10xa/jadd/ArtifactTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import ru.d10xa.jadd.testkit.TestBase
import ru.d10xa.jadd.core.troubles.WrongArtifactRaw
import cats.implicits._
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.core.types.ScalaVersion

class ArtifactTest extends TestBase {

Expand Down
4 changes: 2 additions & 2 deletions src/test/scala/ru/d10xa/jadd/GradleArtifactProviderTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import coursier.core.Version
import ru.d10xa.jadd.core.ArtifactProvider
import ru.d10xa.jadd.core.ArtifactProvider.GradleBuildDescription
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.testkit.TestBase

class GradleArtifactProviderTest extends TestBase {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ru.d10xa.jadd.code.inserts

import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.testkit.TestBase
import ru.d10xa.jadd.view.ArtifactView
import ru.d10xa.jadd.view.ArtifactView.MatchImpl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package ru.d10xa.jadd.code.inserts

import coursier.core.Version
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.testkit.TestBase

class SbtFileInsertsTest extends TestBase {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package ru.d10xa.jadd.it

import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.repository.MavenRemoteMetadataRepositoryApi
import ru.d10xa.jadd.testkit.WireMockTestBase

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package ru.d10xa.jadd.pipelines

import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.testkit.TestBase

class SbtPipelineTest extends TestBase {
Expand Down
2 changes: 1 addition & 1 deletion src/test/scala/ru/d10xa/jadd/testkit/TestBase.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package ru.d10xa.jadd.testkit
import org.scalatest.funsuite.AnyFunSuiteLike
import org.scalatest.matchers.should.Matchers
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.ScalaVersion

abstract class TestBase extends AnyFunSuiteLike with Matchers {
implicit class ArtifactImplicits(private val artifact: Artifact) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package ru.d10xa.jadd.versions
import cats.implicits._
import coursier.core.Version
import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.testkit.TestBase

class ArtifactVersionsDownloaderTest extends TestBase {
Expand Down
4 changes: 2 additions & 2 deletions src/test/scala/ru/d10xa/jadd/view/ArtifactViewTest.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package ru.d10xa.jadd.view

import ru.d10xa.jadd.core.Artifact
import ru.d10xa.jadd.core.GroupId
import ru.d10xa.jadd.core.ScalaVersion
import ru.d10xa.jadd.core.types.GroupId
import ru.d10xa.jadd.core.types.ScalaVersion
import ru.d10xa.jadd.code.inserts.SbtArtifactMatcher
import ru.d10xa.jadd.testkit.TestBase
import ru.d10xa.jadd.view.ArtifactView.Match
Expand Down