Final tweaks for round 1 use.
This commit is contained in:
parent
417ffa6375
commit
c3f8de2caa
7 changed files with 80 additions and 72 deletions
|
@ -28,7 +28,7 @@ lazy val IsRelease: Boolean =
|
|||
lazy val Modifier: String =
|
||||
if (IsRelease) "" else "-SNAPSHOT"
|
||||
|
||||
val DefaultVersion: String = "0.1.2-SNAPSHOT"
|
||||
val DefaultVersion: String = "0.1.3-SNAPSHOT"
|
||||
|
||||
lazy val SelectedVersion: String =
|
||||
InputVersion
|
||||
|
|
|
@ -3,11 +3,12 @@ package gs
|
|||
import java.time.LocalDate
|
||||
import scala.collection.mutable.ListBuffer
|
||||
|
||||
/**
|
||||
* Representation of a rendered Calendar Version.
|
||||
/** Representation of a rendered Calendar Version.
|
||||
*
|
||||
* @param value The version string.
|
||||
* @param pattern The pattern which rendered the version string.
|
||||
* @param value
|
||||
* The version string.
|
||||
* @param pattern
|
||||
* The pattern which rendered the version string.
|
||||
*/
|
||||
case class CalVer(
|
||||
value: String,
|
||||
|
@ -15,11 +16,13 @@ case class CalVer(
|
|||
)
|
||||
|
||||
object CalVer {
|
||||
/**
|
||||
* Render the given pattern to a Calendar Version.
|
||||
|
||||
/** Render the given pattern to a Calendar Version.
|
||||
*
|
||||
* @param pattern The pattern to render.
|
||||
* @return The rendered CalVer value.
|
||||
* @param pattern
|
||||
* The pattern to render.
|
||||
* @return
|
||||
* The rendered CalVer value.
|
||||
*/
|
||||
def render(pattern: Pattern): CalVer = {
|
||||
val today = LocalDate.now()
|
||||
|
@ -40,8 +43,8 @@ object CalVer {
|
|||
}
|
||||
|
||||
object Defaults {
|
||||
/**
|
||||
* Default pattern for release versions.
|
||||
|
||||
/** Default pattern for release versions.
|
||||
*/
|
||||
val ReleasePattern: Pattern =
|
||||
Pattern
|
||||
|
@ -54,8 +57,7 @@ object CalVer {
|
|||
.addComponent(Component.GitSha(7))
|
||||
.build()
|
||||
|
||||
/**
|
||||
* Default pattern for pre-release versions.
|
||||
/** Default pattern for pre-release versions.
|
||||
*/
|
||||
val PreReleasePattern: Pattern =
|
||||
Pattern
|
||||
|
@ -65,45 +67,46 @@ object CalVer {
|
|||
.addDelimiter(Delimiter.Dot)
|
||||
.addComponent(Component.DD)
|
||||
.addDelimiter(Delimiter.Hyphen)
|
||||
.addComponent(Component.GitSha(7))
|
||||
.addDelimiter(Delimiter.Hyphen)
|
||||
.addComponent(Component.Label("SNAPSHOT"))
|
||||
.build()
|
||||
|
||||
}
|
||||
|
||||
sealed trait Component
|
||||
|
||||
object Component {
|
||||
/**
|
||||
* CalVer Component: Year.
|
||||
|
||||
/** CalVer Component: Year.
|
||||
*/
|
||||
case object YYYY extends Component
|
||||
|
||||
/**
|
||||
* CalVer Component: Month (1-12), without a leading zero.
|
||||
/** CalVer Component: Month (1-12), without a leading zero.
|
||||
*/
|
||||
case object MM extends Component
|
||||
|
||||
/**
|
||||
* CalVer Component: Day of Month, without a leading zero.
|
||||
/** CalVer Component: Day of Month, without a leading zero.
|
||||
*/
|
||||
case object DD extends Component
|
||||
|
||||
/**
|
||||
* CalVer Component: Label.
|
||||
/** CalVer Component: Label.
|
||||
*
|
||||
* This component contains an arbitrary string value.
|
||||
*
|
||||
* @param value The value of the label.
|
||||
* @param value
|
||||
* The value of the label.
|
||||
*/
|
||||
case class Label(value: String) extends Component
|
||||
|
||||
/**
|
||||
* CalVer Component. Git SHA.
|
||||
/** CalVer Component. Git SHA.
|
||||
*
|
||||
* This component defines the length (first N characters) of the Git SHA to
|
||||
* take from the current branch of the current repository. An empty string
|
||||
* is used if lookup fails or no commits exist.
|
||||
*
|
||||
* @param length The number of characters of the Git SHA to use.
|
||||
* @param length
|
||||
* The number of characters of the Git SHA to use.
|
||||
*/
|
||||
case class GitSha(length: Int) extends Component
|
||||
|
||||
|
@ -114,6 +117,7 @@ object CalVer {
|
|||
case Label(value) => value
|
||||
case GitSha(length) => s"SHA($length)"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sealed abstract class Delimiter(val value: String)
|
||||
|
@ -128,6 +132,7 @@ object CalVer {
|
|||
}
|
||||
|
||||
final class Pattern private (val items: List[Pattern.Item]) {
|
||||
|
||||
lazy val str: String =
|
||||
items.map {
|
||||
case Left(component) => Component.describe(component)
|
||||
|
@ -159,11 +164,15 @@ object CalVer {
|
|||
}
|
||||
|
||||
object Builder {
|
||||
|
||||
def apply(component: Component): Builder = {
|
||||
val b = new Builder()
|
||||
b.addComponent(component)
|
||||
b
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,31 +6,30 @@ import sbt._
|
|||
*/
|
||||
object CalVerKeys {
|
||||
|
||||
/** SBT Setting for the calculated CalVer.
|
||||
/** SBT Setting for the calculated CalVer. This can be used as "version".
|
||||
*/
|
||||
lazy val calVer = settingKey[String](
|
||||
"Calculated CalVer."
|
||||
)
|
||||
|
||||
/**
|
||||
* SBT setting which defines the CalVer pattern used to calculate the final
|
||||
/** SBT setting which defines the CalVer pattern used to calculate the final
|
||||
* version. This should not be set manually, please use
|
||||
* `calVerReleasePattern` and `calVerPreReleasePattern`.
|
||||
* `calVerReleasePattern` and `calVerPreReleasePattern`. This pattern is
|
||||
* selected from those values depending on whether this is a release build or
|
||||
* not.
|
||||
*/
|
||||
lazy val calVerPattern = settingKey[CalVer.Pattern](
|
||||
"Selected CalVer pattern."
|
||||
)
|
||||
|
||||
/**
|
||||
* User-defined SBT setting which defines the CalVer pattern to use for a
|
||||
/** User-defined SBT setting which defines the CalVer pattern to use for a
|
||||
* release build.
|
||||
*/
|
||||
lazy val calVerReleasePattern = settingKey[Option[CalVer.Pattern]](
|
||||
"Pattern to use for calculating CalVer for release builds."
|
||||
)
|
||||
|
||||
/**
|
||||
* User-defined SBT setting which defines the CalVer pattern to use for a
|
||||
/** User-defined SBT setting which defines the CalVer pattern to use for a
|
||||
* pre-release build.
|
||||
*/
|
||||
lazy val calVerPreReleasePattern = settingKey[Option[CalVer.Pattern]](
|
||||
|
|
|
@ -9,23 +9,24 @@ object CalVerPlugin extends AutoPlugin {
|
|||
|
||||
import autoImport._
|
||||
|
||||
// Perform all version calculations and expose as a variable.
|
||||
lazy val calVerDefaults: Seq[Setting[_]] = {
|
||||
lazy val calVerDefaults: Seq[Setting[_]] =
|
||||
Seq(
|
||||
calVerReleasePattern := Some(CalVer.Defaults.ReleasePattern),
|
||||
calVerPreReleasePattern := Some(CalVer.Defaults.PreReleasePattern),
|
||||
calVerPreReleasePattern := Some(CalVer.Defaults.PreReleasePattern)
|
||||
)
|
||||
}
|
||||
|
||||
override lazy val projectSettings: Seq[Setting[_]] = {
|
||||
val isRelease = PluginProperties.isRelease()
|
||||
|
||||
Seq(
|
||||
calVerPattern := { if (isRelease) {
|
||||
calVerPattern := {
|
||||
if (isRelease)
|
||||
calVerReleasePattern.value.getOrElse(CalVer.Defaults.ReleasePattern)
|
||||
} else {
|
||||
calVerPreReleasePattern.value.getOrElse(CalVer.Defaults.PreReleasePattern)
|
||||
}},
|
||||
else
|
||||
calVerPreReleasePattern.value.getOrElse(
|
||||
CalVer.Defaults.PreReleasePattern
|
||||
)
|
||||
},
|
||||
calVer := CalVer.render(calVerPattern.value).value,
|
||||
calVerInfo := {
|
||||
val log = Keys.streams.value.log
|
||||
|
@ -37,9 +38,4 @@ object CalVerPlugin extends AutoPlugin {
|
|||
|
||||
// Automatically exposed globally.
|
||||
override lazy val globalSettings: Seq[Setting[_]] = calVerDefaults
|
||||
|
||||
// Add the custom task.
|
||||
override lazy val buildSettings: Seq[Setting[_]] = Seq(
|
||||
)
|
||||
|
||||
}
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
package gs
|
||||
|
||||
object Git {
|
||||
/**
|
||||
* Get the latest SHA. If there are no commits on this branch, the empty
|
||||
|
||||
/** Get the latest SHA. If there are no commits on this branch, the empty
|
||||
* string will be returned.
|
||||
*
|
||||
* @param length The number of characters to take from the SHA.
|
||||
* @return The latest SHA.
|
||||
* @param length
|
||||
* The number of characters to take from the SHA.
|
||||
* @return
|
||||
* The latest SHA.
|
||||
*/
|
||||
def getSha(length: Int): String = {
|
||||
val result = os
|
||||
|
@ -26,4 +28,5 @@ object Git {
|
|||
else
|
||||
""
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -41,4 +41,5 @@ object PluginProperties {
|
|||
ReleaseProperty,
|
||||
raw => Try(raw.toBoolean).getOrElse(false)
|
||||
).getOrElse(false)
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue