CalVer SBT plugin for Scala Garrity Software projects.
Find a file
2024-05-19 12:49:31 -05:00
project Updated to support file output. 2024-05-19 12:49:31 -05:00
src/main/scala/gs Updated to support file output. 2024-05-19 12:49:31 -05:00
.gitignore Initializing the repository with a non-functional plugin. 2024-01-18 20:39:55 -06:00
.pre-commit-config.yaml Updating pre-commit/formatting. 2024-05-01 22:08:16 -05:00
.scalafmt.conf Updating pre-commit/formatting. 2024-05-01 22:08:16 -05:00
build.sbt Full support for MIT license 2024-04-12 08:04:20 -05:00
LICENSE Full support for MIT license 2024-04-12 08:04:20 -05:00
README.md Final tweaks for round 1 use. 2024-03-08 22:07:17 -06:00

sbt-gs-calver

CalVer plugin for Garrity Software projects. Typically used for library development.

Usage

This is an auto plugin that provides setting keys for version values.

  1. Add the plugin to your build.
  2. Update your build file to leverage the calculated CalVer values.
  3. Build releases using the -Drelease parameter.

Adding the Plugin

File: project/plugins.sbt

resolvers += "Garrity Software Releases" at "https://maven.garrity.co/gs"

addSbtPlugin("gs" % "sbt-gs-calver" % "0.1.0")

Updating the Build File

On any project within the build:

.settings(version := calVerSelected.value)

Publishing a Release

sbt -Drelease=true publish

Supported Setting Keys

These are available in build.sbt once the plugin is added.

calVerSelected

This setting should be used as the project version. Assign the value of this setting to the version setting:

lazy val `example` = project
  .in(file("."))
  .settings(version := calVerSelected.value)

calVerMajor

This setting should be used to calculate library names that are version-aware. This practice helps protect against binary compatibility issues stemming from different library versions existing as transitive dependencies.

lazy val `example` = project
  .in(file("."))
  .settings(version := calVerSelected.value)

Supported Command Line Properties

Properties are provided via -D parameters: -D<name>=<value>.

The release Property

Value is either true or false. If this property is not set, false is assumed. Releases are opt-in.

Supported Tasks

calVerInfo

Invoking sbt calVerInfo will emit diagnostic version information at the info log level via the SBT logger.

sbt calVerInfo
...
[info] [CalVer] Version: 2024.1.18-eba621c
...

Complete Example

plugins.sbt

resolvers += "Garrity Software Releases" at "https://maven.garrity.co/gs"

addSbtPlugin("gs" % "sbt-gs-calver" % "0.1.0")

build.sbt

val scala3: String = "3.3.1"

ThisBuild / organizationName     := "garrity software"
ThisBuild / organization         := "gs"
ThisBuild / scalaVersion         := scala3

lazy val sharedSettings = Seq(
  scalaVersion := scala3,
  version      := calVerSelected.value
)

lazy val `gs-example` = project
  .in(file("."))
  .settings(sharedSettings)