SemVer plugin updated.
This commit is contained in:
		
							parent
							
								
									127754c2a2
								
							
						
					
					
						commit
						46b7ae52c8
					
				
					 2 changed files with 16 additions and 74 deletions
				
			
		
							
								
								
									
										80
									
								
								build.sbt
									
										
									
									
									
								
							
							
						
						
									
										80
									
								
								build.sbt
									
										
									
									
									
								
							|  | @ -4,81 +4,14 @@ ThisBuild / organizationName     := "garrity software" | ||||||
| ThisBuild / organization         := "gs" | ThisBuild / organization         := "gs" | ||||||
| ThisBuild / organizationHomepage := Some(url("https://garrity.co/")) | ThisBuild / organizationHomepage := Some(url("https://garrity.co/")) | ||||||
| ThisBuild / scalaVersion         := scala3 | ThisBuild / scalaVersion         := scala3 | ||||||
| ThisBuild / versionScheme        := Some("early-semver") | ThisBuild / versionScheme        := Some("semver-spec") | ||||||
| 
 |  | ||||||
| externalResolvers := Seq( |  | ||||||
|   "Garrity Software Releases" at "https://maven.garrity.co/releases" |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| val ProjectName: String = "gs-config" | val ProjectName: String = "gs-config" | ||||||
| val Description: String = "Garrity Software Configuration Library" | val Description: String = "Garrity Software Configuration Library" | ||||||
| 
 | 
 | ||||||
| /** Helper to extract the value from `-Dproperty=value`. | lazy val sharedSettings = Seq( | ||||||
|   * |  | ||||||
|   * @param name |  | ||||||
|   *   The property name. |  | ||||||
|   * @param conv |  | ||||||
|   *   The conversion function to the output type. |  | ||||||
|   * @return |  | ||||||
|   *   The converted value, or `None` if no value exists. |  | ||||||
|   */ |  | ||||||
| def getProperty[A]( |  | ||||||
|   name: String, |  | ||||||
|   conv: String => A |  | ||||||
| ): Option[A] = |  | ||||||
|   Option(System.getProperty(name)).map(conv) |  | ||||||
| 
 |  | ||||||
| /** Use `sbt -Dversion=<version>` to provide the version, minus the SNAPSHOT |  | ||||||
|   * modifier. This is the typical approach for producing releases. |  | ||||||
|   */ |  | ||||||
| val VersionProperty: String = "version" |  | ||||||
| 
 |  | ||||||
| /** Use `sbt -Drelease=true` to trigger a release build. |  | ||||||
|   */ |  | ||||||
| val ReleaseProperty: String = "release" |  | ||||||
| 
 |  | ||||||
| /** The value of `-Dversion=<value>`. |  | ||||||
|   * |  | ||||||
|   * @return |  | ||||||
|   *   The version passed as input to SBT. |  | ||||||
|   */ |  | ||||||
| lazy val InputVersion: Option[String] = |  | ||||||
|   getProperty(VersionProperty, identity) |  | ||||||
| 
 |  | ||||||
| /** @return |  | ||||||
|   *   "-SNAPSHOT" if this is NOT a release, empty string otherwise. |  | ||||||
|   */ |  | ||||||
| lazy val Modifier: String = |  | ||||||
|   if (getProperty(ReleaseProperty, _.toBoolean).getOrElse(false)) "" |  | ||||||
|   else "-SNAPSHOT" |  | ||||||
| 
 |  | ||||||
| /** Version used if no version is passed as input. This helps with default/local |  | ||||||
|   * builds. |  | ||||||
|   */ |  | ||||||
| val DefaultVersion: String = "0.1.0-SNAPSHOT" |  | ||||||
| 
 |  | ||||||
| /** This is the output version of the published artifact. If this build is not a |  | ||||||
|   * release, the suffix "-SNAPSHOT" will be appended. |  | ||||||
|   * |  | ||||||
|   * @return |  | ||||||
|   *   The project version. |  | ||||||
|   */ |  | ||||||
| lazy val SelectedVersion: String = |  | ||||||
|   InputVersion |  | ||||||
|     .map(v => s"$v$Modifier") |  | ||||||
|     .getOrElse(DefaultVersion) |  | ||||||
| 
 |  | ||||||
| /** The major version (first segment) value. Used to label releases. |  | ||||||
|   * |  | ||||||
|   * @return |  | ||||||
|   *   The major version of the project. |  | ||||||
|   */ |  | ||||||
| lazy val MajorVersion: String = |  | ||||||
|   SelectedVersion.split('.').apply(0) |  | ||||||
| 
 |  | ||||||
| val sharedSettings = Seq( |  | ||||||
|   scalaVersion := scala3, |   scalaVersion := scala3, | ||||||
|   version      := SelectedVersion |   version      := semVerSelected.value | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| lazy val publishSettings = Seq( | lazy val publishSettings = Seq( | ||||||
|  | @ -100,9 +33,10 @@ lazy val publishSettings = Seq( | ||||||
|   ), |   ), | ||||||
|   publishTo := { |   publishTo := { | ||||||
|     val repo = "https://maven.garrity.co/" |     val repo = "https://maven.garrity.co/" | ||||||
|     if (SelectedVersion.endsWith("SNAPSHOT")) |     if (semVerSnapshot.value) | ||||||
|       Some("Garrity Software Maven" at repo + "snapshots") |       Some("Garrity Software Maven" at repo + "snapshots") | ||||||
|     else Some("Garrity Software Maven" at repo + "releases") |     else | ||||||
|  |       Some("Garrity Software Maven" at repo + "releases") | ||||||
|   } |   } | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -117,7 +51,7 @@ lazy val `gs-config` = project | ||||||
|   .settings(sharedSettings) |   .settings(sharedSettings) | ||||||
|   .settings(publishSettings) |   .settings(publishSettings) | ||||||
|   .settings(testSettings) |   .settings(testSettings) | ||||||
|   .settings(name := s"$ProjectName-v$MajorVersion") |   .settings(name := s"$ProjectName-v${semVerMajor.value}") | ||||||
|   .settings( |   .settings( | ||||||
|     libraryDependencies ++= Seq( |     libraryDependencies ++= Seq( | ||||||
|       "org.typelevel" %% "cats-effect" % "3.5.2" |       "org.typelevel" %% "cats-effect" % "3.5.2" | ||||||
|  |  | ||||||
|  | @ -1 +1,9 @@ | ||||||
| addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.8") | credentials += Credentials(Path.userHome / ".sbt" / ".credentials") | ||||||
|  | 
 | ||||||
|  | externalResolvers := Seq( | ||||||
|  |   "Garrity Software Mirror" at "https://maven.garrity.co/releases", | ||||||
|  |   "Garrity Software Releases" at "https://maven.garrity.co/gs" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | addSbtPlugin("org.scoverage" % "sbt-scoverage"        % "2.0.8") | ||||||
|  | addSbtPlugin("gs"            % "gs-semver-sbt-plugin" % "0.1.1") | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue