@@ -15,15 +15,25 @@ webuser=dist
15
15
promotablecmd=dist-promotable
16
16
promotecmd=dist-promote
17
17
signcmd=dist-sign
18
+ allPGPKeys=" "
18
19
customsshkey=" " # let ssh and scp use default key
20
+ readmePath=" README.md"
19
21
signversion=" "
20
22
cloudflare_bucket=" r2:dist-prod"
21
23
22
- while getopts " :i:s: " option; do
24
+ while getopts " :i:r:s:a " option; do
23
25
case " ${option} " in
26
+ a)
27
+ # With -a, local keys are not filtered based on the one listed in the README
28
+ # useful if you want to sign with a subkey.
29
+ allPGPKeys=" true"
30
+ ;;
24
31
i)
25
32
customsshkey=" -i ${OPTARG} "
26
33
;;
34
+ r)
35
+ readmePath=" ${OPTARG} "
36
+ ;;
27
37
s)
28
38
signversion=" ${OPTARG} "
29
39
;;
@@ -44,7 +54,16 @@ shift $((OPTIND-1))
44
54
45
55
echo " # Selecting GPG key ..."
46
56
47
- gpgkey=$( gpg --list-secret-keys --keyid-format SHORT | awk -F' ( +|/)' ' /^(sec|ssb)/{print $3}' )
57
+
58
+ if [ -z " $allPGPKeys " ]; then
59
+ gpgkey=" $( awk ' {
60
+ if ($1 == "gpg" && $2 == "--keyserver" && $4 == "--recv-keys" && (1 == 2' " $(
61
+ gpg --list-secret-keys | awk -F' = ' ' /^ +Key fingerprint/{ gsub(/ /,"",$2); print " || $5 == \"" $2 "\"" }' || true
62
+ ) " ' )) { print substr($5, 33) }
63
+ }' " $readmePath " ) "
64
+ else
65
+ gpgkey=$( gpg --list-secret-keys --keyid-format SHORT | awk -F' ( +|/)' ' /^(sec|ssb)/{print $3}' )
66
+ fi
48
67
keycount=$( echo " $gpgkey " | wc -w)
49
68
50
69
if [ " $keycount " -eq 0 ]; then
@@ -68,13 +87,12 @@ elif [ "$keycount" -ne 1 ]; then
68
87
gpgkey=$( echo " $gpgkey " | sed -n " ${keynum} p" )
69
88
fi
70
89
71
- gpgfing=$( gpg --keyid-format 0xLONG --fingerprint " $gpgkey " | grep ' Key fingerprint =' | awk -F' = ' ' {print $2}' | tr -d ' ' )
72
-
73
- grep -q " $gpgfing " README.md || (\
74
- echo ' Error: this GPG key fingerprint is not listed in ./README.md' && \
75
- exit 1 \
76
- )
90
+ gpgfing=$( gpg --keyid-format 0xLONG --fingerprint " $gpgkey " | awk -F' = ' ' /^ +Key fingerprint/{gsub(/ /,"",$2);print $2}' )
77
91
92
+ grep -q " $gpgfing " " $readmePath " || {
93
+ echo " Error: this GPG key fingerprint is not listed in $readmePath "
94
+ exit 1
95
+ }
78
96
79
97
echo " Using GPG key: $gpgkey "
80
98
echo " Fingerprint: $gpgfing "
0 commit comments