1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 16:28:12 -07:00

Fix source includes.

This commit is contained in:
Cedric Beust 2016-02-17 07:11:32 -08:00
parent ef9bbe580b
commit 4e48838e04
2 changed files with 21 additions and 21 deletions

View file

@ -22,37 +22,32 @@ sealed class IFileSpec {
constructor(spec: String) : this(arrayListOf(spec)) constructor(spec: String) : this(arrayListOf(spec))
private fun isIncluded(includeMatchers: Glob, excludes: List<Glob>, rel: Path) : Boolean { private fun isIncluded(excludes: List<Glob>, rel: Path) : Boolean {
excludes.forEach { excludes.forEach {
if (it.matches(rel)) { if (it.matches(rel)) {
log(2, "Excluding ${rel.toFile()}") log(2, "Excluding ${rel.toFile()}")
return false return false
} }
} }
if (includeMatchers.matches(rel)) { log(2, "Including ${rel.toFile().absolutePath}")
log(2, "Including ${rel.toFile().absolutePath}") return true
return true
}
log(2, "Excluding ${rel.toFile()} (not matching any include pattern")
return false
} }
override fun toFiles(filePath: String, excludes: List<Glob>): List<File> { override fun toFiles(filePath: String, excludes: List<Glob>): List<File> {
val result = arrayListOf<File>() val result = arrayListOf<File>()
val includes = Glob(*spec.toTypedArray())
if (File(filePath).isDirectory) { if (File(filePath).isDirectory) {
Files.walkFileTree(Paths.get(filePath), object : SimpleFileVisitor<Path>() { Files.walkFileTree(Paths.get(filePath), object : SimpleFileVisitor<Path>() {
override public fun visitFile(path: Path, attrs: BasicFileAttributes): FileVisitResult { override public fun visitFile(path: Path, attrs: BasicFileAttributes): FileVisitResult {
val rel = Paths.get(filePath).relativize(path) val rel = Paths.get(filePath).relativize(path)
if (isIncluded(includes, excludes, rel)) { if (isIncluded(excludes, rel)) {
result.add(rel.toFile()) result.add(rel.toFile())
} }
return FileVisitResult.CONTINUE return FileVisitResult.CONTINUE
} }
}) })
} else { } else {
if (isIncluded(includes, excludes, Paths.get(filePath))) { if (isIncluded(excludes, Paths.get(filePath))) {
result.add(File(filePath)) result.add(File(filePath))
} }
} }

View file

@ -259,7 +259,7 @@ open class JvmCompilerPlugin @Inject constructor(
buildDirectory.mkdirs() buildDirectory.mkdirs()
val initialSourceDirectories = ArrayList<File>(sourceDirectories) val initialSourceDirectories = ArrayList<File>()
// Source directories from the contributors // Source directories from the contributors
initialSourceDirectories.addAll( initialSourceDirectories.addAll(
if (isTest) { if (isTest) {
@ -270,18 +270,23 @@ open class JvmCompilerPlugin @Inject constructor(
// Transform them with the interceptors, if any // Transform them with the interceptors, if any
val allSourceDirectories = if (isTest) { val allSourceDirectories = if (isTest) {
initialSourceDirectories initialSourceDirectories
} else { } else {
context.pluginInfo.sourceDirectoriesInterceptors.fold(initialSourceDirectories.toList(), context.pluginInfo.sourceDirectoriesInterceptors.fold(initialSourceDirectories.toList(),
{ sd, interceptor -> interceptor.intercept(project, context, sd) }) { sd, interceptor -> interceptor.intercept(project, context, sd) })
}.filter { }.filter {
File(project.directory, it.path).exists() File(project.directory, it.path).exists()
} }
// Now that we have all the source directories, find all the source files in them // Now that we have all the source directories, find all the source files in them
val sourceFiles = files.findRecursively(projectDirectory, allSourceDirectories,
{ file -> sourceSuffixes.any { file.endsWith(it) }}) val sourceFiles = if (allSourceDirectories.size > 0) {
.map { File(projectDirectory, it).path } files.findRecursively(projectDirectory, allSourceDirectories,
{ file -> sourceSuffixes.any { file.endsWith(it) } })
.map { File(projectDirectory, it).path }
} else {
emptyList()
}
// Special treatment if we are compiling Kotlin files and the project also has a java source // Special treatment if we are compiling Kotlin files and the project also has a java source
// directory. In this case, also pass that java source directory to the Kotlin compiler as is // directory. In this case, also pass that java source directory to the Kotlin compiler as is