mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-03-31 22:22:14 +02:00
Add SSH key passphrase prompt to pull/push from/to remote git repo
This commit resolves issue with absence of ssh key prompting to pull from or push to remote git repository. I checked lazygit with this patch for successfully pull from and push to https://gitweb.gentoo.org/repo/proj/guru.git repository. While for lazygit-0.23.1 I'm not able to do that. The check for Passphrase follows the Password because of more long time before SSH key is prompt in terminal. Otherwise after timeout "Password" prompt is appears. Excuse me for google translated i18n dutch lines. Bug: https://github.com/jesseduffield/lazygit/issues/534 Signed-off-by: band-a-prend <torokhov-s-a@yandex.ru>
This commit is contained in:
parent
a0963f8036
commit
582fd24d78
@ -143,9 +143,9 @@ func (c *OSCommand) RunCommandWithOutputLive(command string, output func(string)
|
||||
return RunCommandWithOutputLiveWrapper(c, command, output)
|
||||
}
|
||||
|
||||
// DetectUnamePass detect a username / password question in a command
|
||||
// promptUserForCredential is a function that gets executed when this function detect you need to fillin a password
|
||||
// The promptUserForCredential argument will be "username" or "password" and expects the user's password or username back
|
||||
// DetectUnamePass detect a username / password / passphrase question in a command
|
||||
// promptUserForCredential is a function that gets executed when this function detect you need to fillin a password or passphrase
|
||||
// The promptUserForCredential argument will be "username", "password" or "passphrase" and expects the user's password/passphrase or username back
|
||||
func (c *OSCommand) DetectUnamePass(command string, promptUserForCredential func(string) string) error {
|
||||
ttyText := ""
|
||||
errMessage := c.RunCommandWithOutputLive(command, func(word string) string {
|
||||
@ -155,6 +155,7 @@ func (c *OSCommand) DetectUnamePass(command string, promptUserForCredential func
|
||||
`.+'s password:`: "password",
|
||||
`Password\s*for\s*'.+':`: "password",
|
||||
`Username\s*for\s*'.+':`: "username",
|
||||
`Enter\s*passphrase\s*for\s*key\s*'.+':`: "passphrase",
|
||||
}
|
||||
|
||||
for pattern, askFor := range prompts {
|
||||
|
@ -9,7 +9,7 @@ import (
|
||||
|
||||
type credentials chan string
|
||||
|
||||
// promptUserForCredential wait for a username or password input from the credentials popup
|
||||
// promptUserForCredential wait for a username, password or passphrase input from the credentials popup
|
||||
func (gui *Gui) promptUserForCredential(passOrUname string) string {
|
||||
gui.credentials = make(chan string)
|
||||
gui.g.Update(func(g *gocui.Gui) error {
|
||||
@ -17,9 +17,12 @@ func (gui *Gui) promptUserForCredential(passOrUname string) string {
|
||||
if passOrUname == "username" {
|
||||
credentialsView.Title = gui.Tr.CredentialsUsername
|
||||
credentialsView.Mask = 0
|
||||
} else {
|
||||
} else if passOrUname == "password" {
|
||||
credentialsView.Title = gui.Tr.CredentialsPassword
|
||||
credentialsView.Mask = '*'
|
||||
} else {
|
||||
credentialsView.Title = gui.Tr.CredentialsPassphrase
|
||||
credentialsView.Mask = '*'
|
||||
}
|
||||
|
||||
if err := gui.switchContext(gui.Contexts.Credentials.Context); err != nil {
|
||||
@ -30,7 +33,7 @@ func (gui *Gui) promptUserForCredential(passOrUname string) string {
|
||||
return nil
|
||||
})
|
||||
|
||||
// wait for username/passwords input
|
||||
// wait for username/passwords/passphrase input
|
||||
userInput := <-gui.credentials
|
||||
return userInput + "\n"
|
||||
}
|
||||
@ -70,10 +73,10 @@ func (gui *Gui) handleCredentialsViewFocused() error {
|
||||
func (gui *Gui) handleCredentialsPopup(cmdErr error) {
|
||||
if cmdErr != nil {
|
||||
errMessage := cmdErr.Error()
|
||||
if strings.Contains(errMessage, "Invalid username or password") {
|
||||
if strings.Contains(errMessage, "Invalid username, password or passphrase") {
|
||||
errMessage = gui.Tr.PassUnameWrong
|
||||
}
|
||||
// we are not logging this error because it may contain a password
|
||||
// we are not logging this error because it may contain a password or a passphrase
|
||||
gui.createErrorPanel(errMessage)
|
||||
} else {
|
||||
_ = gui.closeConfirmationPrompt(false)
|
||||
|
@ -19,6 +19,7 @@ func dutchTranslationSet() TranslationSet {
|
||||
CommitMessage: "Commit bericht",
|
||||
CredentialsUsername: "Gebruikersnaam",
|
||||
CredentialsPassword: "Wachtwoord",
|
||||
CredentialsPassphrase: "Voer een wachtwoordzin in voor de SSH-sleutel",
|
||||
PassUnameWrong: "Wachtwoord en/of gebruikersnaam verkeert",
|
||||
CommitChanges: "Commit veranderingen",
|
||||
AmendLastCommit: "wijzig laatste commit",
|
||||
|
@ -30,6 +30,7 @@ type TranslationSet struct {
|
||||
CommitMessage string
|
||||
CredentialsUsername string
|
||||
CredentialsPassword string
|
||||
CredentialsPassphrase string
|
||||
PassUnameWrong string
|
||||
CommitChanges string
|
||||
AmendLastCommit string
|
||||
@ -519,7 +520,8 @@ func englishTranslationSet() TranslationSet {
|
||||
CommitMessage: "Commit message",
|
||||
CredentialsUsername: "Username",
|
||||
CredentialsPassword: "Password",
|
||||
PassUnameWrong: "Password and/or username wrong",
|
||||
CredentialsPassphrase: "Enter passphrase for SSH key",
|
||||
PassUnameWrong: "Password, passphrase and/or username wrong",
|
||||
CommitChanges: "commit changes",
|
||||
AmendLastCommit: "amend last commit",
|
||||
SureToAmend: "Are you sure you want to amend last commit? Afterwards, you can change commit message from the commits panel.",
|
||||
|
@ -15,7 +15,8 @@ func polishTranslationSet() TranslationSet {
|
||||
CommitMessage: "Wiadomość commita",
|
||||
CredentialsUsername: "Username",
|
||||
CredentialsPassword: "Password",
|
||||
PassUnameWrong: "Password and/or username wrong",
|
||||
CredentialsPassphrase: "Passphrase",
|
||||
PassUnameWrong: "Password, passphrase and/or username wrong",
|
||||
CommitChanges: "commituj zmiany",
|
||||
AmendLastCommit: "zmień ostatnie zatwierdzenie",
|
||||
SureToAmend: "Czy na pewno chcesz zmienić ostatnie zatwierdzenie? Możesz zmienić komunikat zatwierdzenia z panelu zatwierdzeń.",
|
||||
|
Loading…
x
Reference in New Issue
Block a user