/* * 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. */ // Add "help" tasks which display plain text files under 'help' folder. configure(rootProject) { def helpFiles = [ ["Workflow", "help/workflow.txt", "Typical workflow commands."], ["Tests", "help/tests.txt", "Tests, filtering, beasting, etc."], ["Formatting", "help/formatting.txt", "Code formatting conventions."], ["Jvms", "help/jvms.txt", "Using alternative or EA JVM toolchains."], ["Deps", "help/dependencies.txt", "Declaring, inspecting and excluding dependencies."], ["ForbiddenApis", "help/forbiddenApis.txt", "How to add/apply rules for forbidden APIs."], ["LocalSettings", "help/localSettings.txt", "Local settings, overrides and build performance tweaks."], ["Regeneration", "help/regeneration.txt", "How to refresh generated and derived resources."], ["Jmh", "help/jmh.txt", "JMH micro-benchmarks."], ["Git", "help/git.txt", "Git assistance and guides."], ["IDEs", "help/IDEs.txt", "IDE support."], ["Publishing", "help/publishing.txt", "Maven and other artifact publishing, signing, etc."], ] helpFiles.each { section, path, sectionInfo -> task "help${section}" { group = 'Help (developer guides and hints)' description = sectionInfo doFirst { println "\n" + rootProject.file(path).getText("UTF-8") } } } help { doLast { println "" println "This is Lucene's gradle build. See some" println "guidelines, ant-equivalent commands etc. under help/*; or type:" println "" helpFiles.each { section, path, sectionInfo -> println String.format(Locale.ROOT, " gradlew :help%-16s # %s", section, sectionInfo) } println "" println "For the impatient, build the project with 'gradlew assemble'" } } task allHelpFilesExit() { doFirst { helpFiles.each { section, path, sectionInfo -> if (!rootProject.file(path).exists()) { throw new GradleException("Help file missing: ${path} (correct help.gradle)") } } } } check.dependsOn allHelpFilesExit }