Skip to content
Draft
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
36 changes: 36 additions & 0 deletions build.sc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.github.lolgab.mill.mima._
import de.tobiasroeser.mill.vcs.version._
import mill._
import mill.scalajslib._
import mill.scalanativelib._
import mill.scalalib._
import mill.scalalib.publish._

Expand All @@ -14,6 +15,7 @@ object DepVersions {
def mdoc = "2.3.6"
def scala213 = "2.13.16"
def scalaJs = "1.18.1"
def scalaNative = "0.5.6"

def scala = Seq(scala213, "2.12.20")
}
Expand Down Expand Up @@ -142,9 +144,43 @@ trait VersionsJs extends Versions with ScalaJSModule {
}
}

trait VersionsNative extends Versions with ScalaNativeModule {
def scalaNativeVersion = DepVersions.scalaNative

def mimaPreviousVersions = T {
val cutOff = coursier.core.Version("0.3.3")
super.mimaPreviousVersions().filter { v =>
coursier.core.Version(v) > cutOff
}
}

// required if mimaPreviousVersions is empty
def mimaPreviousArtifacts = T {
val versions = mimaPreviousVersions().distinct
mill.api.Result.Success(
Agg.from(
versions.map(version =>
ivy"${pomSettings().organization}:${artifactId()}:$version"
)
)
)
}

object test extends ScalaNativeTests {
def ivyDeps = super.ivyDeps() ++ Agg(
Deps.utest
)
def testFramework = "utest.runner.Framework"
def sources = T.sources {
super.sources() ++ testSources()
}
}
}

object versions extends Module {
object jvm extends Cross[VersionsJvm](DepVersions.scala)
object js extends Cross[VersionsJs](DepVersions.scala)
object native extends Cross[VersionsNative](DepVersions.scala)
}


Expand Down
12 changes: 12 additions & 0 deletions versions/native/src/coursier/version/internal/Compatibility.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package coursier.version.internal

object Compatibility {

implicit class RichChar(private val c: Char) extends AnyVal {
def letter = c.isLetter
def letterOrDigit = c.isLetterOrDigit
}

def regexLookbehind: String = "<="

}
2 changes: 1 addition & 1 deletion versions/shared/src/coursier/version/VersionParse.scala
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ object VersionParse {
} yield itv
}

private val multiVersionIntervalSplit = ("(?" + regexLookbehind + "[" + quote("])") + "]),(?=[" + quote("([") + "])").r
private lazy val multiVersionIntervalSplit = ("(?<thing>" + regexLookbehind + "[" + "\\]\\)" + "]),(?<a>=[" + "\\(\\[" + "])").r

def multiVersionInterval(s: String): Option[VersionInterval] = {

Expand Down