|
| 1 | +package ftl.environment |
| 2 | + |
| 3 | +import com.google.api.services.testing.model.AndroidVersion |
| 4 | +import com.google.api.services.testing.model.Date |
| 5 | +import ftl.reports.api.twoDigitString |
| 6 | +import ftl.util.applyColorsUsing |
| 7 | +import ftl.util.buildTable |
| 8 | + |
| 9 | +fun List<AndroidVersion>.asPrintableTable() = createTestEnvironmentInfo().createAndroidSoftwareVersionsTable() |
| 10 | + |
| 11 | +private fun List<AndroidVersion>.createTestEnvironmentInfo() = |
| 12 | + fold(mutableMapOf<String, MutableList<String>>()) { softwareInfo, softwareVersion -> |
| 13 | + softwareInfo.apply { |
| 14 | + getOrCreateList(OS_VERSION_ID).add(softwareVersion.id.orUnknown()) |
| 15 | + getOrCreateList(VERSION).add(softwareVersion.versionString.orUnknown()) |
| 16 | + getOrCreateList(CODE_NAME).add(softwareVersion.codeName.orUnknown()) |
| 17 | + getOrCreateList(API_LEVEL).add(softwareVersion.apiLevel?.toString().orUnknown()) |
| 18 | + getOrCreateList(RELEASE_DATE).add(softwareVersion.releaseDate.printableReleaseDate()) |
| 19 | + getOrCreateList(TAGS).add(softwareVersion.tags.orEmpty().joinToString()) |
| 20 | + } |
| 21 | + } |
| 22 | + |
| 23 | +private fun Date?.printableReleaseDate() = |
| 24 | + if (this == null || year == null || month == null || day == null) "UNKNOWN" |
| 25 | + else "$year-${month.twoDigitString()}-${day.twoDigitString()}" |
| 26 | + |
| 27 | +private fun TestEnvironmentInfo.createAndroidSoftwareVersionsTable() = buildTable( |
| 28 | + createTableColumnFor(OS_VERSION_ID), |
| 29 | + createTableColumnFor(VERSION), |
| 30 | + createTableColumnFor(CODE_NAME), |
| 31 | + createTableColumnFor(API_LEVEL), |
| 32 | + createTableColumnFor(RELEASE_DATE), |
| 33 | + createTableColumnFor(TAGS).applyColorsUsing(tagToSystemOutColorMapper) |
| 34 | +) |
| 35 | + |
| 36 | +const val VERSION = "VERSION" |
| 37 | +const val CODE_NAME = "CODE_NAME" |
| 38 | +const val API_LEVEL = "API_LEVEL" |
| 39 | +const val RELEASE_DATE = "RELEASE_DATE" |
0 commit comments