Compare commits

..

No commits in common. "main" and "0.3.0" have entirely different histories.
main ... 0.3.0

6 changed files with 57 additions and 46 deletions

View file

@ -1,5 +1,5 @@
// See: https://github.com/scalameta/scalafmt/tags for the latest tags. // See: https://github.com/scalameta/scalafmt/tags for the latest tags.
version = 3.9.4 version = 3.7.17
runner.dialect = scala3 runner.dialect = scala3
maxColumn = 80 maxColumn = 80

View file

@ -9,7 +9,7 @@ for non-GS projects.
```scala ```scala
resolvers += "Garrity Software Releases" at "https://maven.garrity.co/gs" resolvers += "Garrity Software Releases" at "https://maven.garrity.co/gs"
addSbtPlugin("gs" % "sbt-garrity-software" % "0.4.0") addSbtPlugin("gs" % "sbt-garrity-software" % "0.1.0")
``` ```
**File: build.sbt** **File: build.sbt**

View file

@ -1 +1 @@
sbt.version=1.10.11 sbt.version=1.9.9

View file

@ -3,8 +3,8 @@ package gs;
import sbt._ import sbt._
object Gs { object Gs {
/**
/** Standard compiler options used by GS projects. * Standard compiler options used by GS projects.
*/ */
val CompilerOptions: Seq[String] = Seq( val CompilerOptions: Seq[String] = Seq(
"-encoding", "-encoding",
@ -13,81 +13,92 @@ object Gs {
"-feature", // Emit warning and location for usages of features that should be imported explicitly. "-feature", // Emit warning and location for usages of features that should be imported explicitly.
"-explain", // Explain errors in more detail. "-explain", // Explain errors in more detail.
"-unchecked", // Enable additional warnings where generated code depends on assumptions. "-unchecked", // Enable additional warnings where generated code depends on assumptions.
"-explain-types", // Explain type errors in more detail. "-explain-types", // Explain type errors in more detail.
"-Xfatal-warnings", // Fail the compilation if there are any warnings. "-Xfatal-warnings", // Fail the compilation if there are any warnings.
"-language:strictEquality", // Enable multiversal equality (require CanEqual) "-language:strictEquality", // Enable multiversal equality (require CanEqual)
"-Wunused:implicits", // Warn if an implicit parameter is unused. "-Wunused:implicits", // Warn if an implicit parameter is unused.
"-Wunused:explicits", // Warn if an explicit parameter is unused. "-Wunused:explicits", // Warn if an explicit parameter is unused.
"-Wunused:imports", // Warn if an import selector is not referenced. "-Wunused:imports", // Warn if an import selector is not referenced.
"-Wunused:locals", // Warn if a local definition is unused. "-Wunused:locals", // Warn if a local definition is unused.
"-Wunused:privates", // Warn if a private member is unused. "-Wunused:privates", // Warn if a private member is unused.
"-Wsafe-init" // Enable the safe initialization check. "-Ysafe-init" // Enable the experimental safe initialization check.
) )
/** Host of the GS Git server. /**
* Definition of the MIT license. This is the default license for GS
* open source projects.
*/
val MIT: (String, java.net.URL) =
"MIT" -> sbt.url("https://garrity.co/MIT.html")
/**
* Host of the GS Git server.
*/ */
val GitHost: String = "git.garrity.co" val GitHost: String = "git.garrity.co"
/** Host of the Maven server. /**
* Host of the Maven server.
*/ */
val MavenHost: String = "maven.garrity.co" val MavenHost: String = "maven.garrity.co"
/** Realm of the Maven server. /**
* Realm of the Maven server.
*/ */
val MavenRealm: String = "Reposilite" val MavenRealm: String = "Reposilite"
/** Organization name used to organize projects in Git. /**
* Organization name used to organize projects in Git.
*/ */
val GitOrganization: String = "garrity-software" val GitOrganization: String = "garrity-software"
/** Human readable organization name. /**
* Human readable organization name.
*/ */
val OrganizationName: String = "Garrity Software" val OrganizationName: String = "Garrity Software"
/** Maven Group ID for GS projects. /**
* Maven Group ID for GS projects.
*/ */
val GroupId: String = "gs" val GroupId: String = "gs"
/** Calculate the Git repository for a project. /**
* Calculate the Git repository for a project.
* *
* @param projectName * @param projectName The project name.
* The project name. * @return The HTTPS Git repository URL.
* @return
* The HTTPS Git repository URL.
*/ */
def gitRepo(projectName: String): String = def gitRepo(projectName: String): String =
s"https://$GitHost/$GitOrganization/$projectName" s"https://$GitHost/$GitOrganization/$projectName"
/** Calculate the Git SSH target for a project. /**
* Calculate the Git SSH target for a project.
* *
* @param projectName * @param projectName The project name.
* The project name. * @return The SSH target.
* @return
* The SSH target.
*/ */
def gitSsh(projectName: String): String = def gitSsh(projectName: String): String =
s"git@$GitHost:$GitOrganization/$projectName.git" s"git@$GitHost:$GitOrganization/${projectName}.git"
object Environment { object Environment {
val MavenUser: String = "GS_MAVEN_USER" val MavenUser: String = "GS_MAVEN_USER"
val MavenToken: String = "GS_MAVEN_TOKEN" val MavenToken: String = "GS_MAVEN_TOKEN"
} }
/** Prefers to load credentials from file, if a file is available. Otherwise /**
* Prefers to load credentials from file, if a file is available. Otherwise
* mandates that the following environment variables exist: * mandates that the following environment variables exist:
* *
* - `GS_MAVEN_USER` * - `GS_MAVEN_USER`
* - `GS_MAVEN_TOKEN` * - `GS_MAVEN_TOKEN`
* *
* @return * @return The selected credentials for GS Maven.
* The selected credentials for GS Maven.
*/ */
def selectCredentials(): Credentials = def selectCredentials(): Credentials =
if ((Path.userHome / ".sbt" / ".credentials").exists()) if ((Path.userHome / ".sbt" / ".credentials").exists())
Credentials(Path.userHome / ".sbt" / ".credentials") Credentials(Path.userHome / ".sbt" / ".credentials")
else else
Credentials.apply( Credentials.apply(
realm = Gs.MavenRealm, realm =Gs.MavenRealm,
host = Gs.MavenHost, host = Gs.MavenHost,
userName = sys.env userName = sys.env
.get(Gs.Environment.MavenUser) .get(Gs.Environment.MavenUser)
@ -103,6 +114,5 @@ object Gs {
s"You must either provide ~/.sbt/.credentials or specify the ${Gs.Environment.MavenToken} environment variable." s"You must either provide ~/.sbt/.credentials or specify the ${Gs.Environment.MavenToken} environment variable."
) )
) )
) )
} }

View file

@ -6,12 +6,12 @@ import sbt._
*/ */
object GsKeys { object GsKeys {
/** Required setting for projects using the Garrity Software plugin. This /**
* Required setting for projects using the Garrity Software plugin. This
* value must match the Git repository name. This value is used to configure * value must match the Git repository name. This value is used to configure
* publishing and generate sub-project names. * publishing and generate sub-project names.
*/ */
lazy val gsProjectName = settingKey[String]( lazy val gsProjectName = settingKey[String](
"Name of the project and Git repository." "Name of the project and Git repository."
) )
} }

View file

@ -11,18 +11,19 @@ object GsPlugin extends AutoPlugin {
import autoImport._ import autoImport._
override def projectSettings: Seq[Setting[_]] = Seq( override def projectSettings: Seq[Setting[_]] = Seq(
publishMavenStyle := true, publishMavenStyle := true,
Test / Keys.publishArtifact := false, Test / Keys.publishArtifact := false,
pomIncludeRepository := Function.const(false), pomIncludeRepository := Function.const(false),
scmInfo := Some( scmInfo := Some(
ScmInfo( ScmInfo(
browseUrl = url(Gs.gitRepo(gsProjectName.value)), browseUrl = url(Gs.gitRepo(gsProjectName.value)),
connection = Gs.gitSsh(gsProjectName.value) connection = Gs.gitSsh(gsProjectName.value)
) )
), ),
homepage := Some(url(Gs.gitRepo(gsProjectName.value))), licenses := List(Gs.MIT),
organizationName := Gs.OrganizationName, homepage := Some(url(Gs.gitRepo(gsProjectName.value))),
organization := Gs.GroupId, organizationName := Gs.OrganizationName,
organization := Gs.GroupId,
organizationHomepage := Some(url("https://garrity.co/")), organizationHomepage := Some(url("https://garrity.co/")),
publishTo := { publishTo := {
val repo = "https://maven.garrity.co/" val repo = "https://maven.garrity.co/"