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