11package org.scoverage
22
33import 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
56import org.gradle.api.provider.ListProperty
67import 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
1312import scoverage.report.CoverageAggregator
1413
1514import static org.gradle.api.tasks.PathSensitivity.RELATIVE
@@ -21,17 +20,14 @@ class ScoverageAggregate extends DefaultTask {
2120
2221 @InputFiles
2322 @PathSensitive (RELATIVE )
24- final Property< FileCollection > sources = project. objects. property( FileCollection )
23+ final ConfigurableFileCollection sources = project. objects. fileCollection( )
2524
2625 @OutputDirectory
2726 final Property<File > reportDir = project. objects. property(File )
2827
2928 @Input
3029 final ListProperty<File > dirsToAggregateFrom = project. objects. listProperty(File )
3130
32- @Input
33- final Property<Boolean > deleteReportsOnAggregation = project. objects. property(Boolean )
34-
3531 @Input
3632 final Property<String > sourceEncoding = project. objects. property(String )
3733
@@ -51,24 +47,52 @@ class ScoverageAggregate extends DefaultTask {
5147
5248 @TaskAction
5349 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()
5781
5882 def dirs = []
59- dirs. addAll(dirsToAggregateFrom. get())
83+ dirs. addAll(getParameters() . dirsToAggregateFrom. get())
6084 def coverage = CoverageAggregator . aggregate(dirs. unique() as File [])
6185
6286 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(),
6690 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()
7296 )
7397 }
7498 }
0 commit comments