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