@@ -22,6 +22,9 @@ import SwiftJavaLib
2222import JavaKitConfigurationShared
2323import JavaKitShared
2424import _Subprocess
25+ import System
26+
27+ typealias Configuration = JavaKitConfigurationShared . Configuration
2528
2629extension SwiftJava {
2730 struct ResolveCommand : SwiftJavaBaseAsyncParsableCommand , HasCommonOptions , HasCommonJVMOptions {
@@ -137,37 +140,39 @@ extension SwiftJava.ResolveCommand {
137140
138141 try ! printGradleProject ( directory: resolverDir, dependencies: dependencies)
139142
140- let process = try ! await Subprocess . run (
141- . at( . init( resolverDir. appendingPathComponent ( " gradlew " ) . path) ) ,
142- arguments: [
143- " --no-daemon " ,
144- " --rerun-tasks " ,
145- " \( printRuntimeClasspathTaskName) " ,
146- ] ,
147- workingDirectory: . init( platformString: resolverDir. path)
148- )
149-
150- let outString = String (
151- data: process. standardOutput,
152- encoding: . utf8
153- )
154- let errString = String (
155- data: process. standardError,
156- encoding: . utf8
157- )
143+ if #available( macOS 15 , * ) {
144+ let process = try ! await _Subprocess. run (
145+ . path( FilePath ( resolverDir. appendingPathComponent ( " gradlew " ) . path) ) ,
146+ arguments: [
147+ " --no-daemon " ,
148+ " --rerun-tasks " ,
149+ " \( printRuntimeClasspathTaskName) " ,
150+ ] ,
151+ workingDirectory: FilePath ( resolverDir. path) ,
152+ // TODO: we could move to stream processing the outputs
153+ output: . string( limit: Int . max, encoding: UTF8 . self) , // Don't limit output, we know it will be reasonable size
154+ error: . string( limit: Int . max, encoding: UTF8 . self) // Don't limit output, we know it will be reasonable size
155+ )
156+
157+ let outString = process. standardOutput ?? " "
158+ let errString = process. standardError ?? " "
159+
160+ let classpathOutput : String
161+ if let found = outString. split ( separator: " \n " ) . first ( where: { $0. hasPrefix ( self . SwiftJavaClasspathPrefix) } ) {
162+ classpathOutput = String ( found)
163+ } else if let found = errString. split ( separator: " \n " ) . first ( where: { $0. hasPrefix ( self . SwiftJavaClasspathPrefix) } ) {
164+ classpathOutput = String ( found)
165+ } else {
166+ let suggestDisablingSandbox = " It may be that the Sandbox has prevented dependency fetching, please re-run with '--disable-sandbox'. "
167+ fatalError ( " Gradle output had no SWIFT_JAVA_CLASSPATH! \( suggestDisablingSandbox) . \n " +
168+ " Output was:<<< \( outString ?? " <empty> " ) >>>; Err was:<<< \( errString ?? " <empty> " ) >>> " )
169+ }
158170
159- let classpathOutput : String
160- if let found = outString? . split ( separator: " \n " ) . first ( where: { $0. hasPrefix ( self . SwiftJavaClasspathPrefix) } ) {
161- classpathOutput = String ( found)
162- } else if let found = errString? . split ( separator: " \n " ) . first ( where: { $0. hasPrefix ( self . SwiftJavaClasspathPrefix) } ) {
163- classpathOutput = String ( found)
171+ return String ( classpathOutput. dropFirst ( SwiftJavaClasspathPrefix . count) )
164172 } else {
165- let suggestDisablingSandbox = " It may be that the Sandbox has prevented dependency fetching, please re-run with '--disable-sandbox'. "
166- fatalError ( " Gradle output had no SWIFT_JAVA_CLASSPATH! \( suggestDisablingSandbox) . \n " +
167- " Output was:<<< \( outString ?? " <empty> " ) >>>; Err was:<<< \( errString ?? " <empty> " ) >>> " )
173+ // Subprocess is unavailable
174+ fatalError ( " Subprocess is unavailable yet required to execute `gradlew` subprocess. Please update to macOS 15+ " )
168175 }
169-
170- return String ( classpathOutput. dropFirst ( SwiftJavaClasspathPrefix . count) )
171176 }
172177
173178 func printGradleProject( directory: URL , dependencies: [ JavaDependencyDescriptor ] ) throws {
0 commit comments