diff options
author | Joel Granados Moreno <jgranado@redhat.com> | 2009-07-24 14:37:13 +0200 |
---|---|---|
committer | Joel Granados Moreno <jgranado@redhat.com> | 2009-07-27 19:11:32 +0200 |
commit | 99105c24f6398b2d127bffc25ed2e72cf8d07ba6 (patch) | |
tree | e0f66d37a5a598980d903c2367eb58e6c5c7b406 /build-aux | |
parent | c736ece2d4b28f3b300cda689fd86f5138478d86 (diff) | |
download | parted-99105c24f6398b2d127bffc25ed2e72cf8d07ba6.tar.gz |
Explicitly handle the signing key.
If we are sure that we have the key, we are able to use it in any
subroutine (like make major).
* build-aux/parted-release (_find_signingkey): New function.
(_do_release): Use the key_id to sign the tag and to execute `make
major`.
Diffstat (limited to 'build-aux')
-rwxr-xr-x | build-aux/parted-release | 68 |
1 files changed, 56 insertions, 12 deletions
diff --git a/build-aux/parted-release b/build-aux/parted-release index 62157a3..fbaad6a 100755 --- a/build-aux/parted-release +++ b/build-aux/parted-release @@ -4,7 +4,6 @@ v="" date=$(date +%F) logfile="release.log" parted_dir="" -key_string="" key_id="" stage_dir="$(pwd)/parted_release-$$" @@ -26,7 +25,6 @@ while [ $# -gt 0 ] ; do case $1 in --key-id) - key_string="-u $2" key_id="$2" shift; shift ;; @@ -56,15 +54,52 @@ while [ $# -gt 0 ] ; do esac done -if [ "x$v" = "x" ] ; then - usage +_find_signingkey() +{ + # If its already set, return. + if [ "x$key_id" != "x" ] ; then + return 0 + fi + + # Maybe the global git config has the key :) + key_id=$(git config user.signingkey) + if [ "x$key_id" != "x" ] ; then + return 0 + fi + + # Lets ask gpg using git config user.email. We will choose the first + # one in case of multiple keys with the same email. + git_uemail=$(git config user.email) + if [ "x$git_uemail" != "x" ] ; then + key_id=$(gpg --list-keys --with-colons --fixed-list "$git_uemail" | + grep pub | + head -n 1 | + awk -F ':' '{print $5}' | + cut -c 9-) + if [ "x$key_id" != "x" ] ; then + return 0 + fi + fi + + # Lets try with the name. + git_uname=$(git config user.name) + if [ "x$git_uname" != "x" ] ; then + key_id=$(gpg --list-keys --with-colons --fixed-list "$git_uname" | + grep pub | + head -n 1 | + awk -F ':' '{print $5}' | + cut -c 9-) + if [ "x$key_id" != "x" ] ; then + return 0 + fi + fi + + # Don't know where else to look. + echo "There was an error finding the key needed to sing the release tag." + echo "Please use the --key-id argument when you execute $0 or set the" + echo "user.signingkey value in your ~/.gitconfig" exit 1 -fi - -if [ "x$key_string" = "x" -o "x$key_id" = "x" ] ; then - key_string="-s" - key_id="FIXME: YOUR_KEY" -fi +} _do_git_clone() { @@ -102,11 +137,11 @@ _do_release() commit_message="version $v\n\n* NEWS: Record release date.\n" sed -e "s/^.*in release.* (????-??-??) .*/$news_line/" -i NEWS && \ printf "$commit_message" | git commit NEWS -F - && \ - git tag $key_string -m "parted $v" v$v HEAD && \ + git tag -u $key_id -m "parted $v" v$v HEAD && \ ./bootstrap && \ ./configure && \ make && \ - make major && \ + make major gpg_key_ID=$key_id && \ return 0 ) >> $logfile 2>&1 || return 1 } @@ -130,6 +165,15 @@ configuration for possible overlooked issues. exit 1 } +if [ "x$v" = "x" ] ; then + usage + exit 1 +fi + +if [ "x$key_id" = "x" ] ; then + _find_signingkey +fi + _require_git echo "git is installed..." |