1 /*
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 
<lambda>null20 plugins {
21     kotlin("jvm")
22     java
23     application
24     id("com.ncorti.ktfmt.gradle")
25 }
26 
<lambda>null27 repositories {
28     mavenCentral()
29 }
30 
31 val slf4jVersion: String by project
32 val httpclientVersion: String by project
33 val httpcoreVersion: String by project
34 val logbackVersion: String by project
35 val kotlinxCoroutinesJdk8Version: String by project
36 val cliktVersion: String by project
37 
<lambda>null38 dependencies {
39     implementation(platform("org.jetbrains.kotlin:kotlin-bom"))
40     implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
41     // clikt is used to drive command line parsing and validation
42     implementation("com.github.ajalt.clikt:clikt:$cliktVersion")
43     implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$kotlinxCoroutinesJdk8Version")
44     implementation("org.apache.thrift:libthrift:INCLUDED")
45     implementation("org.slf4j:slf4j-api:$slf4jVersion")
46     implementation("org.apache.httpcomponents:httpclient:$httpclientVersion")
47     implementation("org.apache.httpcomponents:httpcore:$httpcoreVersion")
48     implementation("ch.qos.logback:logback-classic:$logbackVersion")
49     testImplementation("org.jetbrains.kotlin:kotlin-test")
50     testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
51 }
52 
<lambda>null53 kotlin {
54     jvmToolchain {
55         (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
56     }
57 }
58 
<lambda>null59 tasks {
60     application {
61         applicationName = "TestClient"
62         mainClass.set("org.apache.thrift.test.TestClientKt")
63     }
64 
65     if (JavaVersion.current().isJava11Compatible) {
66         ktfmt {
67             kotlinLangStyle()
68         }
69     }
70 
71     task<Exec>("compileThrift") {
72         val thriftBin = if (hasProperty("thrift.compiler")) {
73             file(property("thrift.compiler"))
74         } else {
75             project.rootDir.resolve("../../compiler/cpp/thrift")
76         }
77         val outputDir = layout.buildDirectory.dir("generated-sources")
78         doFirst {
79             mkdir(outputDir)
80         }
81         commandLine = listOf(
82             thriftBin.absolutePath,
83             "-gen",
84             "kotlin",
85             "-out",
86             outputDir.get().toString(),
87             project.rootDir.resolve("../../test/ThriftTest.thrift").absolutePath
88         )
89         group = LifecycleBasePlugin.BUILD_GROUP
90     }
91 
92     compileKotlin {
93         dependsOn("compileThrift")
94     }
95 }
96 
<lambda>null97 sourceSets["main"].java {
98     srcDir(layout.buildDirectory.dir("generated-sources"))
99 }
100