diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6f779de --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +# sbt +lib_managed +project/project +target + +# Worksheets (Eclipse or IntelliJ) +*.sc + +# Eclipse +.cache* +.classpath +.project +.scala_dependencies +.settings +.target +.worksheet + +# IntelliJ +.idea + +# ENSIME +.ensime +.ensime_lucene +.ensime_cache + +# Mac +.DS_Store + +# Akka +ddata* +journal +snapshots + +# Log files +*.log + +#Credentials +.credentials +.artifactory +secrets.tar diff --git a/.java-version b/.java-version new file mode 100644 index 0000000..6259340 --- /dev/null +++ b/.java-version @@ -0,0 +1 @@ +1.8 diff --git a/.jvmopts b/.jvmopts new file mode 100644 index 0000000..5301aa7 --- /dev/null +++ b/.jvmopts @@ -0,0 +1,4 @@ +-XX:MaxMetaspaceSize=256m +-Xss2m +-Xms1g +-Xmx1g diff --git a/.scalafmt.conf b/.scalafmt.conf new file mode 100644 index 0000000..c2b2353 --- /dev/null +++ b/.scalafmt.conf @@ -0,0 +1,18 @@ +style = defaultWithAlign +maxColumn = 100 + +project.excludeFilters = [".*\\.sbt"] +unindentTopLevelOperators = true +danglingParentheses = true +indentOperator = spray +align.openParenCallSite = true +align.openParenDefnSite = true +optIn.breakChainOnFirstMethodDot = true +spaces.inImportCurlyBraces = false + +project.git = true + +// Once upgraded to 0.7 +//newlines.beforeImplicitKWInVerticalMultiline=false +//newlines.afterImplicitKWInVerticalMultiline=false + diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..43936dd --- /dev/null +++ b/.travis.yml @@ -0,0 +1,36 @@ +sudo: false +language: scala +scala: +- 2.11.11 +- 2.12.2 +jdk: +- oraclejdk8 +cache: + directories: + - "$HOME/.m2/repository" + - "$HOME/.sbt" + - "$HOME/.ivy2" +script: +- sbt ++$TRAVIS_SCALA_VERSION clean coverage scalafmtTest test +- if [ $TRAVIS_TEST_RESULT -eq 0 -a "$TRAVIS_PULL_REQUEST" = "false" ] && [[ "$TRAVIS_TAG" =~ ^v[0-9]+\.[0-9]+(\.[0-9]+)?(-[A-Za-z0-9-]+)? ]]; then + echo "** Publishing Release $TRAVIS_TAG **" + && tar xf secrets.tar && mkdir ~/.bintray + && cp publishing/.credentials ~/.bintray/ + && sbt ++$TRAVIS_SCALA_VERSION publish bintrayRelease bintraySyncMavenCentral; fi +- if [ $TRAVIS_TEST_RESULT -eq 0 -a "$TRAVIS_PULL_REQUEST" = "false" -a "$TRAVIS_BRANCH" = "master" ]; then + echo "** Publishing Snapshot from master **" + && tar xf secrets.tar && mkdir ~/.bintray + && cp publishing/.credentials ~/.bintray/ && cp publishing/.artifactory ~/.bintray/ + && sbt ++$TRAVIS_SCALA_VERSION publish; fi +after_success: +- sbt ++$TRAVIS_SCALA_VERSION coverageReport coveralls +before_cache: +- find $HOME/.ivy2/cache -name "ivydata-*.properties" -print -delete +- find $HOME/.sbt -name "*.lock" -print -delete +before_install: +- openssl aes-256-cbc -K $encrypted_09ef3e55c311_key -iv $encrypted_09ef3e55c311_iv + -in secrets.tar.enc -out secrets.tar -d +env: + global: + - secure: KffThTeOg0ELt+iw5ZNtDW6x4/1iKIj1v91Yq6earF+YQquusROqt/MtdmyXRG9ho0c/xnB82BJHrBsvac6SwsPUZ/cRvQ0KML3bWyCMCL2B/SurhjxbahAWdgQGj67KO1n72q24cqyRMb9wCCOwy4p/7qomBYM+m8YRLc6YOxxj6DKriIiqOq8jFmt/nktpCUhXVURYvFxHtHQvLutaWWICwGZX1ibyloCmC3wWPMNOFc/1FBqLXNQTUTKuYOOC46TJ5janON1E2obDKZyGf/Q/ZEuNymcJYKi6/7XWzN24Ep194PLGj29J44Zpp9P36hnIiET8dQ1s2Dafo+alubqFEUaP4fV8XyYu5ZtTt5A0wxKEe/u7N4SdxzUZF/zBszCLRL2uJhQlfC7af6keCpIVoKLDi+9b6zpSVLDZmE1UmFuu8LLoMY2s2xRt6vHXTSiyPrIJaIFyaryxjhH+KmKNE0GW1jzVkPc6NpxjnVtF2E7LYogHWHzJLoMpBtTQoAeJlKvtbEmWrZXO9TGPFzu0fb+x/H0Ocre2QDSnjKobtMZs6S8zvD+STfmrZ8ZtZ0H0HNbGJW/rPkSZFLunOPXWxSZzNoWNrzg9LCoPtdkVsa7BYiAY9fM9xNX8SOx/kRZtw52el71jK8mDCV/lQjzjBwyo3AZl/jOx3cbWrAM= + - secure: KClWy/cCpMSKyJmVNOt8Dmwfatgx/9KsffLcL/BlXUYsBkB3jwdr9SzFok1ArGd02FzrFQU739/wnSKpmsW1fEO64tlh+qJwW76+gFlqWmOjc6r7ENH2u6LGLfRYeD4r76CiEV9mnU5GVMUPJIfbxlP0zB7ukzSGZwbkJ4WBqlxmurRr70jWz2F3ytJM0r31rpqc+ypHi58vj0NPBO7bR6XI4kquW9cDpCCgj4CVVshpsxUB1N4RPzcGsxUPucigH71lJ0sZjnEjSB+E95/Ovbf7PuPYnY0N8S6hLEgTyh7xAcxNpMsFgd1GInb92hrXLujUZU5N2BeX7jnYVa90q55AZd+IQqmJU+/4tBBrgWvppMIiTbbU5pnDoNqHNWmfB4wtbxwNW4y4tQH+/wSVPhgGYOWfsj3nLNnyfcjRAClQzEWCoAbx7Tkgj1OmvrOqwwmiPz3dFMInawQ6RkisqwgjT/sAhNGa2i26Tpj5Sd8XAjxU61MAzsr8gpVdA6TJcSdHkHC2zZVn+64Cc9WHJ9I6WbRD0fR3pFeTbQv+0SOUWV1owqtdGLl6z0gdI5rLZIYO7SMeRPjTYf/5NV/WxF2LcJu06LHYpzURaGQHp6T5NH2eEZof1Dt5tqa2eQ7KfZyui3rz3WB0AQlJSPK9yL78BvZzNlCNWbv5wLiW6hQ= diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..b7f881e --- /dev/null +++ b/NOTICE @@ -0,0 +1 @@ +Copyright 2017 markglh diff --git a/README.md b/README.md index 3afd1e3..e7482a0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,28 @@ -# reactive-kinesis -A Scala & Akka based implementation for working with Amazon Kinesis Streams +# reactive-kinesis [![Build Status](https://travis-ci.org/WW-Digital/reactive-kinesis.svg?branch=master)](https://travis-ci.org/WW-Digital/reactive-kinesis) [![Coverage Status](https://coveralls.io/repos/github/WW-Digital/reactive-kinesis/badge.svg?branch=master)](https://coveralls.io/github/WW-Digital/reactive-kinesis?branch=master) + +Welcome to reactive-kinesis! + +## Tag Requirements +Uses [sbt-dynver](https://github.com/dwijnand/sbt-dynver) for dynamic git based versioning. + +See: https://github.com/dwijnand/sbt-dynver#tag-requirements +In order to be recognized by sbt-dynver, tags must begin with the lowercase letter 'v' followed by a digit. + +If you're not seeing what you expect, then start with this: + +`git tag -a v0.0.1 -m "Initial version tag for sbt-dynver"` + + +## Contribution policy ## + +Contributions via GitHub pull requests are gladly accepted from their original author. Along with +any pull requests, please state that the contribution is your original work and that you license +the work to the project under the project's open source license. Whether or not you state this +explicitly, by submitting any copyrighted material via pull request, email, or other means you +agree to license the material under the project's open source license and warrant that you have the +legal authority to do so. + +## License ## + +This code is open source software licensed under the +[Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0) license. diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..829e07d --- /dev/null +++ b/build.sbt @@ -0,0 +1,93 @@ +// ***************************************************************************** +// Projects +// ***************************************************************************** + +lazy val `reactive-kinesis` = + project + .in(file(".")) + .enablePlugins(AutomateHeaderPlugin, GitVersioning) + .settings(settings) + .settings( + libraryDependencies ++= Seq( + library.scalaCheck % Test, + library.scalaTest % Test + ) + ) + +// ***************************************************************************** +// Library dependencies +// ***************************************************************************** + +lazy val library = + new { + + object Version { + val scalaCheck = "1.13.5" + val scalaTest = "3.0.3" + } + + val scalaCheck = "org.scalacheck" %% "scalacheck" % Version.scalaCheck + val scalaTest = "org.scalatest" %% "scalatest" % Version.scalaTest + } + +// ***************************************************************************** +// Settings +// ***************************************************************************** + +lazy val settings = + commonSettings ++ + headerSettings ++ + versioningSettings + +lazy val commonSettings = + Seq( + //version := "0.1.14", //TODO remove this - it will be calculated automatically by dynver + //isSnapshot := false, //TODO remove this - it will be calculated automatically by dynver + //scalaVersion from .travis.yml via sbt-travisci //TODO + organization := "com.weightwatchers", + mappings.in(Compile, packageBin) += baseDirectory.in(ThisBuild).value / "LICENSE" -> "LICENSE", + scalacOptions ++= Seq( + "-unchecked", + "-deprecation", + "-language:_", + "-target:jvm-1.8", + "-encoding", "UTF-8" + ), + unmanagedSourceDirectories.in(Compile) := Seq(scalaSource.in(Compile).value), + unmanagedSourceDirectories.in(Test) := Seq(scalaSource.in(Test).value), + shellPrompt in ThisBuild := { state => + val project = Project.extract(state).currentRef.project + s"[$project]> " + } + ) + +/* This allows to derive an sbt version string from the git information. + * The logic goes as follows : + * + * IF the current commit is tagged with "vX.Y.Z" (ie semantic-versioning), the version is "X.Y.Z" + * ELSE IF the current commit is tagged with "vX.Y.Z-SNAPSHOT", the version is "X.Y.Z-commitsSinceVersion-SNAPSHOT" + * ELSE IF the latest found tag is "vX.Y.Z", the version is "X.Y.Z-commitsSinceVersion-gCommitHash-SNAPSHOT" + * ELSE the version is "0.0.0-commitHash-SNAPSHOT" + */ +val VersionRegex = "v([0-9]+.[0-9]+.[0-9]+)-?(.*)?".r +lazy val versioningSettings = + Seq( + git.baseVersion := "0.0.0", + git.useGitDescribe := true, + git.gitTagToVersionNumber := { + case VersionRegex(v, "") => Some(v) + case VersionRegex(v, "SNAPSHOT") => Some(s"$v-SNAPSHOT") + case VersionRegex(v, s) => Some(s"$v-$s-SNAPSHOT") + case _ => None + } + ) + + +import de.heikoseeberger.sbtheader.HeaderPattern +import de.heikoseeberger.sbtheader.license._ + +lazy val headerSettings = + Seq( + headers := Map("scala" -> Apache2_0("2017", "WeightWatchers")) + ) + diff --git a/project/AutomateScalafmtPlugin.scala b/project/AutomateScalafmtPlugin.scala new file mode 100644 index 0000000..cb540b1 --- /dev/null +++ b/project/AutomateScalafmtPlugin.scala @@ -0,0 +1,69 @@ +import org.scalafmt.bootstrap.ScalafmtBootstrap +import org.scalafmt.sbt.ScalafmtPlugin +import sbt._ +import sbt.Keys._ +import sbt.inc.Analysis + +// Auto format files on compile +// From https://gist.github.com/hseeberger/03677ef75bfadb7663c3b41bb58c702b +// Thank you @hseeberger! +object AutomateScalafmtPlugin extends AutoPlugin { + + object autoImport { + def automateScalafmtFor(configurations: Configuration*): Seq[Setting[_]] = + configurations.flatMap { c => + inConfig(c)( + Seq( + compileInputs.in(compile) := { + scalafmtInc.value + compileInputs.in(compile).value + }, + sourceDirectories.in(scalafmtInc) := Seq(scalaSource.value), + scalafmtInc := { + val cache = streams.value.cacheDirectory / "scalafmt" + val include = includeFilter.in(scalafmtInc).value + val exclude = excludeFilter.in(scalafmtInc).value + val sources = + sourceDirectories + .in(scalafmtInc) + .value + .descendantsExcept(include, exclude) + .get + .toSet + def format(handler: Set[File] => Unit, msg: String) = { + def update(handler: Set[File] => Unit, msg: String)(in: ChangeReport[File], + out: ChangeReport[File]) = { + val label = Reference.display(thisProjectRef.value) + val files = in.modified -- in.removed + Analysis + .counted("Scala source", "", "s", files.size) + .foreach(count => streams.value.log.info(s"$msg $count in $label ...")) + handler(files) + files + } + FileFunction.cached(cache)(FilesInfo.hash, FilesInfo.exists)(update(handler, msg))( + sources + ) + } + def formattingHandler(files: Set[File]) = + if (files.nonEmpty) { + val filesArg = files.map(_.getAbsolutePath).mkString(",") + ScalafmtBootstrap.main(List("--quiet", "-i", "-f", filesArg)) + } + format(formattingHandler, "Formatting") + format(_ => (), "Reformatted") // Recalculate the cache + } + ) + ) + } + } + + private val scalafmtInc = taskKey[Unit]("Incrementally format modified sources") + + override def requires = ScalafmtPlugin + + override def trigger = allRequirements + + override def projectSettings = + (includeFilter.in(scalafmtInc) := "*.scala") +: autoImport.automateScalafmtFor(Compile, Test) +} diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000..3e8bd1a --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version = 0.13.15 diff --git a/project/plugins.sbt b/project/plugins.sbt new file mode 100644 index 0000000..36b91c9 --- /dev/null +++ b/project/plugins.sbt @@ -0,0 +1,11 @@ +addSbtPlugin("com.dwijnand" % "sbt-travisci" % "1.1.0") +addSbtPlugin("com.geirsson" % "sbt-scalafmt" % "0.6.8") +addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.9.2") +addSbtPlugin("de.heikoseeberger" % "sbt-header" % "1.8.0") + +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.0") +addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.1.0") + +addSbtPlugin("me.lessis" % "bintray-sbt" % "0.3.0") + +libraryDependencies += "org.slf4j" % "slf4j-nop" % "1.7.25" // Needed by sbt-git diff --git a/publish.sbt b/publish.sbt new file mode 100644 index 0000000..304453a --- /dev/null +++ b/publish.sbt @@ -0,0 +1,23 @@ + +publishTo := { + if (isSnapshot.value){ + Some("Artifactory Realm" at "http://oss.jfrog.org/artifactory/oss-snapshot-local") + } + else { + publishTo.value + } +} + +credentials ++= List(Path.userHome / ".bintray" / ".artifactory").filter(_.exists).map(Credentials(_)) //For snapshots + +organization := "com.weightwatchers" +pomIncludeRepository := { _ => false } //remove optional dependencies from our pom +licenses += ("Apache-2.0", url("https://www.apache.org/licenses/LICENSE-2.0.html")) +homepage := Some(url("http://www.weightwatchers.com")) +scmInfo := Some(ScmInfo(url("https://github.com/WW-Digital/reactive-kinesis"), "scm:git@github.com:WW-Digital/reactive-kinesis.git")) +developers := List(Developer("markglh", "Mark Harrison", "markglh@gmail.com", url("https://github.com/markglh"))) +publishArtifact in Test := false +bintrayReleaseOnPublish := false //We're releasing via travis, set to true to automatically release on publish instead +publishMavenStyle := true +bintrayRepository := "oss" +bintrayOrganization in bintray := None diff --git a/secrets.tar.enc b/secrets.tar.enc new file mode 100644 index 0000000..a05447d Binary files /dev/null and b/secrets.tar.enc differ diff --git a/src/main/scala/weightwatchers/reactive/kinesis/package.scala b/src/main/scala/weightwatchers/reactive/kinesis/package.scala new file mode 100644 index 0000000..620732d --- /dev/null +++ b/src/main/scala/weightwatchers/reactive/kinesis/package.scala @@ -0,0 +1,25 @@ +/* + * Copyright 2017 WeightWatchers + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package weightwatchers.reactive + +package object kinesis { + + type Traversable[+A] = scala.collection.immutable.Traversable[A] + type Iterable[+A] = scala.collection.immutable.Iterable[A] + type Seq[+A] = scala.collection.immutable.Seq[A] + type IndexedSeq[+A] = scala.collection.immutable.IndexedSeq[A] +}