2019-11-01 14:33:11 -04:00
|
|
|
import org.elasticsearch.gradle.info.BuildParams
|
|
|
|
|
2018-01-18 08:39:02 -05:00
|
|
|
/*
|
2018-01-18 11:15:02 -05:00
|
|
|
* This project is named sql-cli because it is in the "org.elasticsearch.plugin"
|
2018-01-18 08:39:02 -05:00
|
|
|
* group and it'd be super confusing for it to just be called "cli" there.
|
|
|
|
* Also, the jar we ultimately want to ship is sql-cli-VERSION.jar which is
|
|
|
|
* exactly what gradle makes by default when the project is named sql-cli.
|
|
|
|
*/
|
|
|
|
|
2017-12-13 10:19:31 -05:00
|
|
|
apply plugin: 'elasticsearch.build'
|
2019-10-28 15:11:55 -04:00
|
|
|
apply plugin: 'com.github.johnrengelman.shadow'
|
2017-12-13 10:19:31 -05:00
|
|
|
/* We don't use the 'application' plugin because it builds a zip and tgz which
|
|
|
|
* we don't want. */
|
|
|
|
|
2018-04-11 11:29:57 -04:00
|
|
|
archivesBaseName = 'elasticsearch-sql-cli'
|
|
|
|
|
2017-12-13 10:19:31 -05:00
|
|
|
description = 'Command line interface to Elasticsearch that speaks SQL'
|
|
|
|
|
|
|
|
dependencies {
|
2019-11-14 06:01:23 -05:00
|
|
|
|
|
|
|
// select just the parts of JLine that are needed
|
2020-06-30 09:57:41 -04:00
|
|
|
api "org.jline:jline-terminal:${jlineVersion}"
|
|
|
|
api( "org.jline:jline-terminal-jna:${jlineVersion}") {
|
2019-11-14 06:01:23 -05:00
|
|
|
exclude group: "net.java.dev.jna"
|
|
|
|
}
|
2020-06-30 09:57:41 -04:00
|
|
|
api "org.jline:jline-reader:${jlineVersion}"
|
|
|
|
api "org.jline:jline-style:${jlineVersion}"
|
2019-11-14 06:01:23 -05:00
|
|
|
|
2020-06-30 09:57:41 -04:00
|
|
|
api xpackProject('plugin:sql:sql-client')
|
|
|
|
api xpackProject('plugin:sql:sql-action')
|
|
|
|
api project(":libs:elasticsearch-cli")
|
|
|
|
api project(':libs:elasticsearch-x-content')
|
2020-07-07 11:10:31 -04:00
|
|
|
runtimeOnly "org.elasticsearch:jna:${versions.jna}"
|
2020-06-14 16:30:44 -04:00
|
|
|
testImplementation project(":test:framework")
|
2017-12-13 10:19:31 -05:00
|
|
|
}
|
|
|
|
|
2020-06-18 02:15:50 -04:00
|
|
|
tasks.named("dependencyLicenses").configure {
|
2019-11-14 06:01:23 -05:00
|
|
|
mapping from: /jackson-.*/, to: 'jackson'
|
|
|
|
mapping from: /lucene-.*/, to: 'lucene'
|
|
|
|
mapping from: /sql-action.*/, to: 'elasticsearch'
|
|
|
|
mapping from: /sql-client.*/, to: 'elasticsearch'
|
|
|
|
mapping from: /jline-.*/, to: 'jline'
|
2017-12-13 10:19:31 -05:00
|
|
|
}
|
|
|
|
|
2019-10-28 15:11:55 -04:00
|
|
|
shadowJar {
|
2019-11-14 06:01:23 -05:00
|
|
|
manifest {
|
|
|
|
attributes 'Main-Class': 'org.elasticsearch.xpack.sql.cli.Cli'
|
|
|
|
}
|
2017-12-13 10:19:31 -05:00
|
|
|
}
|
|
|
|
|
2020-04-15 16:23:55 -04:00
|
|
|
tasks.named('forbiddenApisMain').configure {
|
2019-11-14 06:01:23 -05:00
|
|
|
//sql does not depend on server, so only jdk signatures should be checked
|
|
|
|
replaceSignatureFiles 'jdk-signatures'
|
|
|
|
signaturesFiles += files('src/forbidden/cli-signatures.txt')
|
2018-03-14 16:15:32 -04:00
|
|
|
}
|
|
|
|
|
2017-12-15 10:42:18 -05:00
|
|
|
task runcli {
|
2019-11-14 06:01:23 -05:00
|
|
|
description = 'Run the CLI and connect to elasticsearch running on 9200'
|
|
|
|
dependsOn shadowJar
|
|
|
|
doLast {
|
|
|
|
List command = ["${BuildParams.runtimeJavaHome}/bin/java"]
|
|
|
|
if ('true'.equals(System.getProperty('debug', 'false'))) {
|
|
|
|
command += '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000'
|
2018-01-18 11:15:02 -05:00
|
|
|
}
|
2019-11-14 06:01:23 -05:00
|
|
|
command += ['-jar', shadowJar.archivePath.absolutePath]
|
|
|
|
logger.info("running the cli with: ${command}")
|
|
|
|
|
|
|
|
new ProcessBuilder(command)
|
|
|
|
.redirectOutput(ProcessBuilder.Redirect.INHERIT)
|
|
|
|
.redirectInput(ProcessBuilder.Redirect.INHERIT)
|
|
|
|
.redirectError(ProcessBuilder.Redirect.INHERIT)
|
|
|
|
.start()
|
|
|
|
.waitFor()
|
|
|
|
}
|
2017-12-13 10:19:31 -05:00
|
|
|
}
|