Skip to content
This repository has been archived by the owner on Aug 3, 2020. It is now read-only.

Switch to play-build #5

Merged
merged 1 commit into from May 27, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 16 additions & 0 deletions .travis.yml
@@ -1,3 +1,19 @@
jdk: openjdk6
language: scala
script: sbt publishLocal test scripted
sudo: false
cache:
directories:
- $HOME/.ivy2/cache
before_cache:
# Ensure changes to the cache aren't persisted
- rm -rf $HOME/.ivy2/cache/com.typesafe.play/play-enhancer*
- rm -rf $HOME/.ivy2/cache/scala_*/sbt_*/com.typesafe.sbt/sbt-play-enhancer
# Delete all ivydata files since ivy touches them on each build
- find $HOME/.ivy2/cache -name "ivydata-*.properties" | xargs rm
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/d2c8a242a2615f659595
on_success: always
on_failure: always
120 changes: 10 additions & 110 deletions build.sbt
@@ -1,133 +1,33 @@
lazy val root = project
lazy val `play-enhancer-root` = project
.in(file("."))
.disablePlugins(BintrayPlugin)
.aggregate(enhancer, plugin)
.settings(common: _*)
.settings(noPublish: _*)
.settings(
name := "play-enhancer-root"
)
.enablePlugins(PlayRootProject)
.aggregate(`play-enhancer`, `sbt-play-enhancer`)

lazy val enhancer = project
lazy val `play-enhancer` = project
.in(file("enhancer"))
.disablePlugins(BintrayPlugin)
.settings(common: _*)
.settings(publishMavenCentral: _*)
.enablePlugins(PlaySbtLibrary)
.settings(
organization := "com.typesafe.play",
name := "play-enhancer",
libraryDependencies += "org.javassist" % "javassist" % "3.18.2-GA",
autoScalaLibrary := false,
crossPaths := false
)

lazy val plugin = project
lazy val `sbt-play-enhancer` = project
.in(file("plugin"))
.dependsOn(enhancer)
.settings(common: _*)
.settings(scriptedSettings: _*)
.settings(publishBintray: _*)
.enablePlugins(PlaySbtPlugin)
.dependsOn(`play-enhancer`)
.settings(
name := "sbt-play-enhancer",
organization := "com.typesafe.sbt",
sbtPlugin := true,
scriptedLaunchOpts += ("-Dproject.version=" + version.value),
scriptedLaunchOpts += "-XX:MaxPermSize=256m",
resourceGenerators in Compile <+= generateVersionFile
)

// Shared settings

def common = releaseCommonSettings ++ Seq(
javacOptions in compile ++= Seq("-source", "1.6", "-target", "1.6"),
homepage := Some(url("https://github.com/playframework/play-enhancer")),
licenses := Seq("Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0")),
pomExtra :=
<scm>
<url>git@github.com:playframework/play-enhancer.git</url>
<connection>scm:git:git@github.com:playframework/play-enhancer.git</connection>
</scm>
<developers>
<developer>
<id>jroper</id>
<name>James Roper</name>
<url>https://jazzy.id.au</url>
</developer>
</developers>
)

def publishMavenCentral = sonatypeSettings ++ Seq(
SonatypeKeys.profileName := "com.typesafe"
)

def publishBintray = Seq(
publishTo := {
if (isSnapshot.value) Some(Opts.resolver.sonatypeSnapshots)
else publishTo.value
},
publishMavenStyle := isSnapshot.value,
bintrayOrganization := Some("playframework"),
bintrayRepository := "sbt-plugin-releases",
bintrayPackage := "sbt-play-enhancer",
bintrayReleaseOnPublish := false
)

def noPublish = Seq(
publish := {},
publishLocal := {},
PgpKeys.publishSigned := {},
// publish-signed needs this for some reason...
publishTo := Some(Resolver.file("Dummy repo", target.value / "dummy-repo"))
)
playBuildRepoName in ThisBuild := "play-enhancer"

def generateVersionFile = Def.task {
val version = (Keys.version in enhancer).value
val version = (Keys.version in `play-enhancer`).value
val file = (resourceManaged in Compile).value / "play.enhancer.version.properties"
val content = s"play.enhancer.version=$version"
IO.write(file, content)
Seq(file)
}

// Release settings
def releaseCommonSettings: Seq[Setting[_]] = releaseSettings ++ {
import sbtrelease._
import ReleaseStateTransformations._
import ReleaseKeys._
import sbt.complete.Parser

def inputTaskStep(key: InputKey[_], input: String) = ReleaseStep(action = { state =>
val extracted = Project.extract(state)
val inputTask = extracted.get(Scoped.scopedSetting(key.scope, key.key))
val task = Parser.parse(input, inputTask.parser(state)) match {
case Right(t) => t
case Left(msg) => sys.error(s"Invalid programmatic input:\n$msg")
}
GlobalPlugin.evaluate(state, extracted.structure, task, key :: Nil)._1
})

def taskStep(key: TaskKey[_]) = ReleaseStep(action = { state =>
Project.extract(state).runTask(key, state)._1
})

Seq(
publishArtifactsAction := PgpKeys.publishSigned.value,
tagName := (version in ThisBuild).value,

releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
inputTaskStep(scripted in plugin, ""),
setReleaseVersion,
commitReleaseVersion,
tagRelease,
publishArtifacts,
taskStep(bintrayRelease in plugin),
inputTaskStep(SonatypeKeys.sonatypeRelease in enhancer, ""),
setNextVersion,
commitNextVersion,
pushChanges
)
)
}
10 changes: 1 addition & 9 deletions project/plugins.sbt
@@ -1,9 +1 @@
libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value

addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0")
addSbtPlugin("com.github.gseitz" % "sbt-release" % "0.8.5")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "0.2.2")

addSbtPlugin("com.eed3si9n" % "bintray-sbt" % "0.3.0-a1934a5457f882053b08cbdab5fd4eb3c2d1285d")
resolvers += Resolver.url("bintray-eed3si9n-sbt-plugins", url("https://dl.bintray.com/eed3si9n/sbt-plugins/"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.typesafe.play" % "interplay" % sys.props.getOrElse("interplay.version", "1.0.2"))