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