Skip to content

Commit

Permalink
Merge pull request #112 from olafurpg/misc-updates
Browse files Browse the repository at this point in the history
Miscellaneous cli improvements
  • Loading branch information
olafurpg authored Apr 3, 2017
2 parents 9840cad + 3beeabc commit b3c2d16
Show file tree
Hide file tree
Showing 21 changed files with 367 additions and 152 deletions.
15 changes: 9 additions & 6 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ pipeline:
- /drone/.coursier-cache
- /drone/.sbt
- /drone/.git
when:
event: [push, pull_request, tag, deployment]

tests:
image: scalaplatform/scala:0.6
Expand All @@ -20,7 +22,7 @@ pipeline:
- git log | head -n 20
- ./scalafmt --test
- ./bin/copy_cache.sh /drone /root
- /usr/bin/sbt $TEST
- /usr/bin/sbt $CI_TEST
- ./bin/before_cache.sh
- ./bin/copy_cache.sh /root /drone
notify:
Expand All @@ -47,9 +49,10 @@ pipeline:
- /drone/.git
matrix:
include:
- TEST: ci-fast
SCALA_VERSION: 2.11.8
- CI_TEST: ci-fast
CI_SCALA_VERSION: 2.11.8
# See https://github.com/scalacenter/scalafix/issues/101
# - TEST: ci-fast
# SCALA_VERSION: 2.12.1
- TEST: ci-slow
# - CI_TEST: ci-fast
# CI_SCALA_VERSION: 2.12.1
- CI_TEST: ci-slow
CI_SCALA_VERSION: 2.11.8
2 changes: 1 addition & 1 deletion .drone.yml.sig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eyJhbGciOiJIUzI1NiJ9.cGlwZWxpbmU6CiAgIyBGZXRjaCBmb2xkZXJzIGZyb20gZGlzdHJpYnV0ZWQgY2FjaGUKICBzZnRwX2NhY2hlX3Jlc3RvcmU6CiAgICBpbWFnZTogcGx1Z2lucy9zZnRwLWNhY2hlCiAgICByZXN0b3JlOiB0cnVlCiAgICBtb3VudDoKICAgICAgLSAvZHJvbmUvLml2eTIKICAgICAgLSAvZHJvbmUvLmNvdXJzaWVyLWNhY2hlCiAgICAgIC0gL2Ryb25lLy5zYnQKICAgICAgLSAvZHJvbmUvLmdpdAoKICB0ZXN0czoKICAgIGltYWdlOiBzY2FsYXBsYXRmb3JtL3NjYWxhOjAuNgogICAgcHVsbDogdHJ1ZQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gQ09VUlNJRVJfQ0FDSEU9L2Ryb25lL2NhY2hlL2NvdXJzaWVyCiAgICB2b2x1bWVzOgogICAgICAtIC9wbGF0Zm9ybTova2V5cwogICAgY29tbWFuZHM6CiAgICAgIC0gZ2l0IGxvZyB8IGhlYWQgLW4gMjAKICAgICAgLSAuL3NjYWxhZm10IC0tdGVzdAogICAgICAtIC4vYmluL2NvcHlfY2FjaGUuc2ggL2Ryb25lIC9yb290CiAgICAgIC0gL3Vzci9iaW4vc2J0ICRURVNUCiAgICAgIC0gLi9iaW4vYmVmb3JlX2NhY2hlLnNoCiAgICAgIC0gLi9iaW4vY29weV9jYWNoZS5zaCAvcm9vdCAvZHJvbmUKICBub3RpZnk6CiAgICBpbWFnZTogZHJpbGxzdGVyL2Ryb25lLWVtYWlsCiAgICBob3N0OiBzbXRwLm1haWxndW4ub3JnCiAgICB1c2VybmFtZTogbm9yZXBseUBkcm9uZS5nZWlyc3Nvbi5jb20KICAgIHBhc3N3b3JkOiAke01BSUxHVU5fUEFTU1dPUkR9CiAgICBmcm9tOiBub3JlcGx5QGRyb25lLmdlaXJzc29uLmNvbQogICAgcmVjaXBpZW50czoKICAgICAgLSBvbGFmdXJwZ0BnbWFpbC5jb20KICAgIHdoZW46CiAgICAgIGV2ZW50OiBwdXNoCiAgICAgIGJyYW5jaDogW21hc3Rlcl0KICAgICAgc3RhdHVzOiBbY2hhbmdlZCwgZmFpbHVyZV0KCiAgIyBTYXZlIGZvbGRlcnMgaW4gZGlzdHJpYnV0ZWQgY2FjaGUKICBzZnRwX2NhY2hlX3JlYnVpbGQ6CiAgICBpbWFnZTogcGx1Z2lucy9zZnRwLWNhY2hlCiAgICByZWJ1aWxkOiB0cnVlCiAgICBtb3VudDoKICAgICAgLSAvZHJvbmUvLml2eTIKICAgICAgLSAvZHJvbmUvLmNvdXJzaWVyLWNhY2hlCiAgICAgIC0gL2Ryb25lLy5zYnQKICAgICAgLSAvZHJvbmUvLmdpdAptYXRyaXg6CiAgaW5jbHVkZToKICAgIC0gVEVTVDogY2ktZmFzdAogICAgICBTQ0FMQV9WRVJTSU9OOiAyLjExLjgKICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYWNlbnRlci9zY2FsYWZpeC9pc3N1ZXMvMTAxCiAgICAjIC0gVEVTVDogY2ktZmFzdAogICAgIyAgIFNDQUxBX1ZFUlNJT046IDIuMTIuMQogICAgLSBURVNUOiBjaS1zbG93Cg.UsXt-SEnpsyKykJFpgdtbWNM8pRsngd2X5jShelSyEY
eyJhbGciOiJIUzI1NiJ9.cGlwZWxpbmU6CiAgIyBGZXRjaCBmb2xkZXJzIGZyb20gZGlzdHJpYnV0ZWQgY2FjaGUKICBzZnRwX2NhY2hlX3Jlc3RvcmU6CiAgICBpbWFnZTogcGx1Z2lucy9zZnRwLWNhY2hlCiAgICByZXN0b3JlOiB0cnVlCiAgICBtb3VudDoKICAgICAgLSAvZHJvbmUvLml2eTIKICAgICAgLSAvZHJvbmUvLmNvdXJzaWVyLWNhY2hlCiAgICAgIC0gL2Ryb25lLy5zYnQKICAgICAgLSAvZHJvbmUvLmdpdAogICAgd2hlbjoKICAgICAgZXZlbnQ6IFtwdXNoLCBwdWxsX3JlcXVlc3QsIHRhZywgZGVwbG95bWVudF0KCiAgdGVzdHM6CiAgICBpbWFnZTogc2NhbGFwbGF0Zm9ybS9zY2FsYTowLjYKICAgIHB1bGw6IHRydWUKICAgIGVudmlyb25tZW50OgogICAgICAtIENPVVJTSUVSX0NBQ0hFPS9kcm9uZS9jYWNoZS9jb3Vyc2llcgogICAgdm9sdW1lczoKICAgICAgLSAvcGxhdGZvcm06L2tleXMKICAgIGNvbW1hbmRzOgogICAgICAtIGdpdCBsb2cgfCBoZWFkIC1uIDIwCiAgICAgIC0gLi9zY2FsYWZtdCAtLXRlc3QKICAgICAgLSAuL2Jpbi9jb3B5X2NhY2hlLnNoIC9kcm9uZSAvcm9vdAogICAgICAtIC91c3IvYmluL3NidCAkQ0lfVEVTVAogICAgICAtIC4vYmluL2JlZm9yZV9jYWNoZS5zaAogICAgICAtIC4vYmluL2NvcHlfY2FjaGUuc2ggL3Jvb3QgL2Ryb25lCiAgbm90aWZ5OgogICAgaW1hZ2U6IGRyaWxsc3Rlci9kcm9uZS1lbWFpbAogICAgaG9zdDogc210cC5tYWlsZ3VuLm9yZwogICAgdXNlcm5hbWU6IG5vcmVwbHlAZHJvbmUuZ2VpcnNzb24uY29tCiAgICBwYXNzd29yZDogJHtNQUlMR1VOX1BBU1NXT1JEfQogICAgZnJvbTogbm9yZXBseUBkcm9uZS5nZWlyc3Nvbi5jb20KICAgIHJlY2lwaWVudHM6CiAgICAgIC0gb2xhZnVycGdAZ21haWwuY29tCiAgICB3aGVuOgogICAgICBldmVudDogcHVzaAogICAgICBicmFuY2g6IFttYXN0ZXJdCiAgICAgIHN0YXR1czogW2NoYW5nZWQsIGZhaWx1cmVdCgogICMgU2F2ZSBmb2xkZXJzIGluIGRpc3RyaWJ1dGVkIGNhY2hlCiAgc2Z0cF9jYWNoZV9yZWJ1aWxkOgogICAgaW1hZ2U6IHBsdWdpbnMvc2Z0cC1jYWNoZQogICAgcmVidWlsZDogdHJ1ZQogICAgbW91bnQ6CiAgICAgIC0gL2Ryb25lLy5pdnkyCiAgICAgIC0gL2Ryb25lLy5jb3Vyc2llci1jYWNoZQogICAgICAtIC9kcm9uZS8uc2J0CiAgICAgIC0gL2Ryb25lLy5naXQKbWF0cml4OgogIGluY2x1ZGU6CiAgICAtIENJX1RFU1Q6IGNpLWZhc3QKICAgICAgQ0lfU0NBTEFfVkVSU0lPTjogMi4xMS44CiAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2NhbGFjZW50ZXIvc2NhbGFmaXgvaXNzdWVzLzEwMQogICAgIyAtIENJX1RFU1Q6IGNpLWZhc3QKICAgICMgICBDSV9TQ0FMQV9WRVJTSU9OOiAyLjEyLjEKICAgIC0gQ0lfVEVTVDogY2ktc2xvdwogICAgICBDSV9TQ0FMQV9WRVJTSU9OOiAyLjExLjgK.kALWXJUcY8qVvXdeTWwbRhT82ykVHGFHNHM_mZXzyJE
140 changes: 79 additions & 61 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,7 @@ import sbt.ScriptedPlugin._
import Dependencies._
organization in ThisBuild := "ch.epfl.scala"

lazy val crossVersions = Seq(
"2.11.8",
"2.12.1"
)

lazy val buildSettings = Seq(
)

lazy val jvmOptions = Seq(
"-Xss4m"
)
lazy val crossVersions = Seq(scala211, scala212)

lazy val compilerOptions = Seq(
"-deprecation",
Expand Down Expand Up @@ -43,13 +33,13 @@ commands += Command.command("release") { s =>

commands += Command.command("ci-fast") { s =>
"clean" ::
"testQuick" ::
s"plz $ciScalaVersion testQuick" ::
s
}

commands += Command.command("ci-slow") { s =>
"very publishLocal" ::
"wow 2.11.8 scalafix-tests/test" ::
s"wow ${ciScalaVersion.get} scalafix-tests/test" ::
"very scalafix-sbt/scripted" ::
s
}
Expand Down Expand Up @@ -97,6 +87,8 @@ lazy val buildInfoSettings: Seq[Def.Setting[_]] = Seq(
"stableVersion" -> "0.3.1",
"scalameta" -> scalametaV,
scalaVersion,
"scala211" -> scala211,
"scala212" -> scala212,
sbtVersion
),
buildInfoPackage := "scalafix",
Expand All @@ -112,40 +104,22 @@ lazy val allSettings = List(
libraryDependencies += scalatest % Test,
testOptions in Test += Tests.Argument("-oD"),
assemblyJarName in assembly := "scalafix.jar",
scalaVersion := sys.env.getOrElse("SCALA_VERSION", "2.11.8"),
scalaVersion := ciScalaVersion.getOrElse(scala211),
crossScalaVersions := crossVersions,
updateOptions := updateOptions.value.withCachedResolution(true)
) ++ publishSettings

lazy val `scalafix-root` = project
.in(file("."))
.settings(
moduleName := "scalafix",
allSettings,
noPublish,
gitPushTag := {
val tag = s"v${version.value}"
assert(!tag.endsWith("SNAPSHOT"))
import sys.process._
Seq("git", "tag", "-a", tag, "-m", tag).!!
Seq("git", "push", "--tags").!!
},
initialCommands in console :=
"""
|import scala.meta._
|import scalafix._
""".stripMargin
)
.aggregate(
`scalafix-nsc`,
`scalafix-tests`,
`scalafix-testutils`,
core,
cli,
readme,
`scalafix-sbt`
)
.dependsOn(core)
allSettings

noPublish

gitPushTag := {
val tag = s"v${version.value}"
assert(!tag.endsWith("SNAPSHOT"))
import sys.process._
Seq("git", "tag", "-a", tag, "-m", tag).!!
Seq("git", "push", "--tags").!!
}

// settings to projects using @metaconfig.ConfigReader annotation.
lazy val metaconfigSettings: Seq[Def.Setting[_]] = Seq(
Expand All @@ -161,14 +135,15 @@ lazy val core = project
allSettings,
buildInfoSettings,
metaconfigSettings,
isFullCrossVersion,
moduleName := "scalafix-core",
dependencyOverrides += scalameta,
libraryDependencies ++= Seq(
"com.typesafe" % "config" % "1.3.1",
"com.lihaoyi" %% "sourcecode" % "0.1.3",
metaconfig,
scalameta,
scalahost(scalaVersion.value),
scalahost,
"org.scala-lang" % "scala-reflect" % scalaVersion.value
)
)
Expand All @@ -178,9 +153,10 @@ lazy val core = project
lazy val `scalafix-nsc` = project
.settings(
allSettings,
isFullCrossVersion,
libraryDependencies ++= Seq(
"org.scala-lang" % "scala-compiler" % scalaVersion.value,
scalahostNsc(scalaVersion.value),
scalahostNsc,
ammonite % Test,
// integration property tests
"org.typelevel" %% "catalysts-platform" % "0.0.5" % Test,
Expand Down Expand Up @@ -228,28 +204,28 @@ lazy val `scalafix-nsc` = project
lazy val cli = project
.settings(
allSettings,
packSettings,
libraryDependencies ++= Seq(
// NB: The Mirror has an undeclared dependency on the scalahost-nsc package.
scalahostNsc(scalaVersion.value)
),
isFullCrossVersion,
moduleName := "scalafix-cli",
packJvmOpts := Map(
"scalafix" -> jvmOptions,
"scalafix_ng_server" -> jvmOptions
),
fork.in(Test, test) := true,
baseDirectory.in(test) := file("."),
javaOptions.in(test) +=
s"-Dscalafix.scalahost.pluginpath=${scalahostNscPluginPath.value}",
mainClass in assembly := Some("scalafix.cli.Cli"),
packMain := Map(
"scalafix" -> "scalafix.cli.Cli",
"scalafix_ng_server" -> "com.martiansoftware.nailgun.NGServer"
),
libraryDependencies ++= Seq(
"com.github.scopt" %% "scopt" % "3.5.0",
"com.github.alexarchambault" %% "case-app" % "1.1.3",
"com.martiansoftware" % "nailgun-server" % "0.9.1"
)
)
.dependsOn(core, `scalafix-testutils` % Test)
lazy val fatcli = project
.settings(
allSettings,
isFullCrossVersion,
moduleName := "scalafix-fatcli",
libraryDependencies += scalahostNsc
)
.dependsOn(cli)

lazy val publishedArtifacts = Seq(
publishLocal in `scalafix-nsc`,
Expand All @@ -264,8 +240,20 @@ lazy val `scalafix-sbt` = project
sbtPlugin := true,
// Doesn't work because we need to publish 2.11 and 2.12.
// scripted := scripted.dependsOn(publishedArtifacts: _*).evaluated,
scalaVersion := "2.10.6",
crossScalaVersions := Seq("2.10.6"),
testQuick := {
RunSbtCommand(
s"; very publishLocal " +
"; very scalafix-sbt/scripted sbt-scalafix/config"
)(state.value)
},
test := {
RunSbtCommand(
"; very publishLocal " +
"; very scalafix-sbt/scripted"
)(state.value)
},
scalaVersion := scala210,
crossScalaVersions := Seq(scala210),
moduleName := "sbt-scalafix",
scriptedLaunchOpts ++= Seq(
"-Dplugin.version=" + version.value,
Expand All @@ -290,7 +278,7 @@ lazy val `scalafix-tests` = project
.settings(
allSettings,
noPublish,
testQuick := {},
testQuick := {}, // these tests are slow.
parallelExecution in Test := true,
libraryDependencies ++= Seq(
ammonite
Expand Down Expand Up @@ -344,3 +332,33 @@ def exposePaths(projectName: String,
}
)
}

lazy val isFullCrossVersion = Seq(
crossVersion := CrossVersion.full
)

lazy val scalahostNscPluginPath = Def.task {
val files = update
.in(dummyScalahostProject)
.value
.allFiles
val path = files.find { file =>
val path = file.getAbsolutePath
path.endsWith(s"scalahost-nsc_${scalaVersion.value}.jar")
}.get
path.getAbsolutePath
}

// sbt makes it hard to do simple stuff like get the jar of a dependency.
lazy val dummyScalahostProject = project
.in(file("target/dummy"))
.settings(
allSettings,
description := "Just a project that has scalahost-nsc on the classpath.",
libraryDependencies += scalahostNsc
)

lazy val ciScalaVersion = sys.env.get("CI_SCALA_VERSION")
lazy val scala210 = "2.10.6"
lazy val scala211 = "2.11.8"
lazy val scala212 = "2.12.1"
Loading

0 comments on commit b3c2d16

Please sign in to comment.