@@ -26,6 +26,7 @@ import kotlin.time.toDuration
26
26
import org.gradle.api.DefaultTask
27
27
import org.gradle.api.Task
28
28
import org.gradle.api.file.DirectoryProperty
29
+ import org.gradle.api.file.FileSystemOperations
29
30
import org.gradle.api.file.RegularFileProperty
30
31
import org.gradle.api.provider.Property
31
32
import org.gradle.api.tasks.Input
@@ -34,6 +35,8 @@ import org.gradle.api.tasks.Internal
34
35
import org.gradle.api.tasks.Optional
35
36
import org.gradle.api.tasks.OutputFile
36
37
import org.gradle.api.tasks.TaskAction
38
+ import org.gradle.process.ExecOperations
39
+ import javax.inject.Inject
37
40
38
41
abstract class DataConnectExecutableDownloadTask : DefaultTask () {
39
42
@@ -47,6 +50,10 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
47
50
48
51
@get:OutputFile abstract val outputFile: RegularFileProperty
49
52
53
+ @get:Inject abstract val fileSystemOperations: FileSystemOperations
54
+
55
+ @get:Inject abstract val execOperations: ExecOperations
56
+
50
57
@TaskAction
51
58
fun run () {
52
59
val inputFile: File ? = inputFile.orNull?.asFile
@@ -62,7 +69,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
62
69
logger.info(" outputFile: {}" , outputFile)
63
70
64
71
logger.info(" Deleting build directory: {}" , buildDirectory)
65
- project.delete(buildDirectory )
72
+ buildDirectory.deleteRecursively( )
66
73
67
74
if (inputFile != = null && version != = null ) {
68
75
throw DataConnectGradleException (
@@ -74,7 +81,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
74
81
} else if (inputFile != = null ) {
75
82
runWithFile(inputFile = inputFile, outputFile = outputFile)
76
83
} else if (version != = null ) {
77
- downloadDataConnectExecutable(version, operatingSystem, outputFile)
84
+ downloadDataConnectExecutable(version, operatingSystem, outputFile, execOperations )
78
85
verifyOutputFile(outputFile, operatingSystem, version)
79
86
} else {
80
87
throw DataConnectGradleException (
@@ -184,7 +191,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
184
191
}
185
192
186
193
logger.info(" Copying {} to {}" , inputFile, outputFile)
187
- project .copy {
194
+ fileSystemOperations .copy {
188
195
it.from(inputFile)
189
196
it.into(outputFile.parentFile)
190
197
it.rename(Pattern .quote(inputFile.name), Pattern .quote(outputFile.name))
@@ -195,7 +202,8 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
195
202
fun Task.downloadDataConnectExecutable (
196
203
version : String ,
197
204
operatingSystem : OperatingSystem ,
198
- outputFile : File
205
+ outputFile : File ,
206
+ execOperations : ExecOperations
199
207
) {
200
208
val osName =
201
209
when (operatingSystem) {
@@ -208,7 +216,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
208
216
URL (" https://storage.googleapis.com/firemat-preview-drop/emulator/$downloadFileName " )
209
217
210
218
logger.info(" Downloading {} to {}" , url, outputFile)
211
- project.mkdir( outputFile.parentFile)
219
+ outputFile.parentFile.mkdirs( )
212
220
213
221
val connection = url.openConnection() as HttpURLConnection
214
222
connection.requestMethod = " GET"
@@ -251,7 +259,7 @@ abstract class DataConnectExecutableDownloadTask : DefaultTask() {
251
259
}
252
260
253
261
if (operatingSystem != OperatingSystem .Windows ) {
254
- project .exec { execSpec ->
262
+ execOperations .exec { execSpec ->
255
263
execSpec.run {
256
264
executable = " chmod"
257
265
args = listOf (" a+x" , outputFile.absolutePath)
0 commit comments