blob: fa95722593d99617cf0f38da785c758857569958 [file] [log] [blame]
Jiayu Liu49b2d6b2022-04-06 16:49:09 +08001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20plugins {
Jiayu Liu6c002b62022-05-07 00:40:03 +080021 kotlin("jvm")
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080022 java
23 application
Jiayu Liu5b158382022-05-12 00:20:37 +080024 id("com.ncorti.ktfmt.gradle")
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080025}
26
dependabot[bot]5501e8f2025-09-05 16:37:40 -040027repositories { mavenCentral() }
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080028
Jiayu Liueb62fa82022-05-08 13:01:41 +080029val slf4jVersion: String by project
30val httpclientVersion: String by project
31val httpcoreVersion: String by project
32val logbackVersion: String by project
33val kotlinxCoroutinesJdk8Version: String by project
Jiayu Liu5fdfd0c2022-05-09 10:52:26 +080034val cliktVersion: String by project
Jiayu Liueb62fa82022-05-08 13:01:41 +080035
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080036dependencies {
37 implementation(platform("org.jetbrains.kotlin:kotlin-bom"))
38 implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
Jiayu Liu5fdfd0c2022-05-09 10:52:26 +080039 // clikt is used to drive command line parsing and validation
40 implementation("com.github.ajalt.clikt:clikt:$cliktVersion")
Jiayu Liueb62fa82022-05-08 13:01:41 +080041 implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$kotlinxCoroutinesJdk8Version")
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080042 implementation("org.apache.thrift:libthrift:INCLUDED")
Jiayu Liueb62fa82022-05-08 13:01:41 +080043 implementation("org.slf4j:slf4j-api:$slf4jVersion")
44 implementation("org.apache.httpcomponents:httpclient:$httpclientVersion")
45 implementation("org.apache.httpcomponents:httpcore:$httpcoreVersion")
Jiayu Liueb62fa82022-05-08 13:01:41 +080046 implementation("ch.qos.logback:logback-classic:$logbackVersion")
47 testImplementation("org.jetbrains.kotlin:kotlin-test")
48 testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080049}
50
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080051tasks {
52 application {
53 applicationName = "TestClient"
54 mainClass.set("org.apache.thrift.test.TestClientKt")
55 }
56
Jiayu Liu5b158382022-05-12 00:20:37 +080057 if (JavaVersion.current().isJava11Compatible) {
dependabot[bot]5501e8f2025-09-05 16:37:40 -040058 ktfmt { kotlinLangStyle() }
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080059 }
60
61 task<Exec>("compileThrift") {
dependabot[bot]5501e8f2025-09-05 16:37:40 -040062 val thriftBin =
63 if (hasProperty("thrift.compiler")) {
64 file(property("thrift.compiler")!!)
65 } else {
66 project.rootDir.resolve("../../compiler/cpp/thrift")
67 }
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080068 val outputDir = layout.buildDirectory.dir("generated-sources")
dependabot[bot]5501e8f2025-09-05 16:37:40 -040069 doFirst { mkdir(outputDir) }
70 commandLine =
71 listOf(
72 thriftBin.absolutePath,
73 "-gen",
74 "kotlin",
75 "-out",
76 outputDir.get().toString(),
77 project.rootDir.resolve("../../test/ThriftTest.thrift").absolutePath,
78 )
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080079 group = LifecycleBasePlugin.BUILD_GROUP
80 }
81
dependabot[bot]5501e8f2025-09-05 16:37:40 -040082 compileKotlin { dependsOn("compileThrift") }
Jiayu Liu49b2d6b2022-04-06 16:49:09 +080083}
84
dependabot[bot]5501e8f2025-09-05 16:37:40 -040085sourceSets["main"].java { srcDir(layout.buildDirectory.dir("generated-sources")) }