sbt-gs-semver/src/main/scala/gs/SemVer.scala

30 lines
580 B
Scala

package gs
import scala.util.matching.Regex
case class SemVer(
major: Int,
minor: Int,
patch: Int
) {
override def toString(): String =
s"$major.$minor.$patch"
def incrementPatch(): SemVer = copy(patch = this.patch + 1)
}
object SemVer {
val SemVerPattern: Regex =
"^(0|(?:[1-9][0-9]*))\\.(0|(?:[1-9][0-9]*))\\.(0|(?:[1-9][0-9]*))$".r
def parse(candidate: String): Option[SemVer] =
candidate match {
case SemVerPattern(major, minor, patch) =>
Some(SemVer(major.toInt, minor.toInt, patch.toInt))
case _ =>
None
}
}