SigningPlugin.java
package io.github.jonloucks.gradle.kit;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.plugins.signing.SigningExtension;
import static io.github.jonloucks.gradle.kit.Configs.*;
import static java.util.Optional.ofNullable;
/**
* Extension of the Gradle 'signing' plugin
*/
public final class SigningPlugin implements Plugin<Project> {
/**
* Invoked via reflection by Gradle
*/
public SigningPlugin() {
}
public void apply(Project project) {
new Apply(project).apply();
}
@SuppressWarnings("CodeBlock2Expr")
private static final class Apply extends ProjectApplier {
private Apply(Project project) {
super(project);
}
@Override
void apply() {
applyOnce(() -> {
applySigningPlugin();
getProject().afterEvaluate(x -> { //
configureSigning();
});
});
}
private void configureSigning() {
final String secretKey = getGpgSecretKey();
final String secretPassword = getGpgSecretKeyPassword();
if (ofNullable(secretKey).isPresent() && ofNullable(secretPassword).isPresent()) {
log("Configuring signing keys...");
getProject().getExtensions().configure(SigningExtension.class, signing -> {
signing.useInMemoryPgpKeys(secretKey, secretPassword);
});
}
}
private void applySigningPlugin() {
log("Applying signing plugin...");
getProject().getPlugins().apply("signing");
}
private String getGpgSecretKey() {
return getConfig(KIT_GPG_SECRET_KEY).orElse(null);
}
private String getGpgSecretKeyPassword() {
return getConfig(KIT_GPG_SECRET_KEY_PASSWORD).orElse(null);
}
}
}