Skip to content

Commit eafb30c

Browse files
committed
feat: sign using multiple keys
1 parent 1c9a163 commit eafb30c

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

internal/publish/publish.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,18 @@ import (
66
)
77

88
type CLI struct {
9-
Dists string `arg:"" required:"" help:"Path to dists directory" type:"existingdir" env:"EZAPT_DISTS"`
10-
Keyring string `required:"" help:"Path to GPG keyring" type:"existingfile" env:"EZAPT_KEYRING"`
11-
KeepVersions int `help:"Number of versions to keep" default:"2" env:"EZAPT_KEEP_VERSIONS"`
9+
Dists string `arg:"" required:"" help:"Path to dists directory" type:"existingdir" env:"EZAPT_DISTS"`
10+
KeepVersions int `help:"Number of versions to keep" default:"2" env:"EZAPT_KEEP_VERSIONS"`
11+
Keyring string `required:"" help:"Path to GPG keyring" type:"existingfile" env:"EZAPT_KEYRING"`
12+
SignUser []string `help:"GPG user to sign with" env:"EZAPT_SIGN_USER" default:"37C84554E7E0A261E4F76E1ED26E6ED000654A3E,FBA2E162F2F44657B38F0309E5665F9BD5970C47"`
1213
}
1314

1415
func (c *CLI) Run() error {
16+
keyring, err := filepath.Abs(c.Keyring)
17+
if err != nil {
18+
return fmt.Errorf("publish: %w", err)
19+
}
20+
1521
pkgs, err := scanPackages(c.Dists)
1622
if err != nil {
1723
return fmt.Errorf("publish: %w", err)
@@ -31,7 +37,7 @@ func (c *CLI) Run() error {
3137
if err := writeRelease(dist); err != nil {
3238
return fmt.Errorf("publish: %w", err)
3339
}
34-
if err := signRelease(dist); err != nil {
40+
if err := signRelease(dist, keyring, c.SignUser); err != nil {
3541
return fmt.Errorf("publish: %w", err)
3642
}
3743
}

internal/publish/release.go

+18-9
Original file line numberDiff line numberDiff line change
@@ -145,28 +145,37 @@ func writeRelease(dist string) error {
145145
return nil
146146
}
147147

148-
func signRelease(dist string) error {
149-
if bs, err := exec.Command("gpg",
148+
func signRelease(dist, keyring string, users []string) error {
149+
opts := []string{
150150
"-o", filepath.Join(dist, "InRelease"),
151151
"--yes",
152152
"--no-default-keyring",
153-
"--keyring", "/Users/jb/src/kastelo/ezapt/ring.gpg",
154-
"--clear-sign", filepath.Join(dist, "Release"),
155-
).CombinedOutput(); err != nil {
153+
"--keyring", keyring,
154+
}
155+
for _, user := range users {
156+
opts = append(opts, "-u", user)
157+
}
158+
opts = append(opts, "--clear-sign", filepath.Join(dist, "Release"))
159+
if bs, err := exec.Command("gpg", opts...).CombinedOutput(); err != nil {
156160
return fmt.Errorf("Failed to sign release: %s", bs)
157161
}
158162
if err := compress(filepath.Join(dist, "InRelease")); err != nil {
159163
return err
160164
}
161165

162-
if bs, err := exec.Command("gpg",
166+
opts = []string{
163167
"-o", filepath.Join(dist, "Release.gpg"),
164168
"-a",
165169
"--yes",
166170
"--no-default-keyring",
167-
"--keyring", "/Users/jb/src/kastelo/ezapt/ring.gpg",
168-
"--detach-sign", filepath.Join(dist, "Release"),
169-
).CombinedOutput(); err != nil {
171+
"--keyring", keyring,
172+
}
173+
for _, user := range users {
174+
opts = append(opts, "-u", user)
175+
}
176+
opts = append(opts, "--detach-sign", filepath.Join(dist, "Release"))
177+
178+
if bs, err := exec.Command("gpg", opts...).CombinedOutput(); err != nil {
170179
return fmt.Errorf("Failed to sign release: %s", bs)
171180
}
172181
if err := compress(filepath.Join(dist, "Release.gpg")); err != nil {

0 commit comments

Comments
 (0)