| /* |
| * 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.apache.tools.ant.taskdefs.condition.Os |
| |
| apply plugin: "de.undercouch.download" |
| |
| configure(rootProject) { |
| task snowball() { |
| description "Regenerate snowball-based sources, stopwords, and tests for ...lucene/analysis." |
| group "generation" |
| |
| dependsOn ":lucene:analysis:common:snowballGen" |
| } |
| } |
| |
| configure(project(":lucene:analysis:common")) { |
| ext { |
| // git commit hash of source code https://github.com/snowballstem/snowball/ |
| snowballStemmerCommit = "d8cf01ddf37a9c74a78ada44531c08f7952f2a39" |
| // git commit hash of stopwords https://github.com/snowballstem/snowball-website |
| snowballWebsiteCommit = "ee7cee9bc52f22802f21e94f42d887b0dfa7d2a8" |
| // git commit hash of test data https://github.com/snowballstem/snowball-data |
| snowballDataCommit = "35461050d8f81e8aeac26e38f8a8dbf1afb82721" |
| |
| snowballWorkDir = file("${buildDir}/snowball") |
| |
| snowballStemmerDir = file("${snowballWorkDir}/stemmers-${snowballStemmerCommit}") |
| snowballWebsiteDir = file("${snowballWorkDir}/website-${snowballWebsiteCommit}") |
| snowballDataDir = file("${snowballWorkDir}/data-${snowballDataCommit}") |
| |
| snowballPatchFile = rootProject.file("gradle/generation/snowball.patch") |
| snowballScript = rootProject.file("gradle/generation/snowball.sh") |
| } |
| |
| // downloads snowball stemmers (or use cached copy) |
| task downloadSnowballStemmers(type: Download) { |
| inputs.file(snowballPatchFile) |
| src "https://github.com/snowballstem/snowball/archive/${snowballStemmerCommit}.zip" |
| def snowballStemmerZip = file("${snowballStemmerDir}.zip") |
| dest snowballStemmerZip |
| overwrite false |
| tempAndMove true |
| |
| doLast { |
| ant.unzip(src: snowballStemmerZip, dest: snowballStemmerDir, overwrite: "true") { |
| ant.cutdirsmapper(dirs: "1") |
| } |
| ant.patch(patchfile: snowballPatchFile, dir: snowballStemmerDir, strip: "1") |
| } |
| } |
| |
| // downloads snowball website (or use cached copy) |
| task downloadSnowballWebsite(type: Download) { |
| src "https://github.com/snowballstem/snowball-website/archive/${snowballWebsiteCommit}.zip" |
| def snowballWebsiteZip = file("${snowballWebsiteDir}.zip") |
| dest snowballWebsiteZip |
| overwrite false |
| tempAndMove true |
| |
| doLast { |
| ant.unzip(src: snowballWebsiteZip, dest: snowballWebsiteDir, overwrite: "true") { |
| ant.cutdirsmapper(dirs: "1") |
| } |
| } |
| } |
| |
| // downloads snowball test data (or use cached copy) |
| task downloadSnowballData(type: Download) { |
| src "https://github.com/snowballstem/snowball-data/archive/${snowballDataCommit}.zip" |
| def snowballDataZip = file("${snowballDataDir}.zip") |
| dest snowballDataZip |
| overwrite false |
| tempAndMove true |
| |
| doLast { |
| ant.unzip(src: snowballDataZip, dest: snowballDataDir, overwrite: "true") { |
| ant.cutdirsmapper(dirs: "1") |
| } |
| } |
| } |
| |
| // runs shell script to regenerate stemmers, base stemming subclasses, test data, and stopwords. |
| task snowballGen() { |
| dependsOn downloadSnowballStemmers |
| dependsOn downloadSnowballWebsite |
| dependsOn downloadSnowballData |
| |
| doLast { |
| if (Os.isFamily(Os.FAMILY_WINDOWS)) { |
| throw GradleException("Snowball generation does not work on Windows, use a platform where bash is available.") |
| } |
| |
| project.exec { |
| executable "bash" |
| args = [snowballScript, snowballStemmerDir, snowballWebsiteDir, snowballDataDir, projectDir] |
| } |
| } |
| } |
| } |