/* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch 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.elasticsearch.gradle.BuildPlugin /* * This script plugin configures formatting for Java source using Spotless * for Gradle. Since the act of formatting existing source can interfere * with developers' workflows, we don't automatically format all code * (yet). Instead, we maintain a list of projects that are excluded from * formatting, until we reach a point where we can comfortably format them * in one go without too much disruption. * * Any new sub-projects must not be added to the exclusions list! * * To perform a reformat, run: * * ./gradlew spotlessApply * * To check the current format, run: * * ./gradlew spotlessJavaCheck * * This is also carried out by the `precommit` task. * * For more about Spotless, see: * * https://github.com/diffplug/spotless/tree/master/plugin-gradle */ // Do not add new sub-projects here! def projectPathsToExclude = [ ':client:benchmark', ':client:client-benchmark-noop-api-plugin', ':client:rest', ':client:rest-high-level', ':client:sniffer', ':client:test', ':client:transport', ':example-plugins:custom-settings', ':example-plugins:custom-significance-heuristic', ':example-plugins:custom-suggester', ':example-plugins:painless-whitelist', ':example-plugins:rescore', ':example-plugins:rest-handler', ':example-plugins:script-expert-scoring', ':example-plugins:security-authorization-engine', ':libs:elasticsearch-cli', ':libs:elasticsearch-core', ':libs:elasticsearch-dissect', ':libs:elasticsearch-geo', ':libs:elasticsearch-grok', ':libs:elasticsearch-nio', ':libs:elasticsearch-plugin-classloader', ':libs:elasticsearch-secure-sm', ':libs:elasticsearch-ssl-config', ':libs:elasticsearch-x-content', ':modules:aggs-matrix-stats', ':modules:analysis-common', ':modules:ingest-common', ':modules:ingest-geoip', ':modules:ingest-user-agent', ':modules:lang-expression', ':modules:lang-mustache', ':modules:lang-painless', ':modules:lang-painless:spi', ':modules:mapper-extras', ':modules:parent-join', ':modules:percolator', ':modules:rank-eval', ':modules:reindex', ':modules:repository-url', ':modules:systemd', ':modules:tasks', ':modules:transport-netty4', ':plugins:analysis-icu', ':plugins:analysis-kuromoji', ':plugins:analysis-nori', ':plugins:analysis-phonetic', ':plugins:analysis-smartcn', ':plugins:analysis-stempel', ':plugins:analysis-ukrainian', ':plugins:discovery-azure-classic', ':plugins:discovery-ec2', ':plugins:discovery-gce', ':plugins:ingest-attachment', ':plugins:mapper-annotated-text', ':plugins:mapper-murmur3', ':plugins:mapper-size', ':plugins:repository-azure', ':plugins:repository-gcs', ':plugins:repository-hdfs', ':plugins:repository-s3', ':plugins:store-smb', ':plugins:transport-nio', ':qa:die-with-dignity', ':rest-api-spec', ':server', ':test:fixtures:azure-fixture', ':test:fixtures:gcs-fixture', ':test:fixtures:hdfs-fixture', ':test:fixtures:krb5kdc-fixture', ':test:fixtures:minio-fixture', ':test:fixtures:old-elasticsearch', ':test:fixtures:s3-fixture', ':test:framework', ':test:logger-usage', ':x-pack:license-tools', ':x-pack:plugin:analytics', ':x-pack:plugin:async-search', ':x-pack:plugin:async-search:qa', ':x-pack:plugin:ccr', ':x-pack:plugin:ccr:qa', ':x-pack:plugin:core', ':x-pack:plugin:deprecation', ':x-pack:plugin:eql', ':x-pack:plugin:eql:qa', ':x-pack:plugin:eql:qa:common', ':x-pack:plugin:frozen-indices', ':x-pack:plugin:graph', ':x-pack:plugin:identity-provider', ':x-pack:plugin:ilm', ':x-pack:plugin:mapper-constant-keyword', ':x-pack:plugin:mapper-flattened', ':x-pack:plugin:ml', ':x-pack:plugin:monitoring', ':x-pack:plugin:ql', ':x-pack:plugin:rollup', ':x-pack:plugin:search-business-rules', ':x-pack:plugin:security', ':x-pack:plugin:security:cli', ':x-pack:plugin:spatial', ':x-pack:plugin:sql', ':x-pack:plugin:sql:jdbc', ':x-pack:plugin:sql:qa', ':x-pack:plugin:sql:qa:security', ':x-pack:plugin:sql:sql-action', ':x-pack:plugin:sql:sql-cli', ':x-pack:plugin:sql:sql-client', ':x-pack:plugin:sql:sql-proto', ':x-pack:plugin:transform', ':x-pack:plugin:vectors', ':x-pack:plugin:voting-only-node', ':x-pack:plugin:watcher', ':x-pack:plugin:wildcard', ':x-pack:qa', ':x-pack:qa:security-example-spi-extension', ':x-pack:snapshot-tool', ':x-pack:snapshot-tool:qa:google-cloud-storage', ':x-pack:snapshot-tool:qa:s3', ':x-pack:test:feature-aware', ':x-pack:test:idp-fixture', ':x-pack:test:smb-fixture', ':x-pack:transport-client' ] subprojects { plugins.withType(BuildPlugin).whenPluginAdded { if (projectPathsToExclude.contains(project.path) == false) { project.apply plugin: "com.diffplug.spotless" spotless { java { // Normally this isn't necessary, but we have Java sources in // non-standard places target '**/*.java' removeUnusedImports() eclipse().configFile rootProject.file('buildSrc/formatterConfig.xml') trimTrailingWhitespace() // See CONTRIBUTING.md for details of when to enabled this. if (System.getProperty('spotless.paddedcell') != null) { paddedCell() } } } precommit.dependsOn 'spotlessJavaCheck' } } }