@@ -59,48 +59,7 @@ struct JExtractSwiftBuildToolPlugin: SwiftJavaPluginProtocol, BuildToolPlugin {
5959 let outputJavaDirectory = context. outputJavaDirectory
6060 let outputSwiftDirectory = context. outputSwiftDirectory
6161
62- /// Find the manifest files from other swift-java executions in any targets
63- /// this target depends on.
64- var dependentConfigFiles : [ ( String , URL ) ] = [ ]
65- func searchForConfigFiles( in target: any Target ) {
66- // log("Search for config files in target: \(target.name)")
67- let dependencyURL = URL ( filePath: target. directory. string)
68-
69- // Look for a config file within this target.
70- let dependencyConfigURL = dependencyURL
71- . appending ( path: SwiftJavaConfigFileName)
72- let dependencyConfigString = dependencyConfigURL
73- . path ( percentEncoded: false )
74-
75- if FileManager . default. fileExists ( atPath: dependencyConfigString) {
76- dependentConfigFiles. append ( ( target. name, dependencyConfigURL) )
77- }
78- }
79-
80- // Process direct dependencies of this target.
81- for dependency in target. dependencies {
82- switch dependency {
83- case . target( let target) :
84- // log("Dependency target: \(target.name)")
85- searchForConfigFiles ( in: target)
86-
87- case . product( let product) :
88- // log("Dependency product: \(product.name)")
89- for target in product. targets {
90- // log("Dependency product: \(product.name), target: \(target.name)")
91- searchForConfigFiles ( in: target)
92- }
93-
94- @unknown default :
95- break
96- }
97- }
98-
99- // Process indirect target dependencies.
100- for dependency in target. recursiveTargetDependencies {
101- // log("Recursive dependency target: \(dependency.name)")
102- searchForConfigFiles ( in: dependency)
103- }
62+ let dependentConfigFiles = searchForDependentConfigFiles ( in: target)
10463
10564 var arguments : [ String ] = [
10665 /*subcommand=*/" jextract " ,
@@ -172,5 +131,53 @@ struct JExtractSwiftBuildToolPlugin: SwiftJavaPluginProtocol, BuildToolPlugin {
172131 )
173132 ]
174133 }
134+
135+ /// Find the manifest files from other swift-java executions in any targets
136+ /// this target depends on.
137+ func searchForDependentConfigFiles( in target: any Target ) -> [ ( String , URL ) ] {
138+ var dependentConfigFiles = [ ( String, URL) ] ( )
139+
140+ func _searchForConfigFiles( in target: any Target ) {
141+ // log("Search for config files in target: \(target.name)")
142+ let dependencyURL = URL ( filePath: target. directory. string)
143+
144+ // Look for a config file within this target.
145+ let dependencyConfigURL = dependencyURL
146+ . appending ( path: SwiftJavaConfigFileName)
147+ let dependencyConfigString = dependencyConfigURL
148+ . path ( percentEncoded: false )
149+
150+ if FileManager . default. fileExists ( atPath: dependencyConfigString) {
151+ dependentConfigFiles. append ( ( target. name, dependencyConfigURL) )
152+ }
153+ }
154+
155+ // Process direct dependencies of this target.
156+ for dependency in target. dependencies {
157+ switch dependency {
158+ case . target( let target) :
159+ // log("Dependency target: \(target.name)")
160+ _searchForConfigFiles ( in: target)
161+
162+ case . product( let product) :
163+ // log("Dependency product: \(product.name)")
164+ for target in product. targets {
165+ // log("Dependency product: \(product.name), target: \(target.name)")
166+ _searchForConfigFiles ( in: target)
167+ }
168+
169+ @unknown default :
170+ break
171+ }
172+ }
173+
174+ // Process indirect target dependencies.
175+ for dependency in target. recursiveTargetDependencies {
176+ // log("Recursive dependency target: \(dependency.name)")
177+ _searchForConfigFiles ( in: dependency)
178+ }
179+
180+ return dependentConfigFiles
181+ }
175182}
176183
0 commit comments