-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAnalyticsCollector.gradle
48 lines (34 loc) · 1.44 KB
/
AnalyticsCollector.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import groovy.json.JsonBuilder
import java.nio.charset.StandardCharsets
import java.nio.file.Files
import java.nio.file.Paths
import java.nio.file.Path
class AnalyticsCollector{
private final String analyticsFilePath
private boolean hasUseKotlinPropertyInApp = false
private boolean hasKotlinRuntimeClasses = false
private AnalyticsCollector(String analyticsFilePath){
this.analyticsFilePath = analyticsFilePath
}
static AnalyticsCollector withOutputPath(String analyticsFilePath){
return new AnalyticsCollector(analyticsFilePath)
}
void markUseKotlinPropertyInApp(boolean useKotlin) {
hasUseKotlinPropertyInApp = useKotlin
}
void writeAnalyticsFile() {
def jsonBuilder = new JsonBuilder()
def kotlinUsageData = new Object()
kotlinUsageData.metaClass.hasUseKotlinPropertyInApp = hasUseKotlinPropertyInApp
kotlinUsageData.metaClass.hasKotlinRuntimeClasses = hasKotlinRuntimeClasses
jsonBuilder(kotlinUsage: kotlinUsageData)
def prettyJson = jsonBuilder.toPrettyString()
Path statisticsFilePath = Paths.get(analyticsFilePath)
if (Files.notExists(statisticsFilePath)) {
Files.createDirectories(statisticsFilePath.getParent())
Files.createFile(statisticsFilePath)
}
Files.write(statisticsFilePath, prettyJson.getBytes(StandardCharsets.UTF_8))
}
}
ext.AnalyticsCollector = AnalyticsCollector