Skip to content

Commit 444aeaf

Browse files
committed
Moving commons to its own project
Previously it was hosted here: https://github.com/fulcrumgenomics/dagr
1 parent e78d957 commit 444aeaf

39 files changed

+307
-45
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.idea
2+
target

.travis.yml

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
sudo: false
2+
language: scala
3+
scala:
4+
- 2.11.7
5+
jdk:
6+
- oraclejdk8
7+
script:
8+
- sbt +clean coverage +test && sbt coverageReport coverageAggregate
9+
- find $HOME/.sbt -name "*.lock" | xargs rm
10+
- find $HOME/.ivy2 -name "ivydata-*.properties" | xargs rm
11+
cache:
12+
directories:
13+
- $HOME/.ivy2/cache
14+
- $HOME/.sbt/boot/
15+
before_install:
16+
- pip install --user codecov
17+
after_success:
18+
- codecov
19+
- test "$TRAVIS_REPO_SLUG" == 'fulcrumgenomics/commons' && test "$TRAVIS_PULL_REQUEST" == 'false' && test "$TRAVIS_BRANCH" == 'master' && sbt publish
20+
env:
21+
global:
22+
- secure: AjbCqJPaYLWVYTNS7Czdu+SVX0Vs1bDuVg+YjNasFs8peu97hQxx9TNqxZcvrs8SwGD6gXlJComMJPVeLUjYf/EqmJMICtS/UTTBONlfEZgF+KSO1FeXxyvsFskuCn9GxK8JSGE49YKCWnSuAQ6JBgjSidUVgumjiyFg7Dgac5rUNJZ4SR7nQbufF5NsegLZNEsiDJxK20roksZnbdpI7PQE/pthoTzowLuElMEFpF5DZ9LfY/HeSm3+s0edYOVBgivc2tjqROSsgOEmz3uQ0tLpvaAMpt0aSXuultql3GL1aiJKFjo21vbEA95jlfdq/BXZvh6q25TaciGT0LZOBcbQSiwsIsWQfulw7QEQ1C0mv1UuYBHvF4jeMVTRL3Aj7El1fNeHA8nkNTr+GZEcRpkBQOHuD9kDX7Ks6iU8+arsSr7YnR6eENJd/UB8XogZvKydFbUJ90Cmn5W4S1BHQXsv2BkJ/BubdH3groEfKbUsrGRjf7oBt/l0O8X5SO5+fAF3KCsHDSAIIM16b14RXKCrASkIGc4S0wQryRksMZADl6GUZCnIyWLUfNQC5SXS30K4f8ny7LG9yYzfph++S+s3YUC0qS+ZFLG6fHcw+kjOi7nwrR+oyJp2Q2f5z3Vq1A81h1NgOMR3lQn002oes+TYTymY+/SXcldV+9p5MHE=
23+
- secure: YgmhR2puvVq8w5UAmo3UPjm1CKTKGq7cc3TneKASiZW/eHj/GAJ1BHDjSNNUS1eaNQr16H+2ws1u6tD2rOGRuISnQtRagncVrcviXaRBI8PDLrTC6N0pcUFMvziUuJAwmPgfeZDfZQpev9Ssod6z6rPRR8bFC69KV7Df90M1SjWP/c5dU62TBIw5EOyP3q8ui3W4tMEeFuYCH9CPKErqopfiDHRkJhE4DHuMKVA+xLT/TzEzsyJMJqXHVfow/N3tGRraL5G6JBUiwerPj0/Tm1ovd/4xT9Jqr4ujoG0cWydNEkK9pcMpBNFnV30krTgMtw8ibwZJPkFWk40De4fDj4UU7HQEdyfEj2zcfoWRvI+RvzTw6xVsWXSurTKJwSc+6e/7xjn4zgFngr6WYt26PFH/sKgG3FjtiEAiNOOgyAlN8N7MZhYVWpgzzNAyzaCrfqlpLOzxcEqI+vum2SAZCdNWME+t/Hd16GXRpR4pHmuvHqVR5cK9XmpSE9eB6svB3sQiJC46KfmlfBkwXIu57syyKrFSlLf/QeuviUza0kRHQ+1HbjCHna600HP78arZuYrZgpDI2nQlEn9LasHkhiaKTtb2/an3cFLD1ld5NLuY/3AymWP1zvvo7iOGcrrhRUwxS81dYPCqW+x1rvcQszyioR4WrsLbLy3vGaU3NWI=

LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
The MIT License
2+
3+
Copyright (c) 2015-2016 Fulcrum Genomics LLC
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in
13+
all copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
THE SOFTWARE.

README.md

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[![Build Status](https://travis-ci.org/fulcrumgenomics/commons.svg?branch=master)](https://travis-ci.org/fulcrumgenomics/commons)
2+
[![Coverage Status](https://codecov.io/github/fulcrumgenomics/commons/coverage.svg?branch=master)](https://codecov.io/github/fulcrumgenomics/commons?branch=master)
3+
[![Code Review](https://api.codacy.com/project/badge/grade/52e1d786d9784c7192fae2f8e853fa34)](https://www.codacy.com/app/contact_32/commons)
4+
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.fulcrumgenomics/commons_2.11/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.fulcrumgenomics/commons_2.11)
5+
[![Dependency Status](https://www.versioneye.com/user/projects/56b2d2d593b95a003c714340/badge.svg)](https://www.versioneye.com/user/projects/56b2d2d593b95a003c714340#dialog_dependency_badge)
6+
[![License](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/fulcrumgenomics/commons/blob/master/LICENSE)
7+
[![Language](http://img.shields.io/badge/language-scala-brightgreen.svg)](http://www.scala-lang.org/)
8+
9+
Scala Commons
10+
====
11+
12+
Coming soon, documentation!

build.sbt

+159
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
import com.typesafe.sbt.SbtGit.GitCommand
2+
import sbt.Keys._
3+
import sbt._
4+
import sbtassembly.AssemblyKeys.assembly
5+
import sbtassembly.MergeStrategy
6+
import sbtrelease.ReleasePlugin.autoImport.ReleaseTransformations._
7+
import scoverage.ScoverageKeys._
8+
9+
////////////////////////////////////////////////////////////////////////////////////////////////
10+
// We have the following "settings" in this build.sbt:
11+
// - versioning with sbt-release
12+
// - custom JAR name for the root project
13+
// - settings to publish to Sonatype
14+
// - exclude the root, tasks, and pipelines project from code coverage
15+
// - scaladoc settings
16+
// - custom merge strategy for assembly
17+
////////////////////////////////////////////////////////////////////////////////////////////////
18+
19+
////////////////////////////////////////////////////////////////////////////////////////////////
20+
// Use sbt-release to bump the version numbers.
21+
//
22+
// see: http://blog.byjean.eu/2015/07/10/painless-release-with-sbt.html
23+
////////////////////////////////////////////////////////////////////////////////////////////////
24+
25+
// Release settings
26+
releaseVersionBump := sbtrelease.Version.Bump.Next
27+
releasePublishArtifactsAction := PgpKeys.publishSigned.value
28+
releaseProcess := Seq[ReleaseStep](
29+
checkSnapshotDependencies,
30+
inquireVersions,
31+
runClean,
32+
runTest,
33+
setReleaseVersion,
34+
commitReleaseVersion,
35+
tagRelease,
36+
ReleaseStep(action = Command.process("publishSigned", _)),
37+
setNextVersion,
38+
commitNextVersion,
39+
ReleaseStep(action = Command.process("sonatypeReleaseAll", _)),
40+
pushChanges
41+
)
42+
43+
////////////////////////////////////////////////////////////////////////////////////////////////
44+
// For the aggregate (root) jar, override the name. For the sub-projects,
45+
// see the build.sbt in each project folder.
46+
////////////////////////////////////////////////////////////////////////////////////////////////
47+
assemblyJarName in assembly := "commons-" + version.value + ".jar"
48+
49+
////////////////////////////////////////////////////////////////////////////////////////////////
50+
// Sonatype settings
51+
////////////////////////////////////////////////////////////////////////////////////////////////
52+
publishMavenStyle := true
53+
publishTo := {
54+
val nexus = "https://oss.sonatype.org/"
55+
if (isSnapshot.value)
56+
Some("snapshots" at nexus + "content/repositories/snapshots")
57+
else
58+
Some("releases" at nexus + "service/local/staging/deploy/maven2")
59+
}
60+
publishArtifact in Test := false
61+
pomIncludeRepository := { _ => false }
62+
// For Travis CI - see http://www.cakesolutions.net/teamblogs/publishing-artefacts-to-oss-sonatype-nexus-using-sbt-and-travis-ci
63+
credentials ++= (for {
64+
username <- Option(System.getenv().get("SONATYPE_USER"))
65+
password <- Option(System.getenv().get("SONATYPE_PASS"))
66+
} yield Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", username, password)).toSeq
67+
68+
////////////////////////////////////////////////////////////////////////////////////////////////
69+
// Coverage settings: include all sources
70+
////////////////////////////////////////////////////////////////////////////////////////////////
71+
val htmlReportsDirectory: String = "target/test-reports"
72+
73+
////////////////////////////////////////////////////////////////////////////////////////////////
74+
// scaladoc options
75+
////////////////////////////////////////////////////////////////////////////////////////////////
76+
val docScalacOptions = Seq("-groups", "-implicits")
77+
78+
////////////////////////////////////////////////////////////////////////////////////////////////
79+
// Common settings for all projects
80+
////////////////////////////////////////////////////////////////////////////////////////////////
81+
82+
lazy val commonSettings = Seq(
83+
organization := "com.fulcrumgenomics",
84+
organizationName := "Fulcrum Genomics LLC",
85+
organizationHomepage := Some(url("http://www.fulcrumgenomics.com")),
86+
homepage := Some(url("http://github.com/fulcrumgenomics/commons")),
87+
startYear := Some(2015),
88+
scalaVersion := "2.11.8",
89+
crossScalaVersions := Seq("2.11.8", "2.12.1"),
90+
scalacOptions += "-target:jvm-1.8",
91+
scalacOptions in (Compile, doc) ++= docScalacOptions,
92+
scalacOptions in (Test, doc) ++= docScalacOptions,
93+
autoAPIMappings := true,
94+
testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-h", Option(System.getenv("TEST_HTML_REPORTS")).getOrElse(htmlReportsDirectory)),
95+
testOptions in Test += Tests.Argument("-l", "LongRunningTest"), // ignores long running tests
96+
// uncomment for full stack traces
97+
//testOptions in Test += Tests.Argument("-oD"),
98+
fork in Test := true,
99+
resolvers += Resolver.jcenterRepo,
100+
shellPrompt := { state => "%s| %s> ".format(GitCommand.prompt.apply(state), version.value) },
101+
updateOptions := updateOptions.value.withCachedResolution(true)
102+
) ++ Defaults.coreDefaultSettings
103+
104+
////////////////////////////////////////////////////////////////////////////////////////////////
105+
// commons project
106+
////////////////////////////////////////////////////////////////////////////////////////////////
107+
lazy val assemblySettings = Seq(
108+
test in assembly := {},
109+
logLevel in assembly := Level.Info
110+
)
111+
lazy val root = Project(id="commons", base=file("."))
112+
.settings(commonSettings: _*)
113+
.settings(unidocSettings: _*)
114+
.settings(assemblySettings: _*)
115+
.settings(description := "Scala commons for Fulcrum Genomics.")
116+
.settings(
117+
libraryDependencies ++= Seq(
118+
"org.scala-lang" % "scala-reflect" % scalaVersion.value,
119+
120+
//---------- Test libraries -------------------//
121+
"org.scalatest" %% "scalatest" % "3.0.1" % "test->*" excludeAll ExclusionRule(organization="org.junit", name="junit")
122+
)
123+
)
124+
125+
////////////////////////////////////////////////////////////////////////////////////////////////
126+
// Merge strategy for assembly
127+
////////////////////////////////////////////////////////////////////////////////////////////////
128+
val customMergeStrategy: String => MergeStrategy = {
129+
case x if Assembly.isConfigFile(x) =>
130+
MergeStrategy.concat
131+
case PathList(ps@_*) if Assembly.isReadme(ps.last) || Assembly.isLicenseFile(ps.last) =>
132+
MergeStrategy.rename
133+
case PathList("META-INF", xs@_*) =>
134+
xs map {
135+
_.toLowerCase
136+
} match {
137+
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) | ("dependencies" :: Nil) =>
138+
MergeStrategy.discard
139+
case ps@(x :: xt) if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") =>
140+
MergeStrategy.discard
141+
case "plexus" :: xt =>
142+
MergeStrategy.discard
143+
case "spring.tooling" :: xt =>
144+
MergeStrategy.discard
145+
case "com.google.guava" :: xt =>
146+
MergeStrategy.discard
147+
case "services" :: xt =>
148+
MergeStrategy.filterDistinctLines
149+
case ("spring.schemas" :: Nil) | ("spring.handlers" :: Nil) =>
150+
MergeStrategy.filterDistinctLines
151+
case _ => MergeStrategy.deduplicate
152+
}
153+
case "asm-license.txt" | "overview.html" =>
154+
MergeStrategy.discard
155+
case "logback.xml" =>
156+
MergeStrategy.first
157+
case _ => MergeStrategy.deduplicate
158+
}
159+
assemblyMergeStrategy in assembly := customMergeStrategy

codecov.yml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
coverage:
2+
status:
3+
patch:
4+
default:
5+
target: '80'
6+
project:
7+
default:
8+
target: auto

project/build.properties

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
sbt.version=0.13.9

project/plugins.sbt

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
resolvers += Resolver.url("fix-sbt-plugin-releases", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
2+
3+
addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.8.5")
4+
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.3")
5+
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
6+
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.0")
7+
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "1.1")
8+
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.1")
9+
addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.3.3")

sonatype.sbt

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
sonatypeProfileName := "com.fulcrumgenomics"
2+
3+
pomExtra in Global := {
4+
<licenses>
5+
<license>
6+
<name>MIT License</name>
7+
<url>http://www.opensource.org/licenses/mit-license.html</url>
8+
</license>
9+
</licenses>
10+
<scm>
11+
<url>git@github.com:fulcrumgenomics/commons</url>
12+
<connection>scm:git:git@github.com:fulcrumgenomics/commons.git</connection>
13+
</scm>
14+
<developers>
15+
<developer>
16+
<id>nh13</id>
17+
<name>Nils Homer</name>
18+
<url>http://github.com/nh13</url>
19+
</developer>
20+
<developer>
21+
<id>tfenne</id>
22+
<name>Tim Fennell</name>
23+
<url>http://github.com/tfenne</url>
24+
</developer>
25+
</developers>
26+
}

src/main/java/dagr/commons/util/ClassFinder.java src/main/java/com/fulcrumgenomics/commons/util/ClassFinder.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2222
* THE SOFTWARE.
2323
*/
24-
package dagr.commons.util;
24+
package com.fulcrumgenomics.commons.util;
2525

26-
import dagr.commons.util.Logger;
26+
import com.fulcrumgenomics.commons.util.Logger;
2727

2828
import java.io.File;
2929
import java.io.IOException;

src/main/java/dagr/commons/util/LogLevel.java src/main/java/com/fulcrumgenomics/commons/util/LogLevel.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2222
* THE SOFTWARE.
2323
*/
24-
package dagr.commons.util;
24+
package com.fulcrumgenomics.commons.util;
2525

2626
/**
2727
* Enumeration representing different logging levels.

src/main/scala/dagr/commons/CommonsDef.scala src/main/scala/com/fulcrumgenomics/commons/CommonsDef.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
* THE SOFTWARE.
2323
*/
2424

25-
package dagr.commons
25+
package com.fulcrumgenomics.commons
2626

2727
import java.io.Closeable
2828

29-
import dagr.commons.util.Logger
29+
import com.fulcrumgenomics.commons.util.Logger
3030

3131
import scala.util.{Failure, Success, Try}
3232

src/main/scala/dagr/commons/io/AsyncStreamSink.scala src/main/scala/com/fulcrumgenomics/commons/io/AsyncStreamSink.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
* THE SOFTWARE.
2323
*/
2424

25-
package dagr.commons.io
25+
package com.fulcrumgenomics.commons.io
2626

2727
import java.io.{Closeable, InputStream}
2828
import java.util.concurrent.atomic.AtomicInteger
2929

30-
import dagr.commons.CommonsDef._
30+
import com.fulcrumgenomics.commons.CommonsDef._
3131

3232
import scala.io.Source
3333

src/main/scala/dagr/commons/io/Io.scala src/main/scala/com/fulcrumgenomics/commons/io/Io.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2222
* THE SOFTWARE.
2323
*/
24-
package dagr.commons.io
24+
package com.fulcrumgenomics.commons.io
2525

2626
import java.io._
2727
import java.nio.file.{Files, Path}

src/main/scala/dagr/commons/io/PathUtil.scala src/main/scala/com/fulcrumgenomics/commons/io/PathUtil.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* THE SOFTWARE.
2323
*/
2424

25-
package dagr.commons.io
25+
package com.fulcrumgenomics.commons.io
2626

2727
import java.nio.file.{Path, Paths}
2828

src/main/scala/dagr/commons/reflect/ReflectionUtil.scala src/main/scala/com/fulcrumgenomics/commons/reflect/ReflectionUtil.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2222
* THE SOFTWARE.
2323
*/
24-
package dagr.commons.reflect
24+
package com.fulcrumgenomics.commons.reflect
2525

2626
import java.lang.reflect.{Constructor, InvocationTargetException}
2727
import java.nio.file.Path
2828

29-
import dagr.commons.io.PathUtil
30-
import dagr.commons.CommonsDef._
29+
import com.fulcrumgenomics.commons.io.PathUtil
30+
import com.fulcrumgenomics.commons.CommonsDef._
3131

3232
import scala.annotation.ClassfileAnnotation
3333
import scala.collection.mutable

src/main/scala/dagr/commons/reflect/ReflectiveBuilder.scala src/main/scala/com/fulcrumgenomics/commons/reflect/ReflectiveBuilder.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
* THE SOFTWARE.
2323
*/
2424

25-
package dagr.commons.reflect
26-
27-
import dagr.commons.CommonsDef._
25+
package com.fulcrumgenomics.commons.reflect
2826

2927
import java.lang.reflect.{Constructor, InvocationTargetException}
3028

29+
import com.fulcrumgenomics.commons.CommonsDef._
30+
3131
import scala.collection.mutable
3232
import scala.reflect.runtime.universe._
3333
import scala.reflect.runtime.{universe => ru}

src/main/scala/dagr/commons/util/BiMap.scala src/main/scala/com/fulcrumgenomics/commons/util/BiMap.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* THE SOFTWARE.
2323
*/
2424

25-
package dagr.commons.util
25+
package com.fulcrumgenomics.commons.util
2626

2727
import scala.collection.mutable
2828

src/test/scala/dagr/commons/util/CaptureSystemStreams.scala src/main/scala/com/fulcrumgenomics/commons/util/CaptureSystemStreams.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2222
* THE SOFTWARE.
2323
*/
24-
package dagr.commons.util
24+
package com.fulcrumgenomics.commons.util
2525

2626
import java.io.{ByteArrayOutputStream, PrintStream}
2727

src/main/scala/dagr/commons/util/Logger.scala src/main/scala/com/fulcrumgenomics/commons/util/Logger.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2222
* THE SOFTWARE.
2323
*/
24-
package dagr.commons.util
24+
package com.fulcrumgenomics.commons.util
2525

2626
import java.io.{PrintStream, PrintWriter, StringWriter}
2727
import java.text.SimpleDateFormat

0 commit comments

Comments
 (0)