@@ -22,6 +22,9 @@ import SwiftJavaLib
22
22
import JavaKitConfigurationShared
23
23
import JavaKitShared
24
24
import _Subprocess
25
+ import System
26
+
27
+ typealias Configuration = JavaKitConfigurationShared . Configuration
25
28
26
29
extension SwiftJava {
27
30
struct ResolveCommand : SwiftJavaBaseAsyncParsableCommand , HasCommonOptions , HasCommonJVMOptions {
@@ -137,37 +140,39 @@ extension SwiftJava.ResolveCommand {
137
140
138
141
try ! printGradleProject ( directory: resolverDir, dependencies: dependencies)
139
142
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
+ }
158
170
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) )
164
172
} 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+ " )
168
175
}
169
-
170
- return String ( classpathOutput. dropFirst ( SwiftJavaClasspathPrefix . count) )
171
176
}
172
177
173
178
func printGradleProject( directory: URL , dependencies: [ JavaDependencyDescriptor ] ) throws {
0 commit comments