Skip to content

Commit

Permalink
logic fix
Browse files Browse the repository at this point in the history
Signed-off-by: bryans-go <[email protected]>
  • Loading branch information
bryans-go committed Sep 27, 2024
1 parent a33cb71 commit 58d6c16
Showing 1 changed file with 16 additions and 14 deletions.
30 changes: 16 additions & 14 deletions pkg/views/gitprovider/select.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,15 +143,14 @@ func GitProviderSelectionView(gitProviderAddView *apiclient.SetGitProviderConfig
huh.NewInput().
Title("Signing Key").
Value(gitProviderAddView.SigningKey).
DescriptionFunc(func() string {
return getSigningKeyDescription(*gitProviderAddView.SigningMethod)
}, nil).
Validate(func(str string) error {
if *gitProviderAddView.SigningMethod != "none" && str == "" {
return errors.New("signing key cannot be blank when a signing method is selected")
}
if *gitProviderAddView.SigningMethod == "gpg" {
if err := isValidGPGKey(str); err != nil {
return err
}
}

if *gitProviderAddView.SigningMethod == "ssh" {
if err := isValidSSHKey(str); err != nil {
return err
Expand All @@ -165,6 +164,7 @@ func GitProviderSelectionView(gitProviderAddView *apiclient.SetGitProviderConfig
).WithTheme(views.GetCustomTheme())

if !isDeleting {
fmt.Print("\033[H\033[2J")
views.RenderInfoMessage(getGitProviderSigningHelpMessage(gitProviderAddView.Id))
}

Expand All @@ -174,14 +174,6 @@ func GitProviderSelectionView(gitProviderAddView *apiclient.SetGitProviderConfig
}
}

func isValidGPGKey(key string) error {
gpgKeyPattern := regexp.MustCompile(`^[A-Fa-f0-9]{16,40}$`)
if !gpgKeyPattern.MatchString(key) {
return errors.New("invalid GPG key: must be 16-40 hexadecimal characters")
}
return nil
}

func isValidSSHKey(key string) error {
sshKeyPattern := regexp.MustCompile(`^(ssh-(rsa|ed25519|dss|ecdsa-sha2-nistp(256|384|521)))\s+[A-Za-z0-9+/=]+(\s+.+)?$`)
if !sshKeyPattern.MatchString(key) {
Expand Down Expand Up @@ -217,6 +209,17 @@ func getApiUrlDescription(gitProviderId string) string {
return ""
}

func getSigningKeyDescription(signingMethod string) string {
switch signingMethod {
case "gpg":
return "Provide your GPG key ID (e.g., 30F2B65B9246B6CA) for signing commits."
case "ssh":
return "Provide your public SSH key (e.g., ssh-ed25519 AAAAC3...<rest of key>) for secure signing."
default:
return ""
}
}

func getGitProviderHelpMessage(gitProviderId string) string {
message := fmt.Sprintf("%s\n%s\n\n%s%s",
lipgloss.NewStyle().Foreground(views.Green).Bold(true).Render("More information on:"),
Expand All @@ -236,7 +239,6 @@ func getGitProviderHelpMessage(gitProviderId string) string {
}

func getGitProviderSigningHelpMessage(gitProviderId string) string {
fmt.Print("\033[H\033[2J")
signingDocsLink := config.GetDocsLinkForCommitSigning(gitProviderId)

if signingDocsLink != "" {
Expand Down

0 comments on commit 58d6c16

Please sign in to comment.