Skip to content

Commit

Permalink
Merge pull request #2784 from eed3si9n/wip/release
Browse files Browse the repository at this point in the history
release command
  • Loading branch information
tgodzik committed Jul 20, 2022
2 parents 54c5f61 + 1356de1 commit 82e8d8e
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 6 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@ jobs:
VERSION=$(echo $GITHUB_REF_NAME | cut -d "_" -f2 | cut -c2-)
SCALA_VERSION=$(echo $GITHUB_REF_NAME | cut -d "_" -f3)
if [ ! -z $VERSION ] && [ ! -z $SCALA_VERSION ]; then
export CI_RELEASE="++$SCALA_VERSION semanticdbScalacCore/publishSigned; ++$SCALA_VERSION semanticdbScalacPlugin/publishSigned; ++$SCALA_VERSION metac/publishSigned"
export CI_RELEASE="++$SCALA_VERSION! semanticdbScalacCore/publishSigned; ++$SCALA_VERSION! semanticdbScalacPlugin/publishSigned; ++$SCALA_VERSION! metac/publishSigned"
UPDATE_DOCS=false
COMMAND="; set ThisBuild/version :=\"$VERSION\"; $COMMAND"
else
echo 'Invalid tag name. Expected: semanticdb_v${existing-release}_${scala-version}'
exit 1
fi
else
export CI_RELEASE="release"
fi
sbt "$COMMAND"
if [ "$UPDATE_DOCS" = true ]; then
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ repos.tar.gz*
.settings
.cache*
.project
.cross

website/translated_docs
website/build/
Expand Down
61 changes: 56 additions & 5 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,17 @@ def parseTagVersion: String = {
}
def localSnapshotVersion: String = s"$parseTagVersion-SNAPSHOT"
def isCI = System.getenv("CI") != null
def onAllReleaseProject(s0: State)(cmd: String): State = {
s"+ -v fullCrossProjects/$cmd" ::
s"++ -v $LatestScala213" ::
s"all binaryJVMProjects/$cmd binaryJSNativeProjects/$cmd" ::
s"++ -v $LatestScala212" ::
s"all binaryJVMProjects/$cmd binaryJSNativeProjects/$cmd" ::
s"++ -v $LatestScala211" ::
s"binaryJVMProjects/$cmd" ::
s"++ -v $LatestScala213" ::
s0
}

// ==========================================
// Projects
Expand All @@ -31,6 +42,16 @@ name := {
nonPublishableSettings
crossScalaVersions := Nil
enablePlugins(ScalaUnidocPlugin)
commands += Command.command("release") { s0 =>
// run compile first as dry-run
val s1 = onAllReleaseProject(s0)("compile")
onAllReleaseProject(s1)("publishSigned")
}
commands += Command.command("releaseSnapshot") { s0 =>
// run compile first as dry-run
val s1 = onAllReleaseProject(s0)("compile")
onAllReleaseProject(s1)("publish")
}
addCommandAlias("benchAll", benchAll.command)
addCommandAlias("benchLSP", benchLSP.command)
addCommandAlias("benchQuick", benchQuick.command)
Expand Down Expand Up @@ -78,7 +99,6 @@ Global / resolvers += "scala-integration" at
"https://scala-ci.typesafe.com/artifactory/scala-integration/"

val commonJsSettings = Seq(
crossScalaVersions := List(LatestScala213, LatestScala212),
scalacOptions ++= {
if (isSnapshot.value) Seq.empty
else {
Expand All @@ -90,12 +110,45 @@ val commonJsSettings = Seq(
)

lazy val nativeSettings = Seq(
crossScalaVersions := List(LatestScala213, LatestScala212),
nativeConfig ~= {
_.withMode(scalanative.build.Mode.releaseFast)
}
)

// Dummy project used only for aggregation
lazy val fullCrossProjects = project
.in(file(".cross/full"))
.aggregate(semanticdbScalacCore, semanticdbScalacPlugin)
.settings(
nonPublishableSettings,
crossScalaVersions := Nil
)

def binaryCrossProjs = List(common, trees, parsers, scalameta)

// Dummy project used only for aggregation
lazy val binaryJVMProjects = project
.in(file(".cross/jvm"))
.aggregate(
binaryCrossProjs.map(c => (c.jvm: ProjectReference)) :::
List(metac: ProjectReference): _*
)
.settings(
nonPublishableSettings,
crossScalaVersions := Nil
)

// Dummy project used only for aggregation
lazy val binaryJSNativeProjects = project
.in(file(".cross/js_native"))
.aggregate(
binaryCrossProjs.flatMap(c => List(c.js: ProjectReference, c.native: ProjectReference)): _*
)
.settings(
nonPublishableSettings,
crossScalaVersions := Nil
)

/* ======================== SEMANTICDB ======================== */
lazy val semanticdbScalacCore = project
.in(file("semanticdb/scalac/library"))
Expand Down Expand Up @@ -142,7 +195,6 @@ lazy val metac = project
.settings(
publishableSettings,
fullCrossVersionSettings,
crossScalaVersions := LanguageVersions,
mimaPreviousArtifacts := Set.empty,
description := "Scalac 2.x launcher that generates SemanticDB on compile",
libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value,
Expand Down Expand Up @@ -513,7 +565,7 @@ lazy val sharedSettings = Def.settings(
}
},
scalaVersion := LanguageVersion,
crossScalaVersions := LanguageVersions,
crossScalaVersions := LanguageVersions ++ LegacyScalaVersions,
organization := "org.scalameta",
libraryDependencies ++= {
if (isScala213.value) Nil
Expand Down Expand Up @@ -737,7 +789,6 @@ def compatibilityPolicyViolation(ticket: String) = Seq(

lazy val fullCrossVersionSettings = Seq(
crossVersion := CrossVersion.full,
crossScalaVersions := LanguageVersions ++ LegacyScalaVersions,
Compile / unmanagedSourceDirectories += {
// NOTE: sbt 0.13.8 provides cross-version support for Scala sources
// (http://www.scala-sbt.org/0.13/docs/sbt-0.13-Tech-Previews.html#Cross-version+support+for+Scala+sources).
Expand Down

0 comments on commit 82e8d8e

Please sign in to comment.