-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathpublish.sbt
75 lines (66 loc) · 2.09 KB
/
publish.sbt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import sbtrelease._
import sbtrelease.ReleaseStateTransformations._
import xerial.sbt.Sonatype
crossScalaVersions += "3.6.3"
pluginCrossBuild / sbtVersion := {
scalaBinaryVersion.value match {
case "2.12" =>
sbtVersion.value
case _ =>
"2.0.0-M3"
}
}
Sonatype.sonatypeSettings
publishTo := sonatypePublishToBundle.value
val updateReadme: State => State = { state: State =>
val extracted = Project.extract(state)
val v = extracted get version
val org = extracted get organization
val n = extracted get name
val readme = "README.md"
val readmeFile = file(readme)
val newReadme = Predef
.augmentString(IO.read(readmeFile))
.lines
.map { line =>
val matchReleaseOrSnapshot = line.contains("SNAPSHOT") == v.contains("SNAPSHOT")
if (line.startsWith("addSbtPlugin") && matchReleaseOrSnapshot) {
s"""addSbtPlugin("${org}" % "${n}" % "$v")"""
} else line
}
.mkString("", "\n", "\n")
IO.write(readmeFile, newReadme)
val git = new Git(extracted get baseDirectory)
git.add(readme) ! state.log
git.commit(message = "update " + readme, sign = false, signOff = false) ! state.log
sys.process.Process("git diff HEAD^") ! state.log
state
}
commands += Command.command("updateReadme")(updateReadme)
val updateReadmeProcess: ReleaseStep = updateReadme
releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
releaseStepCommandAndRemaining("+ test"),
releaseStepCommandAndRemaining("+ scripted"),
setReleaseVersion,
updateReadmeProcess,
commitReleaseVersion,
tagRelease,
releaseStepCommandAndRemaining("+ publishSigned"),
releaseStepCommandAndRemaining("sonatypeBundleRelease"),
setNextVersion,
commitNextVersion,
pushChanges
)
pomPostProcess := { node =>
import scala.xml._
import scala.xml.transform._
def stripIf(f: Node => Boolean) = new RewriteRule {
override def transform(n: Node) =
if (f(n)) NodeSeq.Empty else n
}
val stripTestScope = stripIf { n => n.label == "dependency" && (n \ "scope").text == "test" }
new RuleTransformer(stripTestScope).transform(node)(0)
}