commit:     8a9d1f129ad73daa975a56f793d65200add3d8ed
Author:     Sergey Torokhov <torokhov-s-a <AT> yandex <DOT> ru>
AuthorDate: Sat Oct 10 13:29:10 2020 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Sat Oct 10 13:33:28 2020 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=8a9d1f12

dev-vcs/lazygit: 0.23.1-r1, add SSH key passphrase prompt patch

Signed-off-by: Sergey Torokhov <torokhov-s-a <AT> yandex.ru>

 .../files/lazygit-0.23.1_ssh_passphrase.patch      | 122 +++++++++++++++++++++
 dev-vcs/lazygit/lazygit-0.23.1-r1.ebuild           |  38 +++++++
 2 files changed, 160 insertions(+)

diff --git a/dev-vcs/lazygit/files/lazygit-0.23.1_ssh_passphrase.patch 
b/dev-vcs/lazygit/files/lazygit-0.23.1_ssh_passphrase.patch
new file mode 100644
index 00000000..11d63bdf
--- /dev/null
+++ b/dev-vcs/lazygit/files/lazygit-0.23.1_ssh_passphrase.patch
@@ -0,0 +1,122 @@
+diff -Naur 
a/src/github.com/jesseduffield/lazygit/pkg/commands/oscommands/os.go 
b/src/github.com/jesseduffield/lazygit/pkg/commands/oscommands/os.go
+--- a/src/github.com/jesseduffield/lazygit/pkg/commands/oscommands/os.go       
2020-10-10 02:34:14.000000000 +0300
++++ b/src/github.com/jesseduffield/lazygit/pkg/commands/oscommands/os.go       
2020-10-10 14:00:26.000000000 +0300
+@@ -143,18 +143,19 @@
+       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 {
+               ttyText = ttyText + " " + word
+ 
+               prompts := map[string]string{
+-                      `.+'s password:`:         "password",
+-                      `Password\s*for\s*'.+':`: "password",
+-                      `Username\s*for\s*'.+':`: "username",
++                      `.+'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 {
+diff -Naur a/src/github.com/jesseduffield/lazygit/pkg/gui/credentials_panel.go 
b/src/github.com/jesseduffield/lazygit/pkg/gui/credentials_panel.go
+--- a/src/github.com/jesseduffield/lazygit/pkg/gui/credentials_panel.go        
2020-10-10 02:34:14.000000000 +0300
++++ b/src/github.com/jesseduffield/lazygit/pkg/gui/credentials_panel.go        
2020-10-10 03:17:57.000000000 +0300
+@@ -9,7 +9,7 @@
+ 
+ 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 @@
+               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 @@
+               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) 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)
+diff -Naur a/src/github.com/jesseduffield/lazygit/pkg/i18n/dutch.go 
b/src/github.com/jesseduffield/lazygit/pkg/i18n/dutch.go
+--- a/src/github.com/jesseduffield/lazygit/pkg/i18n/dutch.go   2020-10-10 
02:34:14.000000000 +0300
++++ b/src/github.com/jesseduffield/lazygit/pkg/i18n/dutch.go   2020-10-10 
02:57:03.000000000 +0300
+@@ -19,6 +19,7 @@
+               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",
+diff -Naur a/src/github.com/jesseduffield/lazygit/pkg/i18n/english.go 
b/src/github.com/jesseduffield/lazygit/pkg/i18n/english.go
+--- a/src/github.com/jesseduffield/lazygit/pkg/i18n/english.go 2020-10-10 
02:34:14.000000000 +0300
++++ b/src/github.com/jesseduffield/lazygit/pkg/i18n/english.go 2020-10-10 
02:56:08.000000000 +0300
+@@ -30,6 +30,7 @@
+       CommitMessage                       string
+       CredentialsUsername                 string
+       CredentialsPassword                 string
++      CredentialsPassphrase               string
+       PassUnameWrong                      string
+       CommitChanges                       string
+       AmendLastCommit                     string
+@@ -519,7 +520,8 @@
+               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.",
+diff -Naur a/src/github.com/jesseduffield/lazygit/pkg/i18n/polish.go 
b/src/github.com/jesseduffield/lazygit/pkg/i18n/polish.go
+--- a/src/github.com/jesseduffield/lazygit/pkg/i18n/polish.go  2020-10-10 
02:34:14.000000000 +0300
++++ b/src/github.com/jesseduffield/lazygit/pkg/i18n/polish.go  2020-10-10 
02:49:23.000000000 +0300
+@@ -15,7 +15,8 @@
+               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ń.",

diff --git a/dev-vcs/lazygit/lazygit-0.23.1-r1.ebuild 
b/dev-vcs/lazygit/lazygit-0.23.1-r1.ebuild
new file mode 100644
index 00000000..b73db124
--- /dev/null
+++ b/dev-vcs/lazygit/lazygit-0.23.1-r1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+EGO_PN="github.com/jesseduffield/lazygit"
+
+inherit golang-build golang-vcs-snapshot
+
+DESCRIPTION="Lazygit, a simple terminal UI for git commands"
+HOMEPAGE="https://github.com/jesseduffield/lazygit";
+SRC_URI="https://github.com/jesseduffield/${PN}/archive/v${PV}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="doc"
+
+DEPEND=( sys-libs/glibc )
+RDEPEND=(
+       ${DEPEND}
+       dev-vcs/git
+)
+
+DOCS=( src/${EGO_PN}/{CONTRIBUTING,README}.md )
+
+PATCHES=( "${FILESDIR}/${P}_ssh_passphrase.patch" )
+
+src_compile() {
+       GOPATH="${S}" go build -v -o bin/lazygit src/${EGO_PN}/main.go || die
+}
+
+src_install() {
+       dobin bin/lazygit
+
+       use doc && dodoc -r "src/${EGO_PN}/docs/."
+       einstalldocs
+}

Reply via email to