org.opensearch.gradle.info.BuildParams Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of build-tools Show documentation
Show all versions of build-tools Show documentation
OpenSearch subproject :build-tools
/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*/
/*
* 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.
*/
/*
* Modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*/
package org.opensearch.gradle.info;
import org.opensearch.gradle.BwcVersions;
import org.gradle.api.JavaVersion;
import java.io.File;
import java.lang.reflect.Modifier;
import java.time.ZonedDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import static java.util.Objects.requireNonNull;
public class BuildParams {
private static File runtimeJavaHome;
private static Boolean isRuntimeJavaHomeSet;
private static List javaVersions;
private static JavaVersion minimumCompilerVersion;
private static JavaVersion minimumRuntimeVersion;
private static JavaVersion gradleJavaVersion;
private static JavaVersion runtimeJavaVersion;
private static String runtimeJavaDetails;
private static Boolean inFipsJvm;
private static String gitRevision;
private static String gitOrigin;
private static ZonedDateTime buildDate;
private static String testSeed;
private static Boolean isCi;
private static Boolean isInternal;
private static Integer defaultParallel;
private static Boolean isSnapshotBuild;
private static BwcVersions bwcVersions;
/**
* Initialize global build parameters. This method accepts and a initialization function which in turn accepts a
* {@link MutableBuildParams}. Initialization can be done in "stages", therefore changes override existing values, and values from
* previous calls to {@link #init(Consumer)} carry forward. In cases where you want to clear existing values
* {@link MutableBuildParams#reset()} may be used.
*
* @param initializer Build parameter initializer
*/
public static void init(Consumer initializer) {
initializer.accept(MutableBuildParams.INSTANCE);
}
public static File getRuntimeJavaHome() {
return value(runtimeJavaHome);
}
public static Boolean getIsRuntimeJavaHomeSet() {
return value(isRuntimeJavaHomeSet);
}
public static List getJavaVersions() {
return value(javaVersions);
}
public static JavaVersion getMinimumCompilerVersion() {
return value(minimumCompilerVersion);
}
public static JavaVersion getMinimumRuntimeVersion() {
return value(minimumRuntimeVersion);
}
public static JavaVersion getGradleJavaVersion() {
return value(gradleJavaVersion);
}
public static JavaVersion getRuntimeJavaVersion() {
return value(runtimeJavaVersion);
}
public static String getRuntimeJavaDetails() {
return value(runtimeJavaDetails);
}
public static Boolean isInFipsJvm() {
return value(inFipsJvm);
}
public static String getGitRevision() {
return value(gitRevision);
}
public static String getGitOrigin() {
return value(gitOrigin);
}
public static ZonedDateTime getBuildDate() {
return value(buildDate);
}
public static BwcVersions getBwcVersions() {
return value(bwcVersions);
}
public static String getTestSeed() {
return value(testSeed);
}
public static Boolean isCi() {
return value(isCi);
}
public static Boolean isInternal() {
return value(isInternal);
}
public static Integer getDefaultParallel() {
return value(defaultParallel);
}
public static boolean isSnapshotBuild() {
return value(BuildParams.isSnapshotBuild);
}
private static T value(T object) {
if (object == null) {
String callingMethod = Thread.currentThread().getStackTrace()[2].getMethodName();
throw new IllegalStateException(
"Build parameter '"
+ propertyName(callingMethod)
+ "' has not been initialized.\n"
+ "Perhaps the plugin responsible for initializing this property has not been applied."
);
}
return object;
}
private static String propertyName(String methodName) {
String propertyName = methodName.startsWith("is") ? methodName.substring("is".length()) : methodName.substring("get".length());
return propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1);
}
public static class MutableBuildParams {
private static MutableBuildParams INSTANCE = new MutableBuildParams();
private MutableBuildParams() {}
/**
* Resets any existing values from previous initializations.
*/
public void reset() {
Arrays.stream(BuildParams.class.getDeclaredFields()).filter(f -> Modifier.isStatic(f.getModifiers())).forEach(f -> {
try {
// Since we are mutating private static fields from a public static inner class we need to suppress
// accessibility controls here.
f.setAccessible(true);
f.set(null, null);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
});
}
public void setRuntimeJavaHome(File runtimeJavaHome) {
BuildParams.runtimeJavaHome = requireNonNull(runtimeJavaHome);
}
public void setIsRutimeJavaHomeSet(boolean isRutimeJavaHomeSet) {
BuildParams.isRuntimeJavaHomeSet = isRutimeJavaHomeSet;
}
public void setJavaVersions(List javaVersions) {
BuildParams.javaVersions = requireNonNull(javaVersions);
}
public void setMinimumCompilerVersion(JavaVersion minimumCompilerVersion) {
BuildParams.minimumCompilerVersion = requireNonNull(minimumCompilerVersion);
}
public void setMinimumRuntimeVersion(JavaVersion minimumRuntimeVersion) {
BuildParams.minimumRuntimeVersion = requireNonNull(minimumRuntimeVersion);
}
public void setGradleJavaVersion(JavaVersion gradleJavaVersion) {
BuildParams.gradleJavaVersion = requireNonNull(gradleJavaVersion);
}
public void setRuntimeJavaVersion(JavaVersion runtimeJavaVersion) {
BuildParams.runtimeJavaVersion = requireNonNull(runtimeJavaVersion);
}
public void setRuntimeJavaDetails(String runtimeJavaDetails) {
BuildParams.runtimeJavaDetails = runtimeJavaDetails;
}
public void setInFipsJvm(boolean inFipsJvm) {
BuildParams.inFipsJvm = inFipsJvm;
}
public void setGitRevision(String gitRevision) {
BuildParams.gitRevision = requireNonNull(gitRevision);
}
public void setGitOrigin(String gitOrigin) {
BuildParams.gitOrigin = requireNonNull(gitOrigin);
}
public void setBuildDate(ZonedDateTime buildDate) {
BuildParams.buildDate = requireNonNull(buildDate);
}
public void setTestSeed(String testSeed) {
BuildParams.testSeed = requireNonNull(testSeed);
}
public void setIsCi(boolean isCi) {
BuildParams.isCi = isCi;
}
public void setIsInternal(Boolean isInternal) {
BuildParams.isInternal = requireNonNull(isInternal);
}
public void setDefaultParallel(int defaultParallel) {
BuildParams.defaultParallel = defaultParallel;
}
public void setIsSnapshotBuild(final boolean isSnapshotBuild) {
BuildParams.isSnapshotBuild = isSnapshotBuild;
}
public void setBwcVersions(BwcVersions bwcVersions) {
BuildParams.bwcVersions = requireNonNull(bwcVersions);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy