blob: e31a051da4a912b57dbb5748b506155b8b1e4b0e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.openapitools.generator.gradle.plugin.tasks.GenerateTask
plugins {
alias(libs.plugins.openapiGenerator)
id 'idea'
}
apply from: "$rootDir/buildscripts/java-core.gradle"
apply from: "$rootDir/buildscripts/publishing.gradle"
apply from: "$rootDir/buildscripts/java-junit5.gradle"
apply from: "$rootDir/buildscripts/java-test-fixtures.gradle"
apply from: "$rootDir/buildscripts/java-integration-test.gradle"
description = 'ignite-cli'
configurations {
openapiSpec
}
dependencies {
annotationProcessor libs.picocli.annotation.processor
annotationProcessor libs.micronaut.inject.annotation.processor
annotationProcessor libs.micronaut.validation.annotation.processor
implementation project(':ignite-core')
implementation project(':ignite-client')
implementation project(':ignite-jdbc')
openapiSpec(project(path: ':ignite-rest-api', configuration: 'openapiSpec'))
implementation libs.tree.sitter
implementation libs.tree.sitter.sql
implementation libs.tree.sitter.json
implementation libs.fliptables
implementation libs.jline.core
implementation libs.jline.console
implementation libs.micronaut.inject
implementation libs.micronaut.validation
implementation libs.micronaut.runtime
implementation libs.micronaut.picocli
implementation libs.jansi.core
implementation libs.picocli.shell.jline3
implementation libs.picocli.core
implementation libs.jackson.databind
implementation libs.typesafe.config
implementation libs.slf4j.jdk14
implementation libs.gson.core
implementation libs.gson.fire
implementation libs.jsr305
implementation libs.okhttp.core
implementation libs.okhttp.logging
implementation libs.threetenbp
implementation libs.swagger.legacy.annotations
implementation libs.progressBar
testAnnotationProcessor libs.picocli.annotation.processor
testAnnotationProcessor libs.micronaut.inject.annotation.processor
testAnnotationProcessor libs.micronaut.validation.annotation.processor
testImplementation project(':ignite-runner')
testImplementation project(':ignite-schema')
testImplementation project(':ignite-core')
testImplementation project(':ignite-sql-engine')
testImplementation(testFixtures(project(":ignite-core")))
testImplementation libs.hamcrest.core
testImplementation libs.hamcrest.optional
testImplementation libs.mockito.junit
testImplementation libs.micronaut.junit5
testImplementation libs.micronaut.test
testImplementation libs.assertj.core
testImplementation libs.mock.server.netty
testImplementation libs.mock.server.junit
testImplementation libs.awaitility
testFixturesAnnotationProcessor libs.picocli.annotation.processor
testFixturesAnnotationProcessor libs.micronaut.inject.annotation.processor
testFixturesAnnotationProcessor libs.micronaut.validation.annotation.processor
testFixturesImplementation libs.micronaut.inject
testFixturesImplementation libs.micronaut.picocli
testFixturesImplementation libs.micronaut.junit5
testFixturesImplementation testFixtures(project(":ignite-core"))
integrationTestAnnotationProcessor libs.picocli.annotation.processor
integrationTestAnnotationProcessor libs.micronaut.inject.annotation.processor
integrationTestAnnotationProcessor libs.micronaut.validation.annotation.processor
integrationTestImplementation testFixtures(project)
integrationTestImplementation project(':ignite-api')
integrationTestImplementation project(':ignite-configuration-api')
integrationTestImplementation project(':ignite-runner')
integrationTestImplementation project(':ignite-schema')
integrationTestImplementation project(':ignite-sql-engine')
integrationTestImplementation testFixtures(project(":ignite-core"))
integrationTestImplementation testFixtures(project(":ignite-schema"))
integrationTestImplementation testFixtures(project(":ignite-api"))
integrationTestImplementation testFixtures(project(":ignite-runner"))
integrationTestImplementation libs.jetbrains.annotations
integrationTestImplementation libs.micronaut.picocli
integrationTestImplementation libs.mock.server.netty
integrationTestImplementation libs.mock.server.junit
integrationTestImplementation libs.micronaut.junit5
integrationTestImplementation libs.micronaut.test
integrationTestImplementation libs.assertj.core
integrationTestImplementation libs.jline.console
integrationTestImplementation libs.awaitility
integrationTestImplementation libs.hamcrest.core
integrationTestImplementation libs.hamcrest.optional
integrationTestImplementation libs.micronaut.inject
}
// Use the same logging implementation for ignite components and cli.
configurations {
testImplementation.exclude group: "org.slf4j", module: "slf4j-jdk14"
testFixturesImplementation.exclude group: "org.slf4j", module: "slf4j-jdk14"
integrationTestImplementation.exclude group: "org.slf4j", module: "slf4j-jdk14"
}
ext.generatedClientDir = layout.buildDirectory.dir("swagger/client")
task copyOpenapiDefinition(type: Copy) {
from configurations.openapiSpec
into(layout.buildDirectory.dir("customOpenapiDefinition"))
}
pmdMain {
excludes = ["**/org/apache/ignite/rest/client/**"]
}
task generateApiClient(type: GenerateTask) {
generatorName="java"
inputs.dir layout.buildDirectory.dir("customOpenapiDefinition")
inputSpec=layout.buildDirectory.file("customOpenapiDefinition/openapi.yaml").get().asFile.path
apiPackage="org.apache.ignite.rest.client.api"
invokerPackage="org.apache.ignite.rest.client.invoker"
modelPackage="org.apache.ignite.rest.client.model"
outputDir = generatedClientDir.get().asFile.toString()
generateModelTests=false
generateApiTests=false
languageSpecificPrimitives=["boolean", "int", "float", "double", "char", "byte", "short", "long"]
configOptions = [
"openApiNullable": "false",
"supportStreaming": "false",
"library": "okhttp-gson"
]
}
generateApiClient.dependsOn copyOpenapiDefinition
idea.module {
sourceDirs += generatedClientDir.get().dir('src/main/java').asFile
resourceDirs += generatedClientDir.get().dir('src/main/resources').asFile
generatedSourceDirs += generatedClientDir.get().dir('src/main/java').asFile
resourceDirs += sourceSets.main.output.resourcesDir
}
compileJava {
dependsOn generateApiClient
source generatedClientDir.get().dir('src/main/java')
}
task generateAutocompletionScript(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass.set("picocli.AutoComplete")
systemProperty("picocli.autocomplete.systemExitOnError", "")
args = ["--force",
"--completionScript",
"${buildDir}/ignite_completion.sh",
"-n",
"ignite3",
"org.apache.ignite.internal.cli.commands.TopLevelCliCommand"]
outputs.file "${buildDir}/ignite_completion.sh"
}
build.dependsOn generateAutocompletionScript
configurations {
cliScripts {
canBeConsumed = true
canBeResolved = false
}
}
artifacts {
cliScripts(new File("${buildDir}/ignite_completion.sh")) {
builtBy(generateAutocompletionScript)
}
}