aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2024-05-06 15:42:42 -0400
committerXe Iaso <me@xeiaso.net>2024-05-09 12:52:06 -0400
commit7633140c29fc669607a79d5067b387ee958045c2 (patch)
tree708f42ef28d925de9abddcb5ed664eb003f60ce9 /cmd
parentc1b2f4cb1aeda79660dae93779d5986b0044eac8 (diff)
downloadx-7633140c29fc669607a79d5067b387ee958045c2.tar.xz
x-7633140c29fc669607a79d5067b387ee958045c2.zip
cmd/yeet: GPG signing
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/yeet/internal/mkrpm/mkrpm.go28
-rw-r--r--cmd/yeet/yeetfile.js2
2 files changed, 26 insertions, 4 deletions
diff --git a/cmd/yeet/internal/mkrpm/mkrpm.go b/cmd/yeet/internal/mkrpm/mkrpm.go
index 71c48fd..e0904e3 100644
--- a/cmd/yeet/internal/mkrpm/mkrpm.go
+++ b/cmd/yeet/internal/mkrpm/mkrpm.go
@@ -17,8 +17,11 @@ import (
)
var (
- userName = flag.String("git-user-name", gitUserName(), "user name in Git")
- userEmail = flag.String("git-user-email", gitUserEmail(), "user email in Git")
+ gpgKeyFile = flag.String("gpg-key-file", gpgKeyFileLocation(), "GPG key file to sign the package")
+ gpgKeyID = flag.String("gpg-key-id", "", "GPG key ID to sign the package")
+ gpgKeyPassword = flag.String("gpg-key-password", "", "GPG key password to sign the package")
+ userName = flag.String("git-user-name", gitUserName(), "user name in Git")
+ userEmail = flag.String("git-user-email", gitUserEmail(), "user email in Git")
)
const (
@@ -26,6 +29,15 @@ const (
fallbackEmail = "mimi@xeserv.us"
)
+func gpgKeyFileLocation() string {
+ folder, err := os.UserConfigDir()
+ if err != nil {
+ return ""
+ }
+
+ return filepath.Join(folder, "within.website", "x", "yeet", "key.asc")
+}
+
func gitUserName() string {
name, err := gitconfig.User()
if err != nil {
@@ -76,8 +88,10 @@ func Build(p Package) (foutpath string, err error) {
switch r.(type) {
case error:
err = r.(error)
+ slog.Error("mkrpm: error while building", "err", err)
default:
err = fmt.Errorf("mkrpm: error while building: %v", r)
+ slog.Error("mkrpm: error while building", "err", err)
}
}
}()
@@ -91,6 +105,7 @@ func Build(p Package) (foutpath string, err error) {
return "", fmt.Errorf("mkrpm: can't make temporary directory")
}
defer os.RemoveAll(dir)
+ os.MkdirAll(dir, 0755)
defer func() {
os.Setenv("GOARCH", runtime.GOARCH)
@@ -151,12 +166,19 @@ func Build(p Package) (foutpath string, err error) {
info.Overridables.RPM.Group = p.Group
+ if *gpgKeyID != "" {
+ slog.Debug("using GPG key", "file", *gpgKeyFile, "id", gpgKeyID, "password", *gpgKeyPassword)
+ info.Overridables.RPM.Signature.KeyFile = *gpgKeyFile
+ info.Overridables.RPM.Signature.KeyID = gpgKeyID
+ info.Overridables.RPM.Signature.KeyPassphrase = *gpgKeyPassword
+ }
+
pkg, err := nfpm.Get("rpm")
if err != nil {
return "", fmt.Errorf("mkrpm: can't get RPM packager: %w", err)
}
- foutpath = fmt.Sprintf("%s-%s-%s.rpm", p.Name, p.Version, p.Goarch)
+ foutpath = pkg.ConventionalFileName(info)
fout, err := os.Create(foutpath)
if err != nil {
return "", fmt.Errorf("mkrpm: can't create output file: %w", err)
diff --git a/cmd/yeet/yeetfile.js b/cmd/yeet/yeetfile.js
index ebf7acf..0dcd8fc 100644
--- a/cmd/yeet/yeetfile.js
+++ b/cmd/yeet/yeetfile.js
@@ -8,6 +8,6 @@ go.install();
goarch,
build: (out) => {
- go.build("-o", `${out}/usr/bin/`);
+ go.build("-o", `${out}/usr/bin/yeet`);
},
})); \ No newline at end of file