From 4066073bbe173c42d618b457a53a1ae68c1e20eb Mon Sep 17 00:00:00 2001 From: Oleg Golberg Date: Fri, 12 Mar 2021 11:17:40 -0500 Subject: [PATCH] urlencode the extensions classpath to make it portable --- .../kotlin/com/toasttab/protokt/gradle/ProtobufBuild.kt | 4 +++- .../com/toasttab/protokt/codegen/protoc/ProtocolContext.kt | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/toasttab/protokt/gradle/ProtobufBuild.kt b/buildSrc/src/main/kotlin/com/toasttab/protokt/gradle/ProtobufBuild.kt index 6596e5960..64f170308 100644 --- a/buildSrc/src/main/kotlin/com/toasttab/protokt/gradle/ProtobufBuild.kt +++ b/buildSrc/src/main/kotlin/com/toasttab/protokt/gradle/ProtobufBuild.kt @@ -24,6 +24,8 @@ import com.google.protobuf.gradle.protobuf import com.google.protobuf.gradle.protoc import com.google.protobuf.gradle.remove import java.io.File +import java.net.URLEncoder +import java.nio.charset.StandardCharsets import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.gradle.api.plugins.JavaPluginConvention @@ -84,7 +86,7 @@ private fun extraClasspath(project: Project, task: GenerateProtoTask): String { extensions += project.configurations.getByName(TEST_EXTENSIONS) } - return extensions.asPath.replace(':', ';') + return extensions.joinToString(";") { URLEncoder.encode(it.path, StandardCharsets.UTF_8) } } private fun configureSources(project: Project, generatedSourcesPath: String) { diff --git a/protokt-codegen/src/main/kotlin/com/toasttab/protokt/codegen/protoc/ProtocolContext.kt b/protokt-codegen/src/main/kotlin/com/toasttab/protokt/codegen/protoc/ProtocolContext.kt index a229e3416..25d0f6570 100644 --- a/protokt-codegen/src/main/kotlin/com/toasttab/protokt/codegen/protoc/ProtocolContext.kt +++ b/protokt-codegen/src/main/kotlin/com/toasttab/protokt/codegen/protoc/ProtocolContext.kt @@ -22,13 +22,18 @@ import com.toasttab.protokt.gradle.KOTLIN_EXTRA_CLASSPATH import com.toasttab.protokt.gradle.ONLY_GENERATE_GRPC import com.toasttab.protokt.gradle.RESPECT_JAVA_PACKAGE import com.toasttab.protokt.util.getProtoktVersion +import java.net.URLDecoder +import java.nio.charset.StandardCharsets class ProtocolContext( val fdp: FileDescriptorProto, val allPackagesByTypeName: Map, params: Map ) { - val classpath = params.getOrDefault(KOTLIN_EXTRA_CLASSPATH, "").split(";") + val classpath = params.getOrDefault(KOTLIN_EXTRA_CLASSPATH, "").split(";").map { + URLDecoder.decode(it, StandardCharsets.UTF_8) + } + val respectJavaPackage = respectJavaPackage(params) val generateGrpc = params.getValue(GENERATE_GRPC).toBoolean() val onlyGenerateGrpc = params.getValue(ONLY_GENERATE_GRPC).toBoolean()