@@ -5,23 +5,26 @@ package com.autonomousapps.jvm.projects
55import com.autonomousapps.AbstractProject
66import com.autonomousapps.kit.GradleProject
77import com.autonomousapps.kit.Source
8- import com.autonomousapps.kit.SourceType
98import com.autonomousapps.kit.gradle.Dependency
109import com.autonomousapps.kit.gradle.Plugin
1110import com.autonomousapps.kit.gradle.dependencies.Plugins
11+ import com.autonomousapps.model.Advice
1212import com.autonomousapps.model.ProjectAdvice
1313
14- import static com.autonomousapps.AdviceHelper.actualProjectAdvice
15- import static com.autonomousapps.AdviceHelper.emptyProjectAdviceFor
14+ import static com.autonomousapps.AdviceHelper.*
15+ import static com.autonomousapps.kit.gradle.Dependency.api
1616import static com.autonomousapps.kit.gradle.Dependency.implementation
1717
1818final class BuildLogicProject extends AbstractProject {
1919
20- private static final Dependency DAGP = implementation(' com.autonomousapps.dependency-analysis:com.autonomousapps.dependency-analysis.gradle.plugin:3.9.0' )
20+ private static final Dependency DAGP = api(' com.autonomousapps.dependency-analysis:com.autonomousapps.dependency-analysis.gradle.plugin:3.9.0' )
21+ private static final String PROVIDES_DAGP = ' :provides-dagp'
2122
23+ private final boolean isDirect
2224 final GradleProject gradleProject
2325
24- BuildLogicProject () {
26+ BuildLogicProject (boolean isDirect ) {
27+ this . isDirect = isDirect
2528 this . gradleProject = build()
2629 }
2730
@@ -31,20 +34,34 @@ final class BuildLogicProject extends AbstractProject {
3134 s. sources = sources
3235 s. withBuildScript { bs ->
3336 bs. plugins(Plugin . javaGradle, Plugins . kotlinJvmNoVersion, Plugins . dependencyAnalysisNoVersion)
37+ bs. dependencies(dependencies())
38+ }
39+ }
40+ .withSubproject(PROVIDES_DAGP ) { s ->
41+ s. withBuildScript { bs ->
42+ bs. plugins(Plugin . javaLibrary)
3443 bs. dependencies(DAGP )
3544 }
3645 }
3746 .write()
3847 }
3948
49+ private Dependency dependencies () {
50+ if (isDirect) {
51+ DAGP
52+ } else {
53+ implementation(PROVIDES_DAGP )
54+ }
55+ }
56+
4057 private List<Source > sources = [
4158 Source . kotlin(
4259 ''' \
4360 package mutual.aid
4461
4562 import com.autonomousapps.DependencyAnalysisSubExtension
4663
47- class DagpConfigurer(private val dependencyAnalysis: DependencyAnalysisSubExtension)
64+ class DagpConfigurer(val dependencyAnalysis: DependencyAnalysisSubExtension)
4865 ''' . stripIndent()
4966 ). build()
5067 ]
@@ -53,7 +70,20 @@ final class BuildLogicProject extends AbstractProject {
5370 return actualProjectAdvice(gradleProject)
5471 }
5572
56- final Set<ProjectAdvice > expectedBuildHealth = [
57- emptyProjectAdviceFor(' :conventions' ),
58- ]
73+ private Set<Advice > conventionsAdvice () {
74+ if (isDirect) {
75+ []
76+ } else {
77+ [
78+ Advice . ofAdd(moduleCoordinates(DAGP ), ' api' ),
79+ Advice . ofRemove(projectCoordinates(PROVIDES_DAGP ), ' implementation' )
80+ ]
81+ }
82+ }
83+
84+ final Set<ProjectAdvice > expectedBuildHealth () {
85+ [
86+ projectAdviceForDependencies(' :conventions' , conventionsAdvice()),
87+ ]
88+ }
5989}
0 commit comments