1
1
package org.scoverage
2
2
3
3
import org.gradle.api.DefaultTask
4
- import org.gradle.api.file.FileCollection
4
+ import org.gradle.api.file.ConfigurableFileCollection
5
+ import org.gradle.api.logging.Logging
5
6
import org.gradle.api.provider.ListProperty
6
7
import org.gradle.api.provider.Property
7
- import org.gradle.api.tasks.Input
8
- import org.gradle.api.tasks.InputFiles
9
- import org.gradle.api.tasks.Nested
10
- import org.gradle.api.tasks.OutputDirectory
11
- import org.gradle.api.tasks.PathSensitive
12
- import org.gradle.api.tasks.TaskAction
8
+ import org.gradle.api.provider.SetProperty
9
+ import org.gradle.api.tasks.*
10
+ import org.gradle.workers.WorkAction
11
+ import org.gradle.workers.WorkParameters
13
12
import scoverage.report.CoverageAggregator
14
13
15
14
import static org.gradle.api.tasks.PathSensitivity.RELATIVE
@@ -21,17 +20,14 @@ class ScoverageAggregate extends DefaultTask {
21
20
22
21
@InputFiles
23
22
@PathSensitive (RELATIVE )
24
- final Property< FileCollection > sources = project. objects. property( FileCollection )
23
+ final ConfigurableFileCollection sources = project. objects. fileCollection( )
25
24
26
25
@OutputDirectory
27
26
final Property<File > reportDir = project. objects. property(File )
28
27
29
28
@Input
30
29
final ListProperty<File > dirsToAggregateFrom = project. objects. listProperty(File )
31
30
32
- @Input
33
- final Property<Boolean > deleteReportsOnAggregation = project. objects. property(Boolean )
34
-
35
31
@Input
36
32
final Property<String > sourceEncoding = project. objects. property(String )
37
33
@@ -51,24 +47,52 @@ class ScoverageAggregate extends DefaultTask {
51
47
52
48
@TaskAction
53
49
def aggregate () {
54
- runner. run {
55
- reportDir. get(). deleteDir()
56
- reportDir. get(). mkdirs()
50
+ runner. run(AggregateAction . class) { parameters ->
51
+ parameters. sources. from(sources)
52
+ parameters. reportDir = reportDir
53
+ parameters. dirsToAggregateFrom = dirsToAggregateFrom
54
+ parameters. sourceEncoding = sourceEncoding
55
+ parameters. coverageOutputCobertura = coverageOutputCobertura
56
+ parameters. coverageOutputXML = coverageOutputXML
57
+ parameters. coverageOutputHTML = coverageOutputHTML
58
+ parameters. coverageDebug = coverageDebug
59
+ }
60
+ }
61
+
62
+ static interface Parameters extends WorkParameters {
63
+ ConfigurableFileCollection getSources ()
64
+ Property<File > getReportDir ()
65
+ ListProperty<File > getDirsToAggregateFrom ()
66
+ Property<String > getSourceEncoding ()
67
+ Property<Boolean > getCoverageOutputCobertura ()
68
+ Property<Boolean > getCoverageOutputXML ()
69
+ Property<Boolean > getCoverageOutputHTML ()
70
+ Property<Boolean > getCoverageDebug ()
71
+ }
72
+
73
+ static abstract class AggregateAction implements WorkAction<Parameters > {
74
+
75
+ @Override
76
+ void execute () {
77
+ def logger = Logging . getLogger(AggregateAction . class)
78
+
79
+ getParameters(). reportDir. get(). deleteDir()
80
+ getParameters(). reportDir. get(). mkdirs()
57
81
58
82
def dirs = []
59
- dirs. addAll(dirsToAggregateFrom. get())
83
+ dirs. addAll(getParameters() . dirsToAggregateFrom. get())
60
84
def coverage = CoverageAggregator . aggregate(dirs. unique() as File [])
61
85
62
86
if (coverage. nonEmpty()) {
63
- new ScoverageWriter (project . logger). write(
64
- sources . get() . getFiles(),
65
- reportDir. get(),
87
+ new ScoverageWriter (logger). write(
88
+ getParameters() . sources . getFiles(),
89
+ getParameters() . reportDir. get(),
66
90
coverage. get(),
67
- sourceEncoding. get(),
68
- coverageOutputCobertura. get(),
69
- coverageOutputXML. get(),
70
- coverageOutputHTML. get(),
71
- coverageDebug. get()
91
+ getParameters() . sourceEncoding. get(),
92
+ getParameters() . coverageOutputCobertura. get(),
93
+ getParameters() . coverageOutputXML. get(),
94
+ getParameters() . coverageOutputHTML. get(),
95
+ getParameters() . coverageDebug. get()
72
96
)
73
97
}
74
98
}
0 commit comments