Sarah Gerweck
8 years ago
10 changed files with 388 additions and 347 deletions
-
36build.sbt
-
107project/BasicSettings.scala
-
346project/Build.scala
-
106project/Dependencies.scala
-
14project/Eclipse.scala
-
60project/Helpers.scala
-
45project/Publish.scala
-
11project/Release.scala
-
8project/Resolvers.scala
-
2project/build.properties
@ -0,0 +1,36 @@ |
|||
import Dependencies._ |
|||
import Helpers._ |
|||
import Resolvers._ |
|||
|
|||
lazy val root = (project in file (".")) |
|||
.enablePlugins(BasicSettings) |
|||
.settings(Eclipse.settings: _*) |
|||
.settings(Publish.settings: _*) |
|||
.settings(Release.settings: _*) |
|||
.settings(resolvers += sonatypeRelease) |
|||
.settings( |
|||
name := "ScalaFX Utils", |
|||
|
|||
libraryDependencies ++= Seq ( |
|||
log4s, |
|||
slf4j, |
|||
jclBridge % "runtime,optional", |
|||
log4jBridge % "runtime,optional", |
|||
logback % "runtime,optional", |
|||
gerweckUtil, |
|||
scalaJava8, |
|||
scalaFx, |
|||
scalaz, |
|||
shapeless |
|||
), |
|||
|
|||
/* Akka dependencies */ |
|||
libraryDependencies ++= Seq ( |
|||
akkaActor % "optional", |
|||
akkaStream % "optional", |
|||
akkaAgent % "optional", |
|||
gerweckUtilAkka % "optional" |
|||
), |
|||
|
|||
unmanagedJars in Compile += Attributed.blank(file(System.getenv("JAVA_HOME") + "/jre/lib/ext/jfxrt.jar")) |
|||
) |
@ -0,0 +1,107 @@ |
|||
import sbt._ |
|||
import Keys._ |
|||
|
|||
import scala.util.Properties.envOrNone |
|||
|
|||
import com.typesafe.sbt.site._ |
|||
|
|||
import Helpers._ |
|||
|
|||
sealed trait Basics { |
|||
final val buildOrganization = "org.gerweck.scalafx" |
|||
final val buildOrganizationName = "Sarah Gerweck" |
|||
final val buildOrganizationUrl = Some("https://github.com/sarahgerweck") |
|||
|
|||
final val buildScalaVersion = "2.11.8" |
|||
final val extraScalaVersions = Seq.empty |
|||
final val minimumJavaVersion = "1.8" |
|||
lazy val defaultOptimize = false |
|||
final val projectMainClass = None |
|||
|
|||
lazy val parallelBuild = false |
|||
lazy val cachedResolution = true |
|||
|
|||
/* Metadata definitions */ |
|||
lazy val buildMetadata = Vector( |
|||
licenses := Seq("Apache License, Version 2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0.txt")), |
|||
homepage := Some(url("https://github.com/sarahgerweck/scalafx-utils")), |
|||
description := "ScalaFX Utilities", |
|||
startYear := Some(2015), |
|||
scmInfo := Some(ScmInfo(url("https://github.com/sarahgerweck/scalafx-utils"), "scm:git:git@github.com:sarahgerweck/scalafx-utils.git")) |
|||
) |
|||
|
|||
lazy val developerInfo = { |
|||
<developers> |
|||
<developer> |
|||
<id>sarah</id> |
|||
<name>Sarah Gerweck</name> |
|||
<email>sarah.a180@gmail.com</email> |
|||
<url>https://github.com/sarahgerweck</url> |
|||
<timezone>America/Los_Angeles</timezone> |
|||
</developer> |
|||
</developers> |
|||
} |
|||
} |
|||
|
|||
object BasicSettings extends AutoPlugin with Basics { |
|||
override def requires = SiteScaladocPlugin |
|||
|
|||
override lazy val projectSettings = ( |
|||
buildMetadata ++ |
|||
projectMainClass.toSeq.map(mainClass := Some(_)) ++ |
|||
Seq ( |
|||
organization := buildOrganization, |
|||
organizationName := buildOrganizationName, |
|||
organizationHomepage := buildOrganizationUrl map { url _ }, |
|||
|
|||
scalaVersion := buildScalaVersion, |
|||
crossScalaVersions := buildScalaVersions, |
|||
|
|||
scalacOptions ++= buildScalacOptions, |
|||
javacOptions ++= buildJavacOptions, |
|||
autoAPIMappings := true, |
|||
|
|||
updateOptions := updateOptions.value.withCachedResolution(cachedResolution), |
|||
parallelExecution := parallelBuild, |
|||
|
|||
evictionWarningOptions in update := |
|||
EvictionWarningOptions.default.withWarnTransitiveEvictions(false).withWarnDirectEvictions(false).withWarnScalaVersionEviction(false) |
|||
) |
|||
) |
|||
|
|||
/* Overridable flags */ |
|||
lazy val optimize = boolFlag("OPTIMIZE") orElse boolFlag("OPTIMISE") getOrElse defaultOptimize |
|||
lazy val deprecation = boolFlag("NO_DEPRECATION") map (!_) getOrElse true |
|||
lazy val inlineWarn = boolFlag("INLINE_WARNINGS") getOrElse false |
|||
lazy val debug = boolFlag("DEBUGGER") getOrElse false |
|||
lazy val debugPort = envOrNone("DEBUGGER_PORT") map { _.toInt } getOrElse 5050 |
|||
lazy val debugSuspend = boolFlag("DEBUGGER_SUSPEND") getOrElse true |
|||
lazy val unusedWarn = boolFlag("UNUSED_WARNINGS") getOrElse false |
|||
lazy val importWarn = boolFlag("IMPORT_WARNINGS") getOrElse false |
|||
|
|||
lazy val buildScalaVersions = buildScalaVersion +: extraScalaVersions |
|||
val buildScalacOptions = Seq ( |
|||
"-unchecked", |
|||
"-feature", |
|||
"-target:jvm-" + minimumJavaVersion |
|||
) ++ ( |
|||
if (deprecation) Seq("-deprecation") else Seq.empty |
|||
) ++ ( |
|||
if (optimize) Seq("-optimize") else Seq.empty |
|||
) ++ ( |
|||
if (inlineWarn) Seq("-Yinline-warnings") else Seq.empty |
|||
) ++ ( |
|||
if (unusedWarn) Seq("-Ywarn-unused") else Seq.empty |
|||
) ++ ( |
|||
if (importWarn) Seq("-Ywarn-unused-import") else Seq.empty |
|||
) |
|||
|
|||
/* Java build setup */ |
|||
val buildJavacOptions = Seq( |
|||
"-target", minimumJavaVersion, |
|||
"-source", minimumJavaVersion |
|||
) ++ ( |
|||
if (deprecation) Seq("-Xlint:deprecation") else Seq.empty |
|||
) |
|||
} |
|||
|
@ -1,346 +0,0 @@ |
|||
import sbt._ |
|||
import Keys._ |
|||
|
|||
import com.typesafe.sbt.site._ |
|||
import sbtrelease.ReleasePlugin.autoImport._ |
|||
import com.typesafe.sbt.SbtPgp.autoImport._ |
|||
|
|||
import scala.util.Properties.envOrNone |
|||
import com.typesafe.sbteclipse.plugin.EclipsePlugin._ |
|||
|
|||
import Helpers._ |
|||
|
|||
sealed trait Basics { |
|||
final val buildOrganization = "org.gerweck.scalafx" |
|||
final val buildOrganizationName = "Sarah Gerweck" |
|||
final val buildOrganizationUrl = Some("https://github.com/sarahgerweck") |
|||
|
|||
final val buildScalaVersion = "2.11.8" |
|||
final val extraScalaVersions = Seq.empty |
|||
final val minimumJavaVersion = "1.8" |
|||
lazy val defaultOptimize = false |
|||
final val projectMainClass = None |
|||
|
|||
lazy val parallelBuild = false |
|||
lazy val cachedResolution = true |
|||
|
|||
/* Metadata definitions */ |
|||
lazy val buildMetadata = Vector( |
|||
licenses := Seq("Apache License, Version 2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0.txt")), |
|||
homepage := Some(url("https://github.com/sarahgerweck/scalafx-utils")), |
|||
description := "ScalaFX Utilities", |
|||
startYear := Some(2015), |
|||
scmInfo := Some(ScmInfo(url("https://github.com/sarahgerweck/scalafx-utils"), "scm:git:git@github.com:sarahgerweck/scalafx-utils.git")) |
|||
) |
|||
|
|||
lazy val developerInfo = { |
|||
<developers> |
|||
<developer> |
|||
<id>sarah</id> |
|||
<name>Sarah Gerweck</name> |
|||
<email>sarah.a180@gmail.com</email> |
|||
<url>https://github.com/sarahgerweck</url> |
|||
<timezone>America/Los_Angeles</timezone> |
|||
</developer> |
|||
</developers> |
|||
} |
|||
} |
|||
|
|||
object BuildSettings extends Basics { |
|||
/* Overridable flags */ |
|||
lazy val optimize = boolFlag("OPTIMIZE") orElse boolFlag("OPTIMISE") getOrElse defaultOptimize |
|||
lazy val deprecation = boolFlag("NO_DEPRECATION") map (!_) getOrElse true |
|||
lazy val inlineWarn = boolFlag("INLINE_WARNINGS") getOrElse false |
|||
lazy val debug = boolFlag("DEBUGGER") getOrElse false |
|||
lazy val debugPort = envOrNone("DEBUGGER_PORT") map { _.toInt } getOrElse 5050 |
|||
lazy val debugSuspend = boolFlag("DEBUGGER_SUSPEND") getOrElse true |
|||
lazy val unusedWarn = boolFlag("UNUSED_WARNINGS") getOrElse false |
|||
lazy val importWarn = boolFlag("IMPORT_WARNINGS") getOrElse false |
|||
|
|||
lazy val buildScalaVersions = buildScalaVersion +: extraScalaVersions |
|||
val buildScalacOptions = Seq ( |
|||
"-unchecked", |
|||
"-feature", |
|||
"-target:jvm-" + minimumJavaVersion |
|||
) ++ ( |
|||
if (deprecation) Seq("-deprecation") else Seq.empty |
|||
) ++ ( |
|||
if (optimize) Seq("-optimize") else Seq.empty |
|||
) ++ ( |
|||
if (inlineWarn) Seq("-Yinline-warnings") else Seq.empty |
|||
) ++ ( |
|||
if (unusedWarn) Seq("-Ywarn-unused") else Seq.empty |
|||
) ++ ( |
|||
if (importWarn) Seq("-Ywarn-unused-import") else Seq.empty |
|||
) |
|||
|
|||
/* Java build setup */ |
|||
val buildJavacOptions = Seq( |
|||
"-target", minimumJavaVersion, |
|||
"-source", minimumJavaVersion |
|||
) ++ ( |
|||
if (deprecation) Seq("-Xlint:deprecation") else Seq.empty |
|||
) |
|||
|
|||
/** A wrapper so we can call `commonSettings()` on a project. */ |
|||
implicit class ProjectSettingsHelper(p: Project) { |
|||
def commonSettings() = siteSettings(p).settings(buildSettings: _*) |
|||
|
|||
private[this] def siteSettings(p: Project) = p.enablePlugins(SiteScaladocPlugin) |
|||
|
|||
private[this] val buildSettings = buildMetadata ++ |
|||
projectMainClass.toSeq.map(mainClass := Some(_)) ++ |
|||
Seq ( |
|||
organization := buildOrganization, |
|||
organizationName := buildOrganizationName, |
|||
organizationHomepage := buildOrganizationUrl map { url _ }, |
|||
|
|||
scalaVersion := buildScalaVersion, |
|||
crossScalaVersions := buildScalaVersions, |
|||
|
|||
scalacOptions ++= buildScalacOptions, |
|||
javacOptions ++= buildJavacOptions, |
|||
autoAPIMappings := true, |
|||
|
|||
updateOptions := updateOptions.value.withCachedResolution(cachedResolution), |
|||
parallelExecution := parallelBuild, |
|||
|
|||
evictionWarningOptions in update := |
|||
EvictionWarningOptions.default.withWarnTransitiveEvictions(false).withWarnDirectEvictions(false).withWarnScalaVersionEviction(false) |
|||
) |
|||
} |
|||
} |
|||
|
|||
object Helpers { |
|||
def getProp(name: String): Option[String] = sys.props.get(name) orElse sys.env.get(name) |
|||
def parseBool(str: String): Boolean = Set("yes", "y", "true", "t", "1") contains str.trim.toLowerCase |
|||
def boolFlag(name: String): Option[Boolean] = getProp(name) map { parseBool _ } |
|||
def boolFlag(name: String, default: Boolean): Boolean = boolFlag(name) getOrElse default |
|||
def opts(names: String*): Option[String] = names.view.map(getProp _).foldLeft(None: Option[String]) { _ orElse _ } |
|||
|
|||
import scala.xml._ |
|||
def excludePomDeps(exclude: (String, String) => Boolean): Node => Node = { node: Node => |
|||
val rewriteRule = new transform.RewriteRule { |
|||
override def transform(n: Node): NodeSeq = { |
|||
if ((n.label == "dependency") && exclude((n \ "groupId").text, (n \ "artifactId").text)) |
|||
NodeSeq.Empty |
|||
else |
|||
n |
|||
} |
|||
} |
|||
val transformer = new transform.RuleTransformer(rewriteRule) |
|||
transformer.transform(node)(0) |
|||
} |
|||
} |
|||
|
|||
object Resolvers { |
|||
val sonatypeSnaps = Resolver.sonatypeRepo("snapshots") |
|||
val sonatypeRelease = Resolver.sonatypeRepo("releases") |
|||
val sonatypeStaging = "Sonatype Staging" at "https://oss.sonatype.org/service/local/staging/deploy/maven2" |
|||
} |
|||
|
|||
object Publish { |
|||
import BuildSettings._ |
|||
import Resolvers._ |
|||
import Helpers._ |
|||
|
|||
val sonaCreds = ( |
|||
for { |
|||
user <- getProp("SONATYPE_USER") |
|||
pass <- getProp("SONATYPE_PASS") |
|||
} yield { |
|||
credentials += |
|||
Credentials("Sonatype Nexus Repository Manager", |
|||
"oss.sonatype.org", |
|||
user, pass) |
|||
} |
|||
).toSeq |
|||
|
|||
val settings = sonaCreds ++ Seq ( |
|||
publishMavenStyle := true, |
|||
pomIncludeRepository := { _ => false }, |
|||
publishArtifact in Test := false, |
|||
|
|||
publishTo := { |
|||
if (version.value.trim endsWith "SNAPSHOT") |
|||
Some(sonatypeSnaps) |
|||
else |
|||
Some(sonatypeStaging) |
|||
}, |
|||
|
|||
pomExtra := developerInfo |
|||
) |
|||
|
|||
/** Use this if you don't want to publish a certain module. |
|||
* (SBT's release plugin doesn't handle this well.) |
|||
*/ |
|||
val falseSettings = settings ++ Seq ( |
|||
publishArtifact in Compile := false, |
|||
publishArtifact in Test := false, |
|||
publishTo := Some(Resolver.file("phony-repo", file("target/repo"))) |
|||
) |
|||
} |
|||
|
|||
object Release { |
|||
val settings = Seq ( |
|||
releaseCrossBuild := true, |
|||
releasePublishArtifactsAction := PgpKeys.publishSigned.value |
|||
) |
|||
} |
|||
|
|||
object Eclipse { |
|||
import com.typesafe.sbteclipse.plugin.EclipsePlugin._ |
|||
|
|||
val settings = Seq ( |
|||
EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource, |
|||
EclipseKeys.projectFlavor := EclipseProjectFlavor.Scala, |
|||
EclipseKeys.executionEnvironment := Some(EclipseExecutionEnvironment.JavaSE18), |
|||
EclipseKeys.withSource := true, |
|||
EclipseKeys.eclipseOutput := Some("target/scala-2.11/classes") |
|||
) |
|||
} |
|||
|
|||
object Dependencies { |
|||
/* ********************************************************************** */ |
|||
/* Akka */ |
|||
/* ********************************************************************** */ |
|||
final val akkaVersion = "2.4.8" |
|||
|
|||
val akkaActor = "com.typesafe.akka" %% "akka-actor" % akkaVersion |
|||
val akkaAgent = "com.typesafe.akka" %% "akka-agent" % akkaVersion |
|||
val akkaStream = "com.typesafe.akka" %% "akka-stream" % akkaVersion |
|||
|
|||
/* ********************************************************************** */ |
|||
/* Utility Dependencies */ |
|||
/* ********************************************************************** */ |
|||
final val slf4jVersion = "1.7.21" |
|||
final val log4sVersion = "1.3.0" |
|||
final val logbackVersion = "1.1.7" |
|||
final val commonsVfsVersion = "2.0" |
|||
final val commonsIoVersion = "2.4" |
|||
final val spireVersion = "0.11.0" |
|||
final val groovyVersion = "2.4.4" |
|||
final val scalaJava8Version = "0.7.0" |
|||
final val scalaParserVersion = "1.0.4" |
|||
final val scalaXmlVersion = "1.0.5" |
|||
final val gerweckUtilVersion = "2.2.3" |
|||
final val scalazVersion = "7.2.4" |
|||
final val shapelessVersion = "2.3.1" |
|||
final val scallopVersion = "1.0.1" |
|||
|
|||
val log4s = "org.log4s" %% "log4s" % log4sVersion |
|||
val slf4j = "org.slf4j" % "slf4j-api" % slf4jVersion |
|||
val jclBridge = "org.slf4j" % "jcl-over-slf4j" % slf4jVersion |
|||
val log4jBridge = "org.slf4j" % "log4j-over-slf4j" % slf4jVersion |
|||
val logback = "ch.qos.logback" % "logback-classic" % logbackVersion |
|||
val spire = "org.spire-math" %% "spire" % spireVersion |
|||
val commonsIo = "commons-io" % "commons-io" % commonsIoVersion |
|||
val groovy = "org.codehaus.groovy" % "groovy-all" % groovyVersion |
|||
val gerweckUtil = "org.gerweck.scala" %% "gerweck-utils" % gerweckUtilVersion |
|||
val gerweckUtilAkka = "org.gerweck.scala" %% "gerweck-utils-akka" % gerweckUtilVersion |
|||
val scalaJava8 = "org.scala-lang.modules" %% "scala-java8-compat" % scalaJava8Version |
|||
val scalaz = "org.scalaz" %% "scalaz-core" % scalazVersion |
|||
val shapeless = "com.chuusai" %% "shapeless" % shapelessVersion |
|||
val scallop = "org.rogach" %% "scallop" % scallopVersion |
|||
|
|||
val commonsVfs = { |
|||
val base = "org.apache.commons" % "commons-vfs2" % commonsVfsVersion |
|||
base.exclude("commons-logging", "commons-logging") |
|||
.exclude("org.apache.maven.scm", "maven-scm-provider-svnexe") |
|||
.exclude("org.apache.maven.scm", "maven-scm-api") |
|||
base |
|||
} |
|||
|
|||
/* Use like this: libraryDependencies <++= (scalaBinaryVersion) (scalaParser) */ |
|||
def scalaParser(optional: Boolean): String => Seq[ModuleID] = { scalaBinaryVersion: String => |
|||
optionalize(optional) { |
|||
scalaBinaryVersion match { |
|||
case "2.11" => Seq("org.scala-lang.modules" %% "scala-parser-combinators" % scalaParserVersion % "optional") |
|||
case _ => Seq.empty |
|||
} |
|||
} |
|||
} |
|||
|
|||
def scalaXml(optional: Boolean)(scalaBinaryVersion: String): String => Seq[ModuleID] = { scalaBinaryVersion: String => |
|||
optionalize(optional) { |
|||
scalaBinaryVersion match { |
|||
case "2.11" => Seq("org.scala-lang.modules" %% "scala-xml" % scalaXmlVersion % "optional") |
|||
case _ => Seq.empty |
|||
} |
|||
} |
|||
} |
|||
|
|||
/* ********************************************************************** */ |
|||
/* Testing Dependencies */ |
|||
/* ********************************************************************** */ |
|||
final val scalaCheckVersion = "1.12.2" |
|||
final val scalaTestVersion = "2.2.4" |
|||
|
|||
val scalaCheck = "org.scalacheck" %% "scalacheck" % scalaCheckVersion |
|||
val scalaTest = "org.scalatest" %% "scalatest" % scalaTestVersion |
|||
|
|||
/* ********************************************************************** */ |
|||
/* ScalaFX */ |
|||
/* ********************************************************************** */ |
|||
final val scalaFxVersion = "8.0.92-R10" |
|||
|
|||
val scalaFx = "org.scalafx" %% "scalafx" % scalaFxVersion |
|||
|
|||
/* ********************************************************************** */ |
|||
/* Helpers */ |
|||
/* ********************************************************************** */ |
|||
private[this] def optionalize(optional: Boolean)(f: => Seq[ModuleID]): Seq[ModuleID] = { |
|||
if (optional) { |
|||
f map { _ % "optional" } |
|||
} else { |
|||
f |
|||
} |
|||
} |
|||
|
|||
private[this] def noCL(m: ModuleID) = ( |
|||
m exclude("commons-logging", "commons-logging") |
|||
exclude("commons-logging", "commons-logging-api") |
|||
) |
|||
} |
|||
|
|||
object UtilsBuild extends Build { |
|||
build => |
|||
|
|||
import BuildSettings._ |
|||
import Resolvers._ |
|||
import Dependencies._ |
|||
import Helpers._ |
|||
|
|||
lazy val root = (project in file (".")) |
|||
.commonSettings() |
|||
.settings(Eclipse.settings: _*) |
|||
.settings(Publish.settings: _*) |
|||
.settings(Release.settings: _*) |
|||
.settings(resolvers += sonatypeRelease) |
|||
.settings( |
|||
name := "ScalaFX Utils", |
|||
|
|||
libraryDependencies ++= Seq ( |
|||
log4s, |
|||
slf4j, |
|||
jclBridge % "runtime,optional", |
|||
log4jBridge % "runtime,optional", |
|||
logback % "runtime,optional", |
|||
gerweckUtil, |
|||
scalaJava8, |
|||
scalaFx, |
|||
scalaz, |
|||
shapeless |
|||
), |
|||
|
|||
/* Akka dependencies */ |
|||
libraryDependencies ++= Seq ( |
|||
akkaActor % "optional", |
|||
akkaStream % "optional", |
|||
akkaAgent % "optional", |
|||
gerweckUtilAkka % "optional" |
|||
), |
|||
|
|||
unmanagedJars in Compile += Attributed.blank(file(System.getenv("JAVA_HOME") + "/jre/lib/ext/jfxrt.jar")) |
|||
) |
|||
} |
@ -0,0 +1,106 @@ |
|||
import sbt._ |
|||
|
|||
object Dependencies { |
|||
/* ********************************************************************** */ |
|||
/* Akka */ |
|||
/* ********************************************************************** */ |
|||
final val akkaVersion = "2.4.8" |
|||
|
|||
val akkaActor = "com.typesafe.akka" %% "akka-actor" % akkaVersion |
|||
val akkaAgent = "com.typesafe.akka" %% "akka-agent" % akkaVersion |
|||
val akkaStream = "com.typesafe.akka" %% "akka-stream" % akkaVersion |
|||
|
|||
/* ********************************************************************** */ |
|||
/* Utility Dependencies */ |
|||
/* ********************************************************************** */ |
|||
final val slf4jVersion = "1.7.21" |
|||
final val log4sVersion = "1.3.0" |
|||
final val logbackVersion = "1.1.7" |
|||
final val commonsVfsVersion = "2.0" |
|||
final val commonsIoVersion = "2.4" |
|||
final val spireVersion = "0.11.0" |
|||
final val groovyVersion = "2.4.4" |
|||
final val scalaJava8Version = "0.7.0" |
|||
final val scalaParserVersion = "1.0.4" |
|||
final val scalaXmlVersion = "1.0.5" |
|||
final val gerweckUtilVersion = "2.2.3" |
|||
final val scalazVersion = "7.2.4" |
|||
final val shapelessVersion = "2.3.1" |
|||
final val scallopVersion = "1.0.1" |
|||
|
|||
val log4s = "org.log4s" %% "log4s" % log4sVersion |
|||
val slf4j = "org.slf4j" % "slf4j-api" % slf4jVersion |
|||
val jclBridge = "org.slf4j" % "jcl-over-slf4j" % slf4jVersion |
|||
val log4jBridge = "org.slf4j" % "log4j-over-slf4j" % slf4jVersion |
|||
val logback = "ch.qos.logback" % "logback-classic" % logbackVersion |
|||
val spire = "org.spire-math" %% "spire" % spireVersion |
|||
val commonsIo = "commons-io" % "commons-io" % commonsIoVersion |
|||
val groovy = "org.codehaus.groovy" % "groovy-all" % groovyVersion |
|||
val gerweckUtil = "org.gerweck.scala" %% "gerweck-utils" % gerweckUtilVersion |
|||
val gerweckUtilAkka = "org.gerweck.scala" %% "gerweck-utils-akka" % gerweckUtilVersion |
|||
val scalaJava8 = "org.scala-lang.modules" %% "scala-java8-compat" % scalaJava8Version |
|||
val scalaz = "org.scalaz" %% "scalaz-core" % scalazVersion |
|||
val shapeless = "com.chuusai" %% "shapeless" % shapelessVersion |
|||
val scallop = "org.rogach" %% "scallop" % scallopVersion |
|||
|
|||
val commonsVfs = { |
|||
val base = "org.apache.commons" % "commons-vfs2" % commonsVfsVersion |
|||
base.exclude("commons-logging", "commons-logging") |
|||
.exclude("org.apache.maven.scm", "maven-scm-provider-svnexe") |
|||
.exclude("org.apache.maven.scm", "maven-scm-api") |
|||
base |
|||
} |
|||
|
|||
/* Use like this: libraryDependencies <++= (scalaBinaryVersion) (scalaParser) */ |
|||
def scalaParser(optional: Boolean): String => Seq[ModuleID] = { scalaBinaryVersion: String => |
|||
optionalize(optional) { |
|||
scalaBinaryVersion match { |
|||
case "2.11" => Seq("org.scala-lang.modules" %% "scala-parser-combinators" % scalaParserVersion % "optional") |
|||
case _ => Seq.empty |
|||
} |
|||
} |
|||
} |
|||
|
|||
def scalaXml(optional: Boolean)(scalaBinaryVersion: String): String => Seq[ModuleID] = { scalaBinaryVersion: String => |
|||
optionalize(optional) { |
|||
scalaBinaryVersion match { |
|||
case "2.11" => Seq("org.scala-lang.modules" %% "scala-xml" % scalaXmlVersion % "optional") |
|||
case _ => Seq.empty |
|||
} |
|||
} |
|||
} |
|||
|
|||
/* ********************************************************************** */ |
|||
/* Testing Dependencies */ |
|||
/* ********************************************************************** */ |
|||
final val scalaCheckVersion = "1.12.2" |
|||
final val scalaTestVersion = "2.2.4" |
|||
|
|||
val scalaCheck = "org.scalacheck" %% "scalacheck" % scalaCheckVersion |
|||
val scalaTest = "org.scalatest" %% "scalatest" % scalaTestVersion |
|||
|
|||
/* ********************************************************************** */ |
|||
/* ScalaFX */ |
|||
/* ********************************************************************** */ |
|||
final val scalaFxVersion = "8.0.92-R10" |
|||
|
|||
val scalaFx = "org.scalafx" %% "scalafx" % scalaFxVersion |
|||
|
|||
/* ********************************************************************** */ |
|||
/* Helpers */ |
|||
/* ********************************************************************** */ |
|||
private[this] def optionalize(optional: Boolean)(f: => Seq[ModuleID]): Seq[ModuleID] = { |
|||
if (optional) { |
|||
f map { _ % "optional" } |
|||
} else { |
|||
f |
|||
} |
|||
} |
|||
|
|||
private[this] def noCL(m: ModuleID) = ( |
|||
m exclude("commons-logging", "commons-logging") |
|||
exclude("commons-logging", "commons-logging-api") |
|||
) |
|||
} |
|||
|
|||
|
@ -0,0 +1,14 @@ |
|||
import sbt._ |
|||
|
|||
import com.typesafe.sbteclipse.plugin.EclipsePlugin._ |
|||
|
|||
object Eclipse { |
|||
|
|||
val settings = Seq ( |
|||
EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource, |
|||
EclipseKeys.projectFlavor := EclipseProjectFlavor.Scala, |
|||
EclipseKeys.executionEnvironment := Some(EclipseExecutionEnvironment.JavaSE18), |
|||
EclipseKeys.withSource := true, |
|||
EclipseKeys.eclipseOutput := Some("target/scala-2.11/classes") |
|||
) |
|||
} |
@ -0,0 +1,60 @@ |
|||
object Helpers { |
|||
def getProp(name: String): Option[String] = sys.props.get(name) orElse sys.env.get(name) |
|||
def parseBool(str: String): Boolean = Set("yes", "y", "true", "t", "1") contains str.trim.toLowerCase |
|||
def boolFlag(name: String): Option[Boolean] = getProp(name) map { parseBool _ } |
|||
def boolFlag(name: String, default: Boolean): Boolean = boolFlag(name) getOrElse default |
|||
def opts(names: String*): Option[String] = names.view.map(getProp _).foldLeft(None: Option[String]) { _ orElse _ } |
|||
|
|||
import scala.xml._ |
|||
def excludePomDeps(exclude: (String, String) => Boolean): Node => Node = { node: Node => |
|||
val rewriteRule = new transform.RewriteRule { |
|||
override def transform(n: Node): NodeSeq = { |
|||
if ((n.label == "dependency") && exclude((n \ "groupId").text, (n \ "artifactId").text)) |
|||
NodeSeq.Empty |
|||
else |
|||
n |
|||
} |
|||
} |
|||
val transformer = new transform.RuleTransformer(rewriteRule) |
|||
transformer.transform(node)(0) |
|||
} |
|||
|
|||
sealed trait SVer { |
|||
def requireJava8: Boolean |
|||
} |
|||
object SVer { |
|||
def apply(scalaVersion: String): SVer = { |
|||
scalaVersion match { |
|||
case "2.10" => SVer2_10 |
|||
case "2.11" => SVer2_11 |
|||
case "2.12.0-M1" => SVer2_12M1 |
|||
case "2.12.0-M2" => SVer2_12M2 |
|||
case "2.12.0-M3" => SVer2_12M3 |
|||
case "2.12.0-M4" => SVer2_12M4 |
|||
case "2.12" => SVer2_12 |
|||
} |
|||
} |
|||
} |
|||
case object SVer2_10 extends SVer { |
|||
def requireJava8 = false |
|||
} |
|||
case object SVer2_11 extends SVer { |
|||
def requireJava8 = false |
|||
} |
|||
case object SVer2_12M1 extends SVer { |
|||
def requireJava8 = true |
|||
} |
|||
case object SVer2_12M2 extends SVer { |
|||
def requireJava8 = true |
|||
} |
|||
case object SVer2_12M3 extends SVer { |
|||
def requireJava8 = true |
|||
} |
|||
case object SVer2_12M4 extends SVer { |
|||
def requireJava8 = true |
|||
} |
|||
case object SVer2_12 extends SVer { |
|||
def requireJava8 = true |
|||
} |
|||
} |
|||
|
@ -0,0 +1,45 @@ |
|||
import sbt._ |
|||
import Keys._ |
|||
|
|||
object Publish { |
|||
import Resolvers._ |
|||
import Helpers._ |
|||
|
|||
val sonaCreds = ( |
|||
for { |
|||
user <- getProp("SONATYPE_USER") |
|||
pass <- getProp("SONATYPE_PASS") |
|||
} yield { |
|||
credentials += |
|||
Credentials("Sonatype Nexus Repository Manager", |
|||
"oss.sonatype.org", |
|||
user, pass) |
|||
} |
|||
).toSeq |
|||
|
|||
val settings = sonaCreds ++ Seq ( |
|||
publishMavenStyle := true, |
|||
pomIncludeRepository := { _ => false }, |
|||
publishArtifact in Test := false, |
|||
|
|||
publishTo := { |
|||
if (version.value.trim endsWith "SNAPSHOT") |
|||
Some(sonatypeSnaps) |
|||
else |
|||
Some(sonatypeStaging) |
|||
}, |
|||
|
|||
pomExtra := BasicSettings.developerInfo |
|||
) |
|||
|
|||
/** Use this if you don't want to publish a certain module. |
|||
* (SBT's release plugin doesn't handle this well.) |
|||
*/ |
|||
val falseSettings = settings ++ Seq ( |
|||
publishArtifact in Compile := false, |
|||
publishArtifact in Test := false, |
|||
publishTo := Some(Resolver.file("phony-repo", file("target/repo"))) |
|||
) |
|||
} |
|||
|
|||
|
@ -0,0 +1,11 @@ |
|||
import sbt._ |
|||
|
|||
import sbtrelease.ReleasePlugin.autoImport._ |
|||
import com.typesafe.sbt.SbtPgp.autoImport._ |
|||
|
|||
object Release { |
|||
lazy val settings = Seq ( |
|||
releaseCrossBuild := true, |
|||
releasePublishArtifactsAction := PgpKeys.publishSigned.value |
|||
) |
|||
} |
@ -0,0 +1,8 @@ |
|||
import sbt._ |
|||
|
|||
object Resolvers { |
|||
val sonatypeSnaps = Resolver.sonatypeRepo("snapshots") |
|||
val sonatypeRelease = Resolver.sonatypeRepo("releases") |
|||
val sonatypeStaging = "Sonatype Staging" at "https://oss.sonatype.org/service/local/staging/deploy/maven2" |
|||
} |
|||
|
@ -1 +1 @@ |
|||
sbt.version=0.13.11 |
|||
sbt.version=0.13.12 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue