| /* |
| * 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. |
| */ |
| |
| apply plugin: "de.undercouch.download" |
| |
| configure(rootProject) { |
| ext { |
| momanDir = file("${buildDir}/moman") |
| } |
| |
| task moman() { |
| description "Regenerate Moman-based sources for ...lucene/util/automaton and ...lucene/util/packed." |
| group "generation" |
| |
| dependsOn ":lucene:core:utilGenPacked" |
| dependsOn ":lucene:core:utilGenLev" |
| } |
| |
| task installMoman(type: Download) { |
| def momanZip = file("${momanDir}/moman.zip") |
| |
| src "https://github.com/jpbarrette/moman/archive/497c90e34e412b6494db6dabf0d95db8034bd325.zip" |
| dest momanZip |
| onlyIfModified true |
| |
| doLast { |
| ant.unzip(src: momanZip, dest: momanDir, overwrite: "true") { |
| ant.cutdirsmapper(dirs: "1") |
| } |
| } |
| } |
| } |
| |
| configure(project(":lucene:core")) { |
| task utilGenPacked(dependsOn: rootProject.installMoman) { |
| description "Regenerate util/PackedBulkOperationsPacked*.java and Packed64SingleBlock.java" |
| group "generation" |
| |
| doLast { |
| def targetDir = file("src/java/org/apache/lucene/util/packed") |
| |
| ['gen_BulkOperation.py', 'gen_Packed64SingleBlock.py'].each { prog -> |
| logger.lifecycle("Executing: ${prog} in ${targetDir}") |
| project.exec { |
| workingDir targetDir |
| executable project.externalTool("python3") |
| args = ['-B', "${prog}"] |
| } |
| } |
| // Correct line endings for Windows. |
| project.ant.fixcrlf( |
| srcDir: targetDir, |
| includes: 'Packed64SingleBlock.java, BulkOperation*.java', |
| encoding: 'UTF-8', |
| eol: 'lf' |
| ) |
| } |
| } |
| |
| task utilGenLev(dependsOn: rootProject.installMoman) { |
| description "Regenerate util/automaton Lev*ParametricDescription.java" |
| group "generation" |
| |
| doLast { |
| def targetDir = file("src/java/org/apache/lucene/util/automaton") |
| |
| ['1', '2'].each { num -> |
| ['True', 'False'].each { transpose -> |
| project.exec { |
| workingDir targetDir |
| executable project.externalTool("python3") |
| args = ['-B', 'createLevAutomata.py', num, transpose, "${momanDir}/finenight/python"] |
| } |
| } |
| } |
| project.ant.fixcrlf( |
| srcDir: targetDir, |
| includes: '*ParametricDescription.java', |
| encoding: 'UTF-8', |
| eol: 'lf' |
| ) |
| } |
| } |
| |
| task regenerate() { |
| description "Regenerate any generated sources" |
| group "generation" |
| |
| // Run regeneration tasks. |
| dependsOn utilGenPacked |
| dependsOn utilGenLev |
| |
| // Clean up and reformat the generated sources after generation. |
| dependsOn "tidy" |
| } |
| |
| // Make sure tidy runs after generation, if they're defined. |
| tasks.matching { it.name == "tidy" }.configureEach { |
| mustRunAfter utilGenPacked, utilGenLev |
| } |
| } |