* Remove @switch when it doesn't take effect * Use ActorRef.noSender * Minor tweaks to SchedulerSpec * Disambiguate TypedActor for Scala 3 * Bump ScalaTest to a version compatible with Scala 3 * Bump ScalaCheck * Disambiguate Event in SupervisorHierarchySpec * Scala 3 compatible EventBusSpec * Prevent private unused variables to be erased by Scala 3 * Bump mockito * Explicit actorRef2Scala import * restore original .scalafix.conf * Scala 3 compatible tailrec * Reminder to re add switch annotation in case * Move to nowarn instead of silencer * Bump to Scala 2.12.13 * Cross compatible annotations * fix docs generation * adapt the build for Scala 3 * fix errors but bus * remove more SerialVersion from trait * scalacheck only from scalatest * cross-compile akka-actor-tests * restore cross-compilation * early initializers workaround * scalacheck switch * cross compatible FSM.State class * cross compatible LARS spec * Change results to pass LineNumberSpec * fix stackoverflow in AsyncDnsResolverIntegrationSpec * FSM.State unapply * fix Scala 2.13 mima * SerialVersionRemover compiler plugin * removed unused nowarns
90 lines
2.9 KiB
Scala
90 lines
2.9 KiB
Scala
/*
|
|
* Copyright (C) 2019-2021 Lightbend Inc. <https://www.lightbend.com>
|
|
*/
|
|
|
|
package akka
|
|
|
|
import java.io.File
|
|
|
|
import com.typesafe.config.ConfigFactory
|
|
import sbt.internal.sbtscalafix.Compat
|
|
|
|
class ProjectFileIgnoreSupport(ignoreConfigFile: File, descriptor: String) {
|
|
private val stdoutLogger = Compat.ConsoleLogger(System.out)
|
|
|
|
private val javaSourceDirectories = Set("java", Jdk9.JAVA_SOURCE_DIRECTORY, Jdk9.JAVA_TEST_SOURCE_DIRECTORY)
|
|
|
|
private val scalaSourceDirectories = Set("scala", Jdk9.SCALA_SOURCE_DIRECTORY, Jdk9.SCALA_TEST_SOURCE_DIRECTORY)
|
|
|
|
private lazy val ignoreConfig = {
|
|
require(
|
|
ignoreConfigFile.exists(),
|
|
s"Expected ignore configuration for $descriptor at ${ignoreConfigFile.getAbsolutePath} but was missing")
|
|
ConfigFactory.parseFile(ignoreConfigFile)
|
|
}
|
|
|
|
private lazy val ignoredFiles: Set[String] = {
|
|
import scala.collection.JavaConverters._
|
|
stdoutLogger.debug(s"Loading ignored-files from $ignoreConfigFile:[${ignoreConfig.origin().url().toURI.getPath}]")
|
|
ignoreConfig.getStringList("ignored-files").asScala.toSet
|
|
}
|
|
|
|
private lazy val ignoredPackages: Set[String] = {
|
|
import scala.collection.JavaConverters._
|
|
stdoutLogger.debug(
|
|
s"Loading ignored-packages from $ignoreConfigFile:[${ignoreConfig.origin().url().toURI.getPath}]")
|
|
ignoreConfig.getStringList("ignored-packages").asScala.toSet
|
|
}
|
|
|
|
def isIgnoredByFileOrPackages(file: File): Boolean =
|
|
isIgnoredByFile(file) || isIgnoredByPackages(file)
|
|
|
|
private def isIgnoredByFile(file: File): Boolean = {
|
|
val ignoredByFile = ignoredFiles(file.getName)
|
|
if (ignoredByFile) {
|
|
stdoutLogger.debug(s"$descriptor ignored file with file name:${file.getName} file:[${file.toPath}]")
|
|
}
|
|
ignoredByFile
|
|
}
|
|
|
|
private def isIgnoredByPackages(file: File): Boolean = {
|
|
val ignoredByPackages = ignoredPackages.exists(pkg => {
|
|
getPackageName(file.toURI.toString) match {
|
|
case Some(packageName) =>
|
|
val ignored = packageName.startsWith(pkg)
|
|
if (ignored) {
|
|
stdoutLogger.debug(
|
|
s"$descriptor ignored file with pkg:$pkg for package:$packageName file:[${file.toPath}] ")
|
|
}
|
|
ignored
|
|
case None => false
|
|
}
|
|
})
|
|
ignoredByPackages
|
|
}
|
|
|
|
private def getPackageName(fileName: String): Option[String] = {
|
|
def getPackageName0(sourceDirectories: Set[String]): String = {
|
|
import java.io.{ File => JFile }
|
|
val packageName = fileName
|
|
.split(JFile.separatorChar)
|
|
.dropWhile(part => !sourceDirectories(part))
|
|
.drop(1)
|
|
.dropRight(1)
|
|
.mkString(".")
|
|
packageName
|
|
}
|
|
|
|
fileName.split('.').lastOption match {
|
|
case Some(fileType) =>
|
|
fileType match {
|
|
case "java" =>
|
|
Option(getPackageName0(javaSourceDirectories))
|
|
case "scala" =>
|
|
Option(getPackageName0(scalaSourceDirectories))
|
|
case _ => None
|
|
}
|
|
case None => None
|
|
}
|
|
}
|
|
}
|