@@ -2,11 +2,9 @@ package publish
2
2
3
3
import (
4
4
"compress/gzip"
5
- "fmt"
6
5
"io"
7
6
"log/slog"
8
7
"os"
9
- "os/exec"
10
8
"path/filepath"
11
9
"slices"
12
10
"strings"
@@ -145,43 +143,44 @@ func writeRelease(dist string) error {
145
143
return nil
146
144
}
147
145
148
- func signRelease (dist , keyring string , users []string ) error {
149
- opts := []string {
150
- "-o" , filepath .Join (dist , "InRelease" ),
151
- "--yes" ,
152
- "--no-default-keyring" ,
153
- "--keyring" , keyring ,
146
+ func signRelease (dist string , s * signer ) error {
147
+ in , err := os .Open (filepath .Join (dist , "Release" ))
148
+ if err != nil {
149
+ return err
154
150
}
155
- for _ , user := range users {
156
- opts = append (opts , "-u" , user )
151
+ defer in .Close ()
152
+
153
+ out , err := os .Create (filepath .Join (dist , "Release.gpg" ))
154
+ if err != nil {
155
+ return err
157
156
}
158
- opts = append (opts , "--clear-sign" , filepath .Join (dist , "Release" ))
159
- if bs , err := exec .Command ("gpg" , opts ... ).CombinedOutput (); err != nil {
160
- return fmt .Errorf ("Failed to sign release: %s" , bs )
157
+ if err := s .DetachSign (in , out ); err != nil {
158
+ return err
161
159
}
162
- if err := compress ( filepath . Join ( dist , "InRelease" ) ); err != nil {
160
+ if err := out . Close ( ); err != nil {
163
161
return err
164
162
}
165
-
166
- opts = []string {
167
- "-o" , filepath .Join (dist , "Release.gpg" ),
168
- "-a" ,
169
- "--yes" ,
170
- "--no-default-keyring" ,
171
- "--keyring" , keyring ,
163
+ if err := compress (out .Name ()); err != nil {
164
+ return err
172
165
}
173
- for _ , user := range users {
174
- opts = append (opts , "-u" , user )
166
+
167
+ if _ , err := in .Seek (0 , io .SeekStart ); err != nil {
168
+ return err
175
169
}
176
- opts = append (opts , "--detach-sign" , filepath .Join (dist , "Release" ))
177
170
178
- if bs , err := exec .Command ("gpg" , opts ... ).CombinedOutput (); err != nil {
179
- return fmt .Errorf ("Failed to sign release: %s" , bs )
171
+ out , err = os .Create (filepath .Join (dist , "InRelease" ))
172
+ if err != nil {
173
+ return err
180
174
}
181
- if err := compress (filepath .Join (dist , "Release.gpg" )); err != nil {
175
+ if err := s .ClearSign (in , out ); err != nil {
176
+ return err
177
+ }
178
+ if err := out .Close (); err != nil {
179
+ return err
180
+ }
181
+ if err := compress (out .Name ()); err != nil {
182
182
return err
183
183
}
184
-
185
184
return nil
186
185
}
187
186
0 commit comments