Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ robolectric = "org.robolectric:robolectric:4.16.1"
testParameterInjector = "com.google.testparameterinjector:test-parameter-injector:1.21"
assertk = "com.willowtreeapps.assertk:assertk:0.28.1"
coreLibraryDesugaring = "com.android.tools:desugar_jdk_libs:2.1.5"
ktfmt = "com.facebook:ktfmt:0.61"
ktfmt = "com.facebook:ktfmt:0.62"

[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,21 +60,19 @@ internal abstract class GenerateFormattedResources @Inject constructor() : Defau
// Example:
// values -> [strings.xml, dimens.xml]
// values-es -> [strings.xml]
val filesByConfiguration =
valuesFolders.associate { folder ->
ResourceFolder(folder.name) to
folder.listFiles().orEmpty().filter { it.extension.equals("xml", ignoreCase = true) }
}
val filesByConfiguration = valuesFolders.associate { folder ->
ResourceFolder(folder.name) to
folder.listFiles().orEmpty().filter { it.extension.equals("xml", ignoreCase = true) }
}

// Parse the files in each folder into the tokenized resources.
//
// Example:
// values -> [TokenizedResource(name=hi, ..), TokenizedResource(name=hello, ..)]
// values-es -> [TokenizedResource(name=hello, ..)]
val resourcesByConfiguration =
filesByConfiguration.mapValues { (_, files) ->
files.flatMap { it.checkedRead(::parseResources) }.map(::tokenizeResource)
}
val resourcesByConfiguration = filesByConfiguration.mapValues { (_, files) ->
files.flatMap { it.checkedRead(::parseResources) }.map(::tokenizeResource)
}

// Split the folder map into individual maps keyed on resource name.
//
Expand Down
45 changes: 22 additions & 23 deletions plugin/src/main/java/app/cash/paraphrase/plugin/ParaphrasePlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,34 +28,33 @@ import org.gradle.util.GradleVersion
* A Gradle plugin that generates type checked formatters for patterned Android string resources.
*/
public class ParaphrasePlugin : Plugin<Project> {
override fun apply(target: Project): Unit =
target.run {
// If you update the minimum-supported Gradle version, check if the Kotlin api/language
// version
// can be bumped. See https://docs.gradle.org/current/userguide/compatibility.html#kotlin.
val gradleMinimum = GradleVersion.version("9.0")
val gradleCurrent = GradleVersion.current()
require(gradleCurrent >= gradleMinimum) {
"Plugin requires $gradleMinimum or newer. Found $gradleCurrent"
}
override fun apply(target: Project): Unit = target.run {
// If you update the minimum-supported Gradle version, check if the Kotlin api/language
// version
// can be bumped. See https://docs.gradle.org/current/userguide/compatibility.html#kotlin.
val gradleMinimum = GradleVersion.version("9.0")
val gradleCurrent = GradleVersion.current()
require(gradleCurrent >= gradleMinimum) {
"Plugin requires $gradleMinimum or newer. Found $gradleCurrent"
}

addDependencies()
extensions.getByType(AndroidComponentsExtension::class.java).onVariants { variant ->
registerGenerateFormattedResourcesTask(
sources = variant.sources,
name = variant.name,
namespace = variant.namespace,
)

addDependencies()
extensions.getByType(AndroidComponentsExtension::class.java).onVariants { variant ->
(variant as? HasAndroidTest)?.androidTest?.let { androidTest ->
registerGenerateFormattedResourcesTask(
sources = variant.sources,
name = variant.name,
namespace = variant.namespace,
sources = androidTest.sources,
name = androidTest.name,
namespace = androidTest.namespace,
)

(variant as? HasAndroidTest)?.androidTest?.let { androidTest ->
registerGenerateFormattedResourcesTask(
sources = androidTest.sources,
name = androidTest.name,
namespace = androidTest.namespace,
)
}
}
}
}

private fun Project.addDependencies() {
val isInternal = properties["app.cash.paraphrase.internal"].toString() == "true"
Expand Down