diff --git a/README.md b/README.md index 8737ae2..5163d8a 100644 --- a/README.md +++ b/README.md @@ -8,12 +8,12 @@ Note: The plugin does not work on WindowsOS Add the following to your `project/plugins.sbt` file: ```scala -addSbtPlugin("com.github.hochgi" % "sbt-cassandra" % "1.0.4") +addSbtPlugin("com.tuplejump.com.github.hochgi" % "sbt-cassandra" % "1.1.0") ``` ## Usage ## ### Basic: ### -In `build.sbt`, enable the plugin for desired project and specify the version of cassandra against which tests are to be run, +In `build.sbt`, enable the plugin for desired project and specify the version of cassandra against which tests are to be run, ```scala lazy val root = (project in file(".")) @@ -49,6 +49,10 @@ the plugin downloads cassandra tar from [Apache Cassandra Archives](http://archi ```scala cassandraTgz := "resources/custom-cassandra.tgz" ``` +to prevent downloading cassandra tar file if the file already exists. Parameter is ignored if custom file is specified in `cassandraTgz` +```scala +forceCassandraDownload := false +``` to override cassandra configuration, e.g: ```scala configMappings += "auto_snapshot" -> true @@ -70,9 +74,8 @@ The `configMappings` setting should be used to change host, port and cqlPort. Th * host - `listen_address` * port - `rpc_port` * cqlPort - `native_transport_port` - + to pass java args to cassandra, ```scala cassandraJavaArgs := Seq("-Xmx1G") ``` - diff --git a/build.sbt b/build.sbt index 7b905bc..4677837 100644 --- a/build.sbt +++ b/build.sbt @@ -1,12 +1,12 @@ sbtPlugin := true -organization := "com.github.hochgi" +organization := "com.tuplejump.com.github.hochgi" name := "sbt-cassandra" description := "SBT plugin to launch and use Cassandra during integration tests" -version := "1.0.4" +version := "1.1.0" scalaVersion := "2.10.6" @@ -38,8 +38,8 @@ licenses := Seq("The MIT License (MIT)" -> url("http://opensource.org/licenses/M pomExtra := ( - https://github.com/hochgi/sbt-cassandra-plugin.git - scm:git@github.com:hochgi/sbt-cassandra-plugin.git + https://github.com/tuplejump/sbt-cassandra-plugin.git + scm:git@github.com:tuplejump/sbt-cassandra-plugin.git diff --git a/demo/project/plugins.sbt b/demo/project/plugins.sbt index c315eed..5ddb06a 100644 --- a/demo/project/plugins.sbt +++ b/demo/project/plugins.sbt @@ -1,3 +1,3 @@ logLevel := Level.Warn -addSbtPlugin("com.github.hochgi" % "sbt-cassandra" % "1.0.4") +addSbtPlugin("com.tuplejump.com.github.hochgi" % "sbt-cassandra" % "1.1.0") diff --git a/src/main/scala/com/github/hochgi/sbt/cassandra/CassandraITPlugin.scala b/src/main/scala/com/github/hochgi/sbt/cassandra/CassandraITPlugin.scala index 356a9f5..d8452ee 100644 --- a/src/main/scala/com/github/hochgi/sbt/cassandra/CassandraITPlugin.scala +++ b/src/main/scala/com/github/hochgi/sbt/cassandra/CassandraITPlugin.scala @@ -36,6 +36,8 @@ object CassandraITPlugin extends AutoPlugin { lazy val cassandraJavaArgs = SettingKey[Seq[String]]("cassandra-java-args", "Optional. Java arguments to be passed to Cassandra") + lazy val forceCassandraDownload = SettingKey[Boolean]("force-cassandra-download", + "Optional. Defaults to true") } private val PIDFileName = "cass.pid" @@ -43,13 +45,16 @@ object CassandraITPlugin extends AutoPlugin { def deployCassandra(tarFile: String, casVersion: String, targetDir: File, - logger: Logger): File = { + logger: Logger, + forceCassandraDownload: Boolean): File = { val cassandraTarGz: File = if (tarFile.nonEmpty) { file(tarFile) } else if (casVersion.nonEmpty) { val file: File = new File(targetDir, s"apache-cassandra-$casVersion-bin.tar.gz") - val source = s"http://archive.apache.org/dist/cassandra/$casVersion/apache-cassandra-$casVersion-bin.tar.gz" - IO.download(url(source), file) + if (!file.exists || forceCassandraDownload) { + val source = s"http://archive.apache.org/dist/cassandra/$casVersion/apache-cassandra-$casVersion-bin.tar.gz" + IO.download(url(source), file) + } file } else { sys.error("Specify Cassandra version or path to Cassandra tar.gz file") @@ -199,7 +204,8 @@ object CassandraITPlugin extends AutoPlugin { cleanCassandraAfterStop := true, cassandraStartDeadline := 20, configMappings := Nil, - cassandraJavaArgs := Nil + cassandraJavaArgs := Nil, + forceCassandraDownload := true ) override def projectSettings: Seq[_root_.sbt.Def.Setting[_]] = super.projectSettings ++ @@ -211,7 +217,7 @@ object CassandraITPlugin extends AutoPlugin { val logger = streams.value.log val cassHome = deployCassandra(cassandraTgz.value.trim, - cassandraVersion.value.trim, targetDir, logger) + cassandraVersion.value.trim, targetDir, logger, forceCassandraDownload.value) val confDir: String = { if (cassandraConfigDir.value.trim.isEmpty) {