From 1b934f4c8acf40aa185f5dd4da03a099cab2d4c8 Mon Sep 17 00:00:00 2001 From: tony Date: Thu, 30 May 2024 20:24:04 +0300 Subject: [PATCH] feat: add support for user.signingKey #32 --- cmd/zit/main.go | 2 +- internal/config/config.go | 10 ++++++++-- internal/identity/identity.go | 15 +++------------ internal/identity/set_cmd.go | 15 +++++++++++++++ 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/cmd/zit/main.go b/cmd/zit/main.go index 302424e..4bcfa24 100644 --- a/cmd/zit/main.go +++ b/cmd/zit/main.go @@ -10,7 +10,7 @@ import ( "github.com/urfave/cli/v2" ) -const AppVersion = "v2.6.1+1" +const AppVersion = "v2.7.0" func main() { app := &cli.App{ diff --git a/internal/config/config.go b/internal/config/config.go index 2fedc17..f0ccfac 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -32,8 +32,14 @@ type HostConfig struct { // User TODO type User struct { - Name string `json:"name" yaml:"name"` - Email string `json:"email" yaml:"email"` + Name string `json:"name" yaml:"name"` + Email string `json:"email" yaml:"email"` + Signing *Signing `json:"sign" yaml:"sign"` +} + +type Signing struct { + Key string `json:"key" yaml:"key"` + Format string `json:"format" yaml:"format"` } // Override TODO diff --git a/internal/identity/identity.go b/internal/identity/identity.go index ecec32a..ec76fda 100644 --- a/internal/identity/identity.go +++ b/internal/identity/identity.go @@ -9,10 +9,7 @@ func findBestMatch(conf config.HostConfig, repo gitutil.RepoInfo) *config.User { var user *config.User if conf.Default != nil { - user = &config.User{ - Name: conf.Default.Name, - Email: conf.Default.Email, - } + user = conf.Default } if conf.Overrides == nil { @@ -22,18 +19,12 @@ func findBestMatch(conf config.HostConfig, repo gitutil.RepoInfo) *config.User { for _, override := range conf.Overrides { if override.Repo != "" { if override.Owner == repo.Owner && override.Repo == repo.Name { - return &config.User{ - Name: override.User.Name, - Email: override.User.Email, - } + return &override.User } } if override.Owner == repo.Owner { - return &config.User{ - Name: override.User.Name, - Email: override.User.Email, - } + return &override.User } } diff --git a/internal/identity/set_cmd.go b/internal/identity/set_cmd.go index 225fb5b..4db27b4 100644 --- a/internal/identity/set_cmd.go +++ b/internal/identity/set_cmd.go @@ -89,9 +89,24 @@ defined in the configuration file: if err := gitutil.SetConfig(gitClient, "--local", "user.name", cred.Name); err != nil { return err } + if err := gitutil.SetConfig(gitClient, "--local", "user.email", cred.Email); err != nil { return err } + + if sign := cred.Signing; sign != nil { + if err := gitutil.SetConfig(gitClient, "--local", "commit.gpgsign", "true"); err != nil { + return err + } + + if err := gitutil.SetConfig(gitClient, "--local", "user.signingKey", sign.Key); err != nil { + return err + } + + if err := gitutil.SetConfig(gitClient, "--local", "gpg.format", sign.Format); err != nil { + return err + } + } } if dryRun {