Javi
08/15/2024, 5:13 PMpublic fun mapVersion(transform: (GradleVersion) -> String) {
mapper.set(
object : VersionValueSource.Mapper {
override fun map(version: GradleVersion, gitData: GitData): String {
return transform(version)
}
},
)
}
But it is not working.
Action<GradleVersion> is not enough as I need to return a String and it only allows Unit.
Is there something similar to that Action but allowing changing the return type?Javi
08/15/2024, 5:16 PMCaused by: org.gradle.internal.snapshot.ValueSnapshottingException: Couldn't populate class com.javiersc.semver.project.gradle.plugin.SemverExtension$mapVersion$mapper$1Adam
08/15/2024, 5:29 PMorg.gradle.api.Transformer, but I don't think it will help with value snapshottingAdam
08/15/2024, 5:31 PMorg.gradle.api.provider.ValueSource?Javi
08/15/2024, 5:36 PMJavi
08/15/2024, 5:37 PMJavi
08/15/2024, 5:42 PMinternal val versionMapper: Property<VersionMapper> =
objects
.property<VersionMapper>()
.convention(VersionMapper { version -> version.toString() })
internal val versionAndGitMapper: Property<VersionAndGitMapper> =
objects
.property<VersionAndGitMapper>()
.convention(VersionAndGitMapper { version, _ -> version.toString() })
public fun mapVersion(transform: VersionMapper) {
versionMapper.set(transform)
}
public fun mapVersion(transform: VersionAndGitMapper) {
versionAndGitMapper.set(transform)
}Javi
08/15/2024, 5:42 PMJavi
08/15/2024, 5:45 PMTransformer instead of fun interfaces to ensure compatibility in GroovyJavi
08/15/2024, 5:47 PMTransformer I cannot have a lambda with multiple params, right?Adam
08/15/2024, 6:15 PMProviderFactory.of(), do they really work if you create them as a functional interface?Javi
08/15/2024, 6:29 PMJavi
08/15/2024, 6:30 PMproject.providers.of(VersionValueSource::class) { valueSourceSpec ->
val gitDir = project.provider { project.semverExtension.gitDir.get().asFile }
valueSourceSpec.parameters.versionMapper.set(project.semverExtension.versionMapper)
valueSourceSpec.parameters.versionAndGitMapper.set(Adam
08/15/2024, 6:33 PMJavi
08/18/2024, 2:04 PMTransformer is not serializable so it cannot be passed to the source params