mirror of https://github.com/hyperledger/besu
Stop autogenerating PantheonInfo.java (#1899)
The version is now read from a manifest file so there's nothing dynamic about the file. Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>pull/2/head
parent
235c72ac5b
commit
0a3785604e
@ -1,157 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2018 ConsenSys AG. |
|
||||||
* |
|
||||||
* Licensed 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.gradle.api.DefaultTask |
|
||||||
import org.gradle.api.tasks.Input |
|
||||||
import org.gradle.api.tasks.Nested |
|
||||||
import org.gradle.api.tasks.OutputFile |
|
||||||
import org.gradle.api.tasks.TaskAction |
|
||||||
|
|
||||||
class ProjectPropertiesFile extends DefaultTask { |
|
||||||
|
|
||||||
private String destPackage = '' |
|
||||||
private String filename = defaultFilename() |
|
||||||
private List<Property> properties = new ArrayList<>() |
|
||||||
|
|
||||||
@OutputFile |
|
||||||
File getOutputFile() { |
|
||||||
String outputFile = "${project.projectDir}/src/main/java/${packagePath()}/${filename}.java" |
|
||||||
return project.file(outputFile) |
|
||||||
} |
|
||||||
|
|
||||||
@TaskAction |
|
||||||
void generateFile() { |
|
||||||
getOutputFile().text = generateFileContent() |
|
||||||
} |
|
||||||
|
|
||||||
void setDestPackage(String destPackage) { |
|
||||||
this.destPackage = destPackage |
|
||||||
} |
|
||||||
|
|
||||||
@Input |
|
||||||
String getDestPackage() { |
|
||||||
return destPackage |
|
||||||
} |
|
||||||
|
|
||||||
void setFilename(String filename) { |
|
||||||
this.filename = filename |
|
||||||
} |
|
||||||
|
|
||||||
@Input |
|
||||||
String getFilename() { |
|
||||||
return filename |
|
||||||
} |
|
||||||
|
|
||||||
void addString(String name, String value) { |
|
||||||
properties.add(new Property(name, value, PropertyType.STRING)) |
|
||||||
} |
|
||||||
|
|
||||||
void addVersion(String name, String value) { |
|
||||||
properties.add(new Property(name, value, PropertyType.VERSION)) |
|
||||||
} |
|
||||||
|
|
||||||
@Nested |
|
||||||
List<Property> getProperties() { |
|
||||||
return properties |
|
||||||
} |
|
||||||
|
|
||||||
private String packagePath() { |
|
||||||
return destPackage.replace(".", "/") |
|
||||||
} |
|
||||||
|
|
||||||
private String defaultFilename() { |
|
||||||
return "${project.name.capitalize()}Info" |
|
||||||
} |
|
||||||
|
|
||||||
private String generateFileContent() { |
|
||||||
String[] varDeclarations = properties.stream().map({p -> p.variableDeclaration()}).toArray() |
|
||||||
String[] methodDeclarations = properties.stream().map({p -> p.methodDeclaration()}).toArray() |
|
||||||
return """package ${destPackage}; |
|
||||||
|
|
||||||
import tech.pegasys.pantheon.util.PlatformDetector; |
|
||||||
|
|
||||||
// This file is generated via a gradle task and should not be edited directly. |
|
||||||
public final class ${filename} { |
|
||||||
${String.join("\n", varDeclarations)} |
|
||||||
|
|
||||||
private ${filename}() {} |
|
||||||
${String.join("\n", methodDeclarations)} |
|
||||||
} |
|
||||||
""" |
|
||||||
} |
|
||||||
|
|
||||||
private enum PropertyType { |
|
||||||
STRING("String"), |
|
||||||
VERSION("String"); |
|
||||||
|
|
||||||
private final String strVal |
|
||||||
PropertyType(String strVal) { |
|
||||||
this.strVal = strVal |
|
||||||
} |
|
||||||
|
|
||||||
String toString() { |
|
||||||
return strVal |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private class Property { |
|
||||||
private final String name |
|
||||||
private final String value |
|
||||||
private final PropertyType type |
|
||||||
|
|
||||||
Property(name, value, type) { |
|
||||||
this.name = name |
|
||||||
this.value = value |
|
||||||
this.type = type |
|
||||||
} |
|
||||||
|
|
||||||
@Input |
|
||||||
String getName() { |
|
||||||
return name |
|
||||||
} |
|
||||||
|
|
||||||
@Input |
|
||||||
String getValue() { |
|
||||||
return value |
|
||||||
} |
|
||||||
|
|
||||||
@Input |
|
||||||
String getType() { |
|
||||||
return type.toString() |
|
||||||
} |
|
||||||
|
|
||||||
String variableDeclaration() { |
|
||||||
def constantName = name.replaceAll("([a-z])([A-Z]+)", '$1_$2').toUpperCase() |
|
||||||
def constantValue = value.replaceAll("([a-z])([A-Z]+)", '$1_$2').toUpperCase() |
|
||||||
switch (type) { |
|
||||||
case PropertyType.STRING: |
|
||||||
return " private static final ${type} ${constantName} = \"${value}\";" |
|
||||||
case PropertyType.VERSION: |
|
||||||
return " private static final ${type} ${constantName} =\n" + |
|
||||||
" ${constantValue}\n" + |
|
||||||
" + \"/v\"\n" + |
|
||||||
" + ${filename}.class.getPackage().getImplementationVersion()\n" + |
|
||||||
" + \"/\"\n" + |
|
||||||
" + PlatformDetector.getOS()\n" + |
|
||||||
" + \"/\"\n" + |
|
||||||
" + PlatformDetector.getVM();" |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
String methodDeclaration() { |
|
||||||
return """ |
|
||||||
public static ${type} ${name}() { |
|
||||||
return ${name.replaceAll("([a-z])([A-Z]+)", '$1_$2').toUpperCase()}; |
|
||||||
}""" |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue