diff --git a/test_runner/src/main/kotlin/ftl/api/Locale.kt b/test_runner/src/main/kotlin/ftl/api/Locale.kt index a82aaf49f2..1ae7cdfc37 100644 --- a/test_runner/src/main/kotlin/ftl/api/Locale.kt +++ b/test_runner/src/main/kotlin/ftl/api/Locale.kt @@ -13,7 +13,8 @@ data class Locale( data class Identity( val projectId: String, - val platform: Platform + val platform: Platform, + val locale: String? = null, ) interface Fetch : (Identity) -> List diff --git a/test_runner/src/main/kotlin/ftl/domain/DescribeAndroidLocales.kt b/test_runner/src/main/kotlin/ftl/domain/DescribeAndroidLocales.kt index e575f5b519..8487243bd8 100644 --- a/test_runner/src/main/kotlin/ftl/domain/DescribeAndroidLocales.kt +++ b/test_runner/src/main/kotlin/ftl/domain/DescribeAndroidLocales.kt @@ -5,7 +5,7 @@ import ftl.api.Locale import ftl.api.Platform import ftl.api.fetchLocales import ftl.args.AndroidArgs -import ftl.environment.getLocaleDescription +import ftl.presentation.cli.firebase.test.locale.getLocaleDescription import ftl.run.exception.FlankConfigurationError import java.nio.file.Paths diff --git a/test_runner/src/main/kotlin/ftl/domain/DescribeAndroidTestEnvironment.kt b/test_runner/src/main/kotlin/ftl/domain/DescribeAndroidTestEnvironment.kt index 0c7cfb77b6..c24ae1a3c6 100644 --- a/test_runner/src/main/kotlin/ftl/domain/DescribeAndroidTestEnvironment.kt +++ b/test_runner/src/main/kotlin/ftl/domain/DescribeAndroidTestEnvironment.kt @@ -14,6 +14,7 @@ import ftl.args.AndroidArgs import ftl.environment.android.toCliTable import ftl.environment.common.toCliTable import ftl.environment.toCliTable +import ftl.presentation.cli.firebase.test.locale.toCliTable import java.nio.file.Paths interface DescribeAndroidTestEnvironment { diff --git a/test_runner/src/main/kotlin/ftl/domain/DescribeIosLocales.kt b/test_runner/src/main/kotlin/ftl/domain/DescribeIosLocales.kt index 7ad05b9569..e78c40e1a4 100644 --- a/test_runner/src/main/kotlin/ftl/domain/DescribeIosLocales.kt +++ b/test_runner/src/main/kotlin/ftl/domain/DescribeIosLocales.kt @@ -1,22 +1,23 @@ package ftl.domain -import flank.common.log import ftl.api.Locale.Identity import ftl.api.Platform import ftl.api.fetchLocales import ftl.args.IosArgs -import ftl.environment.getLocaleDescription +import ftl.presentation.Output import ftl.run.exception.FlankConfigurationError +import ftl.run.exception.FlankGeneralError import java.nio.file.Paths -interface DescribeIosLocales { +interface DescribeIosLocales : Output { val locale: String val configPath: String } fun DescribeIosLocales.invoke() { if (locale.isBlank()) throw FlankConfigurationError("Argument LOCALE must be specified.") - log( - fetchLocales(Identity(IosArgs.loadOrDefault(Paths.get(configPath)).project, Platform.IOS)).getLocaleDescription(locale) - ) + + fetchLocales(Identity(IosArgs.loadOrDefault(Paths.get(configPath)).project, Platform.IOS, locale)).find { + it.id == locale + }?.out() ?: throw FlankGeneralError("ERROR: '$locale' is not a valid locale") } diff --git a/test_runner/src/main/kotlin/ftl/domain/DescribeIosTestEnvironment.kt b/test_runner/src/main/kotlin/ftl/domain/DescribeIosTestEnvironment.kt index ca10e57819..2d7c45ff40 100644 --- a/test_runner/src/main/kotlin/ftl/domain/DescribeIosTestEnvironment.kt +++ b/test_runner/src/main/kotlin/ftl/domain/DescribeIosTestEnvironment.kt @@ -14,6 +14,7 @@ import ftl.client.google.IosCatalog import ftl.environment.common.toCliTable import ftl.environment.ios.toCliTable import ftl.environment.toCliTable +import ftl.presentation.cli.firebase.test.locale.toCliTable import java.nio.file.Paths interface DescribeIosTestEnvironment { diff --git a/test_runner/src/main/kotlin/ftl/domain/ListIosLocales.kt b/test_runner/src/main/kotlin/ftl/domain/ListIosLocales.kt index 9050b19717..191f7c3732 100644 --- a/test_runner/src/main/kotlin/ftl/domain/ListIosLocales.kt +++ b/test_runner/src/main/kotlin/ftl/domain/ListIosLocales.kt @@ -5,7 +5,7 @@ import ftl.api.Locale.Identity import ftl.api.Platform import ftl.api.fetchLocales import ftl.args.IosArgs -import ftl.environment.toCliTable +import ftl.presentation.cli.firebase.test.locale.toCliTable import java.nio.file.Paths interface ListIosLocales { diff --git a/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/android/locales/AndroidLocalesListCommand.kt b/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/android/locales/AndroidLocalesListCommand.kt index 5ec7526da7..69478bdd87 100644 --- a/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/android/locales/AndroidLocalesListCommand.kt +++ b/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/android/locales/AndroidLocalesListCommand.kt @@ -4,7 +4,7 @@ import ftl.api.Locale import ftl.config.FtlConstants import ftl.domain.ListAndroidLocales import ftl.domain.invoke -import ftl.environment.toCliTable +import ftl.presentation.cli.firebase.test.locale.toCliTable import ftl.presentation.outputLogger import ftl.presentation.throwUnknownType import picocli.CommandLine diff --git a/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/ios/configuration/IosLocalesDescribeCommand.kt b/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/ios/configuration/IosLocalesDescribeCommand.kt index 4d78c1a080..553043e94c 100644 --- a/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/ios/configuration/IosLocalesDescribeCommand.kt +++ b/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/ios/configuration/IosLocalesDescribeCommand.kt @@ -1,10 +1,15 @@ package ftl.presentation.cli.firebase.test.ios.configuration +import ftl.api.Locale import ftl.config.FtlConstants import ftl.domain.DescribeIosLocales import ftl.domain.invoke +import ftl.presentation.cli.firebase.test.locale.prepareDescription +import ftl.presentation.outputLogger +import ftl.presentation.throwUnknownType import picocli.CommandLine +@Suppress("UNCHECKED_CAST") @CommandLine.Command( name = "describe", headerHeading = "", @@ -37,5 +42,12 @@ class IosLocalesDescribeCommand : ) override var configPath: String = FtlConstants.defaultIosConfig + override val out = outputLogger { + when (this) { + is Locale -> prepareDescription() + else -> throwUnknownType() + } + } + override fun run() = invoke() } diff --git a/test_runner/src/main/kotlin/ftl/environment/ListLocales.kt b/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/locale/ListLocales.kt similarity index 82% rename from test_runner/src/main/kotlin/ftl/environment/ListLocales.kt rename to test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/locale/ListLocales.kt index 3e146e8702..964232a922 100644 --- a/test_runner/src/main/kotlin/ftl/environment/ListLocales.kt +++ b/test_runner/src/main/kotlin/ftl/presentation/cli/firebase/test/locale/ListLocales.kt @@ -1,6 +1,11 @@ -package ftl.environment +package ftl.presentation.cli.firebase.test.locale import ftl.api.Locale +import ftl.environment.TAGS +import ftl.environment.TestEnvironmentInfo +import ftl.environment.createTableColumnFor +import ftl.environment.getOrCreateList +import ftl.environment.tagToSystemOutColorMapper import ftl.run.exception.FlankGeneralError import ftl.util.applyColorsUsing import ftl.util.buildTable @@ -21,7 +26,7 @@ fun TestEnvironmentInfo.createLocalesTable() = buildTable( createTableColumnFor(LOCALE), createTableColumnFor(NAME), createTableColumnFor(REGION), - createTableColumnFor(ftl.environment.TAGS).applyColorsUsing(tagToSystemOutColorMapper) + createTableColumnFor(TAGS).applyColorsUsing(tagToSystemOutColorMapper) ) private const val LOCALE = "LOCALE" @@ -33,9 +38,9 @@ fun List.getLocaleDescription(localeId: String) = private fun List.findLocales(localeId: String) = find { it.id == localeId } -private fun Locale.prepareDescription() = """ - id: $id - name: $name +fun Locale.prepareDescription() = """ +id: $id +name: $name """.trimIndent().addRegionIfExist(region).addTagsIfExists(this) private fun String.addRegionIfExist(region: String?) = diff --git a/test_runner/src/test/kotlin/ftl/android/AndroidCatalogTest.kt b/test_runner/src/test/kotlin/ftl/android/AndroidCatalogTest.kt index 3b43448a86..2c08ba654d 100644 --- a/test_runner/src/test/kotlin/ftl/android/AndroidCatalogTest.kt +++ b/test_runner/src/test/kotlin/ftl/android/AndroidCatalogTest.kt @@ -9,7 +9,7 @@ import ftl.api.fetchDeviceModelAndroid import ftl.api.fetchLocales import ftl.client.google.AndroidCatalog import ftl.environment.android.toCliTable -import ftl.environment.toCliTable +import ftl.presentation.cli.firebase.test.locale.toCliTable import ftl.test.util.FlankTestRunner import io.mockk.every import io.mockk.mockk diff --git a/test_runner/src/test/kotlin/ftl/ios/IosCatalogTest.kt b/test_runner/src/test/kotlin/ftl/ios/IosCatalogTest.kt index 38cf899d43..5097ef9a56 100644 --- a/test_runner/src/test/kotlin/ftl/ios/IosCatalogTest.kt +++ b/test_runner/src/test/kotlin/ftl/ios/IosCatalogTest.kt @@ -5,7 +5,7 @@ import ftl.api.Locale.Identity import ftl.api.Platform import ftl.api.fetchLocales import ftl.client.google.IosCatalog -import ftl.environment.toCliTable +import ftl.presentation.cli.firebase.test.locale.toCliTable import ftl.test.util.FlankTestRunner import org.junit.Test import org.junit.runner.RunWith