<NME> build.sbt
<BEF> import ReleaseTransformations._
import com.typesafe.tools.mima.plugin.MimaPlugin.mimaDefaultSettings
import scalariform.formatter.preferences._
import com.typesafe.sbt.SbtScalariform._

val avroVersion = "1.7.5"
val bijectionVersion = "0.9.5"
val chillVersion = "0.8.3"
val scalacheckVersion = "1.13.4"
val scalaTestVersion = "3.0.1"
val slf4jVersion = "1.6.6"
val stormVersion = "1.0.2"
val twitter4jVersion = "3.0.3"

val extraSettings = mimaDefaultSettings ++ scalariformSettings

def ciSettings: Seq[Def.Setting[_]] =
  if (sys.env.getOrElse("TRAVIS", "false").toBoolean) Seq(
    ivyLoggingLevel := UpdateLogging.Quiet,
    logLevel in Global := Level.Warn,
    logLevel in Compile := Level.Warn,
  "storm" % "storm" % "0.9.0-wip9",
  "storm" % "storm-kafka" % "0.9.0-wip6-scala292-multischeme",
  "storm" % "storm-kestrel" % "0.9.0-wip5-multischeme",
  "com.twitter" %% "bijection-core" % "0.1.0",
  "com.twitter" %% "chill" % "0.1.0"
)

  javacOptions ++= Seq("-source", "1.6", "-target", "1.6"),
  javacOptions in doc := Seq("-source", "1.6"),
  libraryDependencies ++= Seq(
    "org.slf4j" % "slf4j-api" % slf4jVersion,
    "org.apache.storm" % "storm-core" % stormVersion % "provided",
    "org.scalacheck" %% "scalacheck" % scalacheckVersion % "test",
    "org.scalatest" %% "scalatest" % scalaTestVersion % "test"
  ),
  scalacOptions ++= Seq("-unchecked", "-deprecation", "-Yresolve-term-conflict:package"),
  resolvers ++= Seq(
    Opts.resolver.sonatypeSnapshots,
    Opts.resolver.sonatypeReleases
  ),

  parallelExecution in Test := false,

  scalacOptions ++= Seq("-unchecked", "-deprecation", "-language:implicitConversions", "-language:higherKinds", "-language:existentials"),

  scalacOptions ++= (if (scalaVersion.value startsWith "2.10")
      Seq("-Xdivergence211")
    else
      Seq()),

  // Publishing options:
  releaseCrossBuild := true,
  releasePublishArtifactsAction := PgpKeys.publishSigned.value,
  releaseVersionBump := sbtrelease.Version.Bump.Minor, // need to tweak based on mima results
  publishMavenStyle := true,
  publishArtifact in Test := false,
  pomIncludeRepository := { x => false },

  releaseProcess := Seq[ReleaseStep](
    checkSnapshotDependencies,
    inquireVersions,
    runClean,
    runTest,
    setReleaseVersion,
    commitReleaseVersion,
    tagRelease,
    publishArtifacts,
    setNextVersion,
    commitNextVersion,
    ReleaseStep(action = Command.process("sonatypeReleaseAll", _)),
    pushChanges),

  publishTo := Some(
      if (version.value.trim.toUpperCase.endsWith("SNAPSHOT"))
        Opts.resolver.sonatypeSnapshots
      else
        Opts.resolver.sonatypeStaging
    ),

  pomExtra := (
    <url>https://github.com/twitter/tormenta</url>
    <licenses>
      <license>
        <name>Apache 2</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        <distribution>repo</distribution>
        <comments>A business-friendly OSS license</comments>
      </license>
    </licenses>
    <scm>
      <url>git@github.com:twitter/tormenta.git</url>
      <connection>scm:git:git@github.com:twitter/tormenta.git</connection>
    </scm>
    <developers>
      <developer>
        <id>oscar</id>
        <name>Oscar Boykin</name>
        <url>http://twitter.com/posco</url>
      </developer>
      <developer>
        <id>sritchie</id>
        <name>Sam Ritchie</name>
        <url>http://twitter.com/sritchie</url>
      </developer>
    </developers>)
)

lazy val formattingPreferences = {
 import scalariform.formatter.preferences._
 FormattingPreferences().
   setPreference(AlignParameters, false).
   setPreference(PreserveSpaceBeforeArguments, true)
}

/**
  * This returns the youngest jar we released that is compatible
  * with the current.
  */
val unreleasedModules = Set[String]()

def youngestForwardCompatible(subProj: String) =
  Some(subProj)
    .filterNot(unreleasedModules.contains(_))
    .map { s => "com.twitter" % ("tormenta-" + s + "_2.10") % "0.12.0" }

/**
  * Empty this each time we publish a new version (and bump the minor number)
  */
val ignoredABIProblems = {
  import com.typesafe.tools.mima.core._
  import com.typesafe.tools.mima.core.ProblemFilters._
  Seq(
  )
}

lazy val noPublishSettings = Seq(
    publish := (),
    publishLocal := (),
    test := (),
    publishArtifact := false
  )

lazy val tormenta = Project(
  id = "tormenta",
  base = file("."),
  settings = sharedSettings)
  .settings(noPublishSettings)
  .aggregate(
  tormentaCore,
  tormentaKafka,
  tormentaTwitter,
  tormentaAvro
)

def module(name: String) = {
  val id = "tormenta-%s".format(name)
  Project(id = id, base = file(id), settings = sharedSettings ++ Seq(
    Keys.name := id,
    mimaPreviousArtifacts := youngestForwardCompatible(name).toSet,
    mimaBinaryIssueFilters ++= ignoredABIProblems
  ))
}

lazy val tormentaCore = module("core").settings(
  libraryDependencies += "com.twitter" %% "chill" % chillVersion
  exclude("com.esotericsoftware.kryo", "kryo")
)

lazy val tormentaTwitter = module("twitter").settings(
  libraryDependencies += "org.twitter4j" % "twitter4j-stream" % twitter4jVersion
).dependsOn(tormentaCore % "test->test;compile->compile")

lazy val tormentaKafka = module("kafka").settings(
  libraryDependencies += "org.apache.storm" % "storm-kafka" % stormVersion
).dependsOn(tormentaCore % "test->test;compile->compile")

lazy val tormentaAvro = module("avro").settings(
  libraryDependencies ++= Seq(
    "org.apache.avro" % "avro" % avroVersion,
    "com.twitter" %% "bijection-core" % bijectionVersion,
    "com.twitter" %% "bijection-avro" % bijectionVersion)
).dependsOn(tormentaCore % "test->test;compile->compile")

<MSG> Updates to bijection 0.3.0

<DFF> @@ -22,7 +22,7 @@ libraryDependencies ++= Seq(
   "storm" % "storm" % "0.9.0-wip9",
   "storm" % "storm-kafka" % "0.9.0-wip6-scala292-multischeme",
   "storm" % "storm-kestrel" % "0.9.0-wip5-multischeme",
-  "com.twitter" %% "bijection-core" % "0.1.0",
+  "com.twitter" %% "bijection-core" % "0.3.0",
   "com.twitter" %% "chill" % "0.1.0"
 )
 

{'commit': 'diff --git a/build.sbt b/build.sbt\nindex 124f8f6..4078026 100644\n--- a/build.sbt\n+++ b/build.sbt\n@@ -22,7 +22,7 @@ libraryDependencies ++= Seq(\n   "storm" % "storm" % "0.9.0-wip9",\n   "storm" % "storm-kafka" % "0.9.0-wip6-scala292-multischeme",\n   "storm" % "storm-kestrel" % "0.9.0-wip5-multischeme",\n-  "com.twitter" %% "bijection-core" % "0.1.0",\n+  "com.twitter" %% "bijection-core" % "0.3.0",\n   "com.twitter" %% "chill" % "0.1.0"\n )\n \ndiff --git a/src/main/scala/com/twitter/tormenta/scheme/BijectionScheme.scala b/src/main/scala/com/twitter/tormenta/scheme/InjectionScheme.scala\nsimilarity index 69%\nrename from src/main/scala/com/twitter/tormenta/scheme/BijectionScheme.scala\nrename to src/main/scala/com/twitter/tormenta/scheme/InjectionScheme.scala\nindex 5951462..a7b75d2 100644\n--- a/src/main/scala/com/twitter/tormenta/scheme/BijectionScheme.scala\n+++ b/src/main/scala/com/twitter/tormenta/scheme/InjectionScheme.scala\n@@ -19,18 +19,18 @@ package com.twitter.tormenta.scheme\n import backtype.storm.tuple.{ Fields, Values }\n \n import com.twitter.chill.MeatLocker\n-import com.twitter.bijection.Bijection\n+import com.twitter.bijection.Injection\n \n /**\n  *  @author Oscar Boykin\n  *  @author Sam Ritchie\n  */\n \n-object BijectionScheme {\n-  def apply[T](implicit bijection: Bijection[T, Array[Byte]]) = new BijectionScheme(bijection)\n+object InjectionScheme {\n+  def apply[T](implicit bijection: Injection[T, Array[Byte]]) = new InjectionScheme(bijection)\n }\n \n-class BijectionScheme[T](@transient bijection: Bijection[T, Array[Byte]]) extends ScalaScheme[T] {\n-  val bijectionBox = MeatLocker(bijection)\n-  override def decode(bytes: Array[Byte]) = Some(bijectionBox.get.invert(bytes))\n+class InjectionScheme[T](@transient injection: Injection[T, Array[Byte]]) extends ScalaScheme[T] {\n+  val injectionBox = MeatLocker(injection)\n+  override def decode(bytes: Array[Byte]) = injectionBox.get.invert(bytes)\n }\n', 'commit_subject': 'Updates to bijection 0.3.0', 'repo_name': 'twitter/tormenta', 'committer': {'name': 'Oscar Boykin', 'email': '2dff4fc90e2973f54d62e257480de234bc59e2c4@twitter.com', 'time_sec': '1362546374', 'tz_offset': '-480', 'date': {'seconds': '1362546374'}}, 'commit_tree': '721b9ed481cbf24b945d6d5aed0ea30088aef5ce', 'commit_message': 'Updates to bijection 0.3.0\n', 'language_name': 'Java', 'license': 'apache-2.0', 'hunks': '@@ -22,7 +22,7 @@ libraryDependencies ++= Seq(\n   "storm" % "storm" % "0.9.0-wip9",\n   "storm" % "storm-kafka" % "0.9.0-wip6-scala292-multischeme",\n   "storm" % "storm-kestrel" % "0.9.0-wip5-multischeme",\n-  "com.twitter" %% "bijection-core" % "0.1.0",\n+  "com.twitter" %% "bijection-core" % "0.3.0",\n   "com.twitter" %% "chill" % "0.1.0"\n )\n \n', 'addition_count': 1, 'deletion_count': 1, 'src_file': 'a/build.sbt', 'tgt_file': 'b/build.sbt', 'file_extension': '.sbt', 'before_file': 'import ReleaseTransformations._\nimport com.typesafe.tools.mima.plugin.MimaPlugin.mimaDefaultSettings\nimport scalariform.formatter.preferences._\nimport com.typesafe.sbt.SbtScalariform._\n\nval avroVersion = "1.7.5"\nval bijectionVersion = "0.9.5"\nval chillVersion = "0.8.3"\nval scalacheckVersion = "1.13.4"\nval scalaTestVersion = "3.0.1"\nval slf4jVersion = "1.6.6"\nval stormVersion = "1.0.2"\nval twitter4jVersion = "3.0.3"\n\nval extraSettings = mimaDefaultSettings ++ scalariformSettings\n\ndef ciSettings: Seq[Def.Setting[_]] =\n  if (sys.env.getOrElse("TRAVIS", "false").toBoolean) Seq(\n    ivyLoggingLevel := UpdateLogging.Quiet,\n    logLevel in Global := Level.Warn,\n    logLevel in Compile := Level.Warn,\n  "storm" % "storm" % "0.9.0-wip9",\n  "storm" % "storm-kafka" % "0.9.0-wip6-scala292-multischeme",\n  "storm" % "storm-kestrel" % "0.9.0-wip5-multischeme",\n  "com.twitter" %% "bijection-core" % "0.1.0",\n  "com.twitter" %% "chill" % "0.1.0"\n)\n\n  javacOptions ++= Seq("-source", "1.6", "-target", "1.6"),\n  javacOptions in doc := Seq("-source", "1.6"),\n  libraryDependencies ++= Seq(\n    "org.slf4j" % "slf4j-api" % slf4jVersion,\n    "org.apache.storm" % "storm-core" % stormVersion % "provided",\n    "org.scalacheck" %% "scalacheck" % scalacheckVersion % "test",\n    "org.scalatest" %% "scalatest" % scalaTestVersion % "test"\n  ),\n  scalacOptions ++= Seq("-unchecked", "-deprecation", "-Yresolve-term-conflict:package"),\n  resolvers ++= Seq(\n    Opts.resolver.sonatypeSnapshots,\n    Opts.resolver.sonatypeReleases\n  ),\n\n  parallelExecution in Test := false,\n\n  scalacOptions ++= Seq("-unchecked", "-deprecation", "-language:implicitConversions", "-language:higherKinds", "-language:existentials"),\n\n  scalacOptions ++= (if (scalaVersion.value startsWith "2.10")\n      Seq("-Xdivergence211")\n    else\n      Seq()),\n\n  // Publishing options:\n  releaseCrossBuild := true,\n  releasePublishArtifactsAction := PgpKeys.publishSigned.value,\n  releaseVersionBump := sbtrelease.Version.Bump.Minor, // need to tweak based on mima results\n  publishMavenStyle := true,\n  publishArtifact in Test := false,\n  pomIncludeRepository := { x => false },\n\n  releaseProcess := Seq[ReleaseStep](\n    checkSnapshotDependencies,\n    inquireVersions,\n    runClean,\n    runTest,\n    setReleaseVersion,\n    commitReleaseVersion,\n    tagRelease,\n    publishArtifacts,\n    setNextVersion,\n    commitNextVersion,\n    ReleaseStep(action = Command.process("sonatypeReleaseAll", _)),\n    pushChanges),\n\n  publishTo := Some(\n      if (version.value.trim.toUpperCase.endsWith("SNAPSHOT"))\n        Opts.resolver.sonatypeSnapshots\n      else\n        Opts.resolver.sonatypeStaging\n    ),\n\n  pomExtra := (\n    <url>https://github.com/twitter/tormenta</url>\n    <licenses>\n      <license>\n        <name>Apache 2</name>\n        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n        <distribution>repo</distribution>\n        <comments>A business-friendly OSS license</comments>\n      </license>\n    </licenses>\n    <scm>\n      <url>git@github.com:twitter/tormenta.git</url>\n      <connection>scm:git:git@github.com:twitter/tormenta.git</connection>\n    </scm>\n    <developers>\n      <developer>\n        <id>oscar</id>\n        <name>Oscar Boykin</name>\n        <url>http://twitter.com/posco</url>\n      </developer>\n      <developer>\n        <id>sritchie</id>\n        <name>Sam Ritchie</name>\n        <url>http://twitter.com/sritchie</url>\n      </developer>\n    </developers>)\n)\n\nlazy val formattingPreferences = {\n import scalariform.formatter.preferences._\n FormattingPreferences().\n   setPreference(AlignParameters, false).\n   setPreference(PreserveSpaceBeforeArguments, true)\n}\n\n/**\n  * This returns the youngest jar we released that is compatible\n  * with the current.\n  */\nval unreleasedModules = Set[String]()\n\ndef youngestForwardCompatible(subProj: String) =\n  Some(subProj)\n    .filterNot(unreleasedModules.contains(_))\n    .map { s => "com.twitter" % ("tormenta-" + s + "_2.10") % "0.12.0" }\n\n/**\n  * Empty this each time we publish a new version (and bump the minor number)\n  */\nval ignoredABIProblems = {\n  import com.typesafe.tools.mima.core._\n  import com.typesafe.tools.mima.core.ProblemFilters._\n  Seq(\n  )\n}\n\nlazy val noPublishSettings = Seq(\n    publish := (),\n    publishLocal := (),\n    test := (),\n    publishArtifact := false\n  )\n\nlazy val tormenta = Project(\n  id = "tormenta",\n  base = file("."),\n  settings = sharedSettings)\n  .settings(noPublishSettings)\n  .aggregate(\n  tormentaCore,\n  tormentaKafka,\n  tormentaTwitter,\n  tormentaAvro\n)\n\ndef module(name: String) = {\n  val id = "tormenta-%s".format(name)\n  Project(id = id, base = file(id), settings = sharedSettings ++ Seq(\n    Keys.name := id,\n    mimaPreviousArtifacts := youngestForwardCompatible(name).toSet,\n    mimaBinaryIssueFilters ++= ignoredABIProblems\n  ))\n}\n\nlazy val tormentaCore = module("core").settings(\n  libraryDependencies += "com.twitter" %% "chill" % chillVersion\n  exclude("com.esotericsoftware.kryo", "kryo")\n)\n\nlazy val tormentaTwitter = module("twitter").settings(\n  libraryDependencies += "org.twitter4j" % "twitter4j-stream" % twitter4jVersion\n).dependsOn(tormentaCore % "test->test;compile->compile")\n\nlazy val tormentaKafka = module("kafka").settings(\n  libraryDependencies += "org.apache.storm" % "storm-kafka" % stormVersion\n).dependsOn(tormentaCore % "test->test;compile->compile")\n\nlazy val tormentaAvro = module("avro").settings(\n  libraryDependencies ++= Seq(\n    "org.apache.avro" % "avro" % avroVersion,\n    "com.twitter" %% "bijection-core" % bijectionVersion,\n    "com.twitter" %% "bijection-avro" % bijectionVersion)\n).dependsOn(tormentaCore % "test->test;compile->compile")\n', 'message': 'Updates to bijection 0.3.0\n', 'author_name': 'Oscar Boykin', 'lang': 'sbt'}