Skip to content

Commit

Permalink
Support exclusion of certain projects from analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
Denis Mikhaylov committed Aug 5, 2024
1 parent 8655e7f commit 8d40c18
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 5 deletions.
10 changes: 7 additions & 3 deletions src/main/scala/com/elarib/PartialSbtPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package com.elarib

import com.elarib.model.{ChangeGetter, PartialSbParser}
import org.apache.logging.log4j.LogManager
import sbt.Keys._
import sbt.*
import sbt.Keys.*
import sbt.internal.BuildDependencies.DependencyMap
import sbt._

object BuildKeys {
val partialSbtExcludedFiles = sbt.settingKey[Seq[sbt.File]]("Files that should be excluded from analysis.")
val partialSbtExcludedProject: SettingKey[Unit] = sbt.settingKey[Unit]("Exclude project from analysis.")
}

object PartialSbtPlugin extends AutoPlugin {
Expand Down Expand Up @@ -50,6 +51,7 @@ object PartialSbtPlugin extends AutoPlugin {
st
}),
commands += Command("changedProjects")(_ => PartialSbParser.changeGetterParser)((st, changeGetter) => {

val changedProjects: Seq[ResolvedProject] =
findChangedModules(changeGetter)(
baseDirectory.value,
Expand Down Expand Up @@ -104,7 +106,9 @@ object PartialSbtPlugin extends AutoPlugin {

val modulesToBuild: Seq[ResolvedProject] = modulesWithPath
.filter { case (_, resolvedProject) =>
diffsFiles.exists(file => file.getAbsolutePath.contains(resolvedProject.base.getAbsolutePath))
val projectIsIncludedInAnalysis = !resolvedProject.settings.exists(_.key.key == BuildKeys.partialSbtExcludedProject.key)
val projectFilesWereChanged = diffsFiles.exists(file => file.getAbsolutePath.contains(resolvedProject.base.getAbsolutePath))
projectIsIncludedInAnalysis && projectFilesWereChanged
}
.flatMap { case (projectRef, resolvedProject) =>
reverseDependencyMap
Expand Down
1 change: 1 addition & 0 deletions src/sbt-test/test-projects/multi-module-project/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ lazy val thirdTool = sbt
.Project("tool-3", service / "tool-3")
.dependsOn(firstLib, secondLib)
.settings(settings("tool-3"))
.settings(com.elarib.BuildKeys.partialSbtExcludedProject := ())

//services
lazy val firstService = sbt
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
6 projects have been changed
lib-1
service-1
service-3
service-4
tool-1
tool-3
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ lib-1
lib-2
service-1
service-2
service-3
service-4
tool-1
tool-2
Expand Down

0 comments on commit 8d40c18

Please sign in to comment.