| /* |
| * 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. |
| */ |
| |
| allprojects { |
| apply plugin: 'signing' |
| signing { |
| required { |
| rootProject.ext.isReleaseVersion && |
| (gradle.taskGraph.hasTask(':artifactoryPublish') || rootProject.hasProperty('forceSign')) |
| } |
| } |
| } |
| |
| gradle.taskGraph.whenReady { taskGraph -> |
| if (project.ext.isReleaseVersion && |
| (taskGraph.hasTask(':artifactoryPublish') || project.hasProperty('forceSign'))) { |
| // Use Java 6's console or Swing to read input (not suitable for CI) |
| if (!project.hasProperty('signing.keyId') || |
| !project.hasProperty('signing.secretKeyRingFile') || |
| !project.hasProperty('signing.password')) { |
| printf "\n\nWe have to sign some things in this build." + |
| "\n\nPlease enter your signing details.\n\n" |
| System.out.flush() |
| |
| if (!project.hasProperty('signing.keyId')) { |
| project.ext.'signing.keyId' = promptUser('PGP Key Id') |
| } |
| if (!project.hasProperty('signing.secretKeyRingFile')) { |
| project.ext.'signing.secretKeyRingFile' = promptUser('PGP Secret Key Ring File (absolute path)') |
| } |
| if (!project.hasProperty('signing.password')) { |
| project.ext.'signing.password' = promptUser('PGP Private Key Password') |
| } |
| |
| printf "\nThanks.\n\n" |
| System.out.flush() |
| } |
| allprojects { ext.'signing.keyId' = project.getProperty('signing.keyId') } |
| allprojects { ext.'signing.secretKeyRingFile' = project.getProperty('signing.secretKeyRingFile') } |
| allprojects { ext.'signing.password' = project.getProperty('signing.password') } |
| } |
| } |
| |
| def promptUser(String prompt) { |
| def response = '' |
| if (System.console() == null) { |
| new groovy.swing.SwingBuilder().edt { |
| dialog(modal: true, // pause build |
| title: 'Reponse required', // dialog title |
| alwaysOnTop: true, |
| resizable: false, |
| locationRelativeTo: null, // centered on screen |
| pack: true, |
| show: true |
| ) { |
| vbox { |
| label(text: "$prompt:") |
| input = passwordField() |
| button(defaultButton: true, text: 'OK', actionPerformed: { |
| response = new String(input.password) |
| dispose() |
| }) |
| } |
| } |
| } |
| } else { |
| response = new String(System.console().readPassword("\n$prompt: ")) |
| } |
| |
| if (!response) { |
| throw new InvalidUserDataException("Null response detected!") |
| } |
| response |
| } |