Skip to content

Commit

Permalink
Add cross build support
Browse files Browse the repository at this point in the history
  • Loading branch information
mattroberts297 committed Dec 3, 2019
1 parent 0b7205a commit 06ff188
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 45 deletions.
17 changes: 10 additions & 7 deletions .travis.yml
@@ -1,28 +1,31 @@
language: scala

scala:
- 2.12.1
- 2.12.2

jdk:
- openjdk8

before_install:
- openssl aes-256-cbc -pass pass:$PGP_PASSPHRASE -in secret.asc.enc -out local.secret.asc -d
- openssl aes-256-cbc -pass pass:$PGP_PASSPHRASE -in public.asc.enc -out local.public.asc -d

script:
- sbt clean coverage test coverageReport
- sbt +clean coverage +test coverageReport

after_success:
- sbt coveralls

before_deploy:
- openssl aes-256-cbc -pass pass:$PGP_PASSPHRASE -in secret.asc.enc -out local.secret.asc -d
- echo $PGP_PASSPHRASE | gpg --batch --passphrase-fd 0 --import local.secret.asc

deploy:
skip_cleanup: true
provider: script
script: sbt publishSigned sonatypeRelease
script: sbt +publishSigned sonatypePrepare sonatypeBundleUpload # sonatypeBundleRelease
on:
tags: true

after_deploy:
- gpg --batch --delete-secret-keys B89EBE31B8541C9AB694A7063926C2AF62D1F8D5

env:
global:
- secure: "gSADu/D+fuUIG6rIwn4r/BdI6UYKyfISjfc4J71K3UH0jwsYnKbI/xeuEsi5tYnHSf2cb+0mrsovqMguK8ARAlTyDIGkcBnSs6bXk+3pfH0OjP/Kh8U31hjQMT5WkqGfZBkrOloc7gJSzhMwmVkaOPb2lKZ0ku0Uw/hFpMKq6nXD17iwCvd5BV1SaT/lUaGq7cgxDRpYB2tVvVrS5kk9dU7+D7ASo8Wx/SyYl8PEcK5d4JjwcF815GuHBeSPBjzTrQsowqvN2nN4IWaojRqVAC6cnZv4atPFabFQWFvAZ7sgYhHrUARRTs7bWaTARxNhHmfx/fbHh2Oz6kE6y5NMz/YJa1W6edPTeGqDkT2XS7wDDGhVVrt5IPAjs/F3pGVr4jYd5xTDg+6C2SSC0rrdfW8XoZ7mAastv1lZQaW8iu1P3aqMes97g/QOwN5KVTbuWhA/VhHJALCPjFUB+v8l84EzT36gHAyJO1eHXhwbltyeuvyaiwJB8/sC9YbZWCZd6ACeh6qO9CEdzQygNcBFkCXJTBWch/ZqmcAHxmVk2Wooe3cUxVJWKC7cdnAZ3+nkJFthbjIcGmXhV8x3o0M/z09MysbcduTXxpmiU2vvpEP4GqxTMQIkDzpJivO4kDltSR6bOdfIgJAg6JyJ0tALCc9hvZBcHKSE9liT+aZF/WM="
Expand Down
59 changes: 35 additions & 24 deletions build.sbt
@@ -1,38 +1,49 @@
lazy val scala213 = "2.13.1"
lazy val scala212 = "2.12.10"
lazy val scala211 = "2.11.12"
lazy val scala210 = "2.10.7"
lazy val supportedScalaVersions = List(scala213, scala212, scala211, scala210)

lazy val dependencies = List(
"com.chuusai" %% "shapeless" % "2.3.3",
"org.scalatest" %% "scalatest" % "3.1.0" % "test"
)

lazy val dependenciesForScala210 = List(
compilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)
)

lazy val root = (project in file(".")).settings(
name := "claper",
organization := "io.mattroberts",
version := "0.3.0",
scalaVersion := "2.12.1",
scalaVersion := scala213,
crossScalaVersions := supportedScalaVersions,
scalacOptions := Seq("-deprecation", "-feature", "-unchecked"),
libraryDependencies ++= Seq(
"com.chuusai" %% "shapeless" % "2.3.2",
"org.scalatest" %% "scalatest" % "3.0.1" % "test"
),

pgpPassphrase := Option(env("PGP_PASSPHRASE")).map(_.toCharArray),
pgpSecretRing := file("local.secret.asc"),
pgpPublicRing := file("local.public.asc"),
libraryDependencies ++= (scalaBinaryVersion.value match {
case "2.10" => dependencies ++ dependenciesForScala210
case _ => dependencies
}),

credentials += Credentials(
"Sonatype Nexus Repository Manager",
"oss.sonatype.org",
"mattroberts297",
env("SONATYPE_PASSWORD")
credentials ++= Seq(
Credentials(
"Sonatype Nexus Repository Manager",
"oss.sonatype.org",
"mattroberts297",
env("SONATYPE_PASSWORD")
),
Credentials(
"GnuPG Key ID",
"gpg",
"B89EBE31B8541C9AB694A7063926C2AF62D1F8D5",
env("PGP_PASSPHRASE")
)
),

publishTo := sonatypePublishToBundle.value,
publishMavenStyle := true,
publishArtifact in Test := false,
publishTo := {
val nexus = "https://oss.sonatype.org/"
if (isSnapshot.value)
Some("snapshots" at nexus + "content/repositories/snapshots")
else
Some("releases" at nexus + "service/local/staging/deploy/maven2")
},

makePomConfiguration ~= {
_.copy(configurations = Some(Seq(Compile, Runtime, Optional)))
},
pomIncludeRepository := {
_: sbt.MavenRepository => false
},
Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
@@ -1 +1 @@
sbt.version=0.13.15
sbt.version=1.3.4
8 changes: 4 additions & 4 deletions project/plugins.sbt
@@ -1,7 +1,7 @@
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.0")
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1")

addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.1.0")
addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.2.7")

addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "1.1")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.8.1")

addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.1")
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "2.0.0")
10 changes: 5 additions & 5 deletions src/main/scala/io/mattroberts/Claper.scala
Expand Up @@ -26,7 +26,7 @@ object Claper {
generic: LabelledGeneric.Aux[A, R],
parser: Lazy[UnderlyingClaper[R, D]]
): Claper[A] = {
create { args => parser.value.parse(args, defaults()).map(generic.from) }
create { args => parser.value.parse(args, defaults()).right.map(generic.from) }
}

private def create[A](thunk: Seq[String] => ClaperError Or A): Claper[A] = {
Expand Down Expand Up @@ -59,8 +59,8 @@ object UnderlyingClaper {
val hv = hParser.value.parse(args, defaults.head)
val tv = tParser.parse(args, defaults.tail)
for {
h <- hv
t <- tv
h <- hv.right
t <- tv.right
} yield h :: t
}
}
Expand All @@ -74,7 +74,7 @@ object UnderlyingClaper {
create { (args, default) =>
val argDefined = args.find(a => a == s"--$name").isDefined
if (argDefined) {
aParser.parse(args, default.flatten).map(v => field[K](Option(v)))
aParser.parse(args, default.flatten).right.map(v => field[K](Option(v)))
} else {
Right(field[K](None))
}
Expand Down Expand Up @@ -172,7 +172,7 @@ object UnderlyingClaper {
defaultArg.map(Right(_)).getOrElse(
Left(ClaperError(s"Missing argument $name"))
)
).map(a => field[K](a))
).right.map(a => field[K](a))
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions src/test/scala/io/mattroberts/ClaperErrorSpec.scala
@@ -1,8 +1,9 @@
package io.mattroberts

import org.scalatest.{MustMatchers, FlatSpec}
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.must.Matchers

class ClaperErrorSpec extends FlatSpec with MustMatchers {
class ClaperErrorSpec extends AnyFlatSpec with Matchers {
"ClaperError" must "alias message to msg" in {
val message = "Test message"
val error = ClaperError(message)
Expand Down
5 changes: 3 additions & 2 deletions src/test/scala/io/mattroberts/ClaperSpec.scala
@@ -1,8 +1,9 @@
package io.mattroberts

import org.scalatest.{MustMatchers, FlatSpec}
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.must.Matchers

class ClaperSpec extends FlatSpec with MustMatchers {
class ClaperSpec extends AnyFlatSpec with Matchers {
object NoDefaults {
case class Args(
alpha: String,
Expand Down

0 comments on commit 06ff188

Please sign in to comment.