diff --git a/scalafix-sbt/src/main/scala/scalafix/sbt/ScalafixPlugin.scala b/scalafix-sbt/src/main/scala/scalafix/sbt/ScalafixPlugin.scala index 56cfb7a46..282afa509 100644 --- a/scalafix-sbt/src/main/scala/scalafix/sbt/ScalafixPlugin.scala +++ b/scalafix-sbt/src/main/scala/scalafix/sbt/ScalafixPlugin.scala @@ -229,15 +229,17 @@ object ScalafixPlugin extends AutoPlugin { Def.taskDyn { compile.all(filter).value // trigger compilation val classpath = classDirectory.all(filter).value.asPath - val directoriesToFix: Seq[File] = - unmanagedSourceDirectories.all(filter).value.flatten.collect { - case p if p.exists() => p.getAbsoluteFile - } + val sourcesToFix = for { + sources <- unmanagedSources.all(filter).value + source <- sources + if source.exists() + if canFix(source) + } yield source val options: Seq[String] = List("--classpath", classpath) ++ extraOptions scalafixTaskImpl( inputArgs, options, - directoriesToFix, + sourcesToFix, thisProject.value.id, streams.value ) @@ -285,13 +287,19 @@ object ScalafixPlugin extends AutoPlugin { ) } val finalArgs = args ++ files.map(_.getAbsolutePath) - val nonBaseArgs = finalArgs.filterNot(baseArgs).mkString(" ") + val nonBaseArgs = args.filterNot(baseArgs).mkString(" ") log.info(s"Running scalafix $nonBaseArgs") main.main(finalArgs.toArray) } } } + private def canFix(file: File): Boolean = { + val path = file.getPath + path.endsWith(".scala") || + path.endsWith(".sbt") + } + private[scalafix] implicit class XtensionFormatClasspath(paths: Seq[File]) { def asPath: String = paths.toIterator diff --git a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/build.sbt b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/build.sbt index 31c76466e..2c2ce76a4 100644 --- a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/build.sbt +++ b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/build.sbt @@ -9,6 +9,7 @@ inThisBuild( lazy val root = project .in(file(".")) .aggregate( + javaProject, customSourceroot, scala211, scala210, @@ -28,6 +29,9 @@ lazy val customSourceroot = project.settings( scalaVersion := Versions.scala212, scalafixSourceroot := sourceDirectory.value ) +lazy val javaProject = project.settings( + scalaVersion := Versions.scala212 +) TaskKey[Unit]("check") := { val s = streams.value diff --git a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/javaProject/src/main/java/example/Example.java b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/javaProject/src/main/java/example/Example.java new file mode 100644 index 000000000..43a7cbc7c --- /dev/null +++ b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/javaProject/src/main/java/example/Example.java @@ -0,0 +1,7 @@ +package example; + +class Foo { + public static void main(String[] args) { + System.out.println(args); + } +} diff --git a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/test b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/test index 8c80a20ab..4090cff97 100644 --- a/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/test +++ b/scalafix-sbt/src/sbt-test/sbt-scalafix/cross-build/test @@ -3,6 +3,7 @@ -> scalafixTest ProcedureSyntax > scalafix ProcedureSyntax > scalafixTest ProcedureSyntax +> javaProject/scalafix ProcedureSyntax # Should fail because 2.10 has no semanticdb # Other >2.10 projects should succeed -> scalafix