mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-06-15 00:15:32 +02:00
Handle pending actions properly in git commands that require credentials
I don't know if this is a hack or not: we run a git command and increment the pending action count to 1 but at some point the command requests a username or password, so we need to prompt the user to enter that. At that point we don't want to say that there is a pending action, so we decrement the action count before prompting the user and then re-increment it again afterward. Given that we panic when the counter goes below zero, it's important that it's not zero when we run the git command (should be impossible anyway). I toyed with a different approach using channels and a long-running goroutine that handles all commands that request credentials but it feels over-engineered compared to this commit's approach.
This commit is contained in:
@ -26,15 +26,27 @@ type guiIO struct {
|
||||
// this allows us to request info from the user like username/password, in the event
|
||||
// that a command requests it.
|
||||
// the 'credential' arg is something like 'username' or 'password'
|
||||
promptForCredentialFn func(credential CredentialType) string
|
||||
promptForCredentialFn func(credential CredentialType) <-chan string
|
||||
|
||||
IncrementBusyCount func()
|
||||
DecrementBusyCount func()
|
||||
}
|
||||
|
||||
func NewGuiIO(log *logrus.Entry, logCommandFn func(string, bool), newCmdWriterFn func() io.Writer, promptForCredentialFn func(CredentialType) string) *guiIO {
|
||||
func NewGuiIO(
|
||||
log *logrus.Entry,
|
||||
logCommandFn func(string, bool),
|
||||
newCmdWriterFn func() io.Writer,
|
||||
promptForCredentialFn func(CredentialType) <-chan string,
|
||||
IncrementBusyCount func(),
|
||||
DecrementBusyCount func(),
|
||||
) *guiIO {
|
||||
return &guiIO{
|
||||
log: log,
|
||||
logCommandFn: logCommandFn,
|
||||
newCmdWriterFn: newCmdWriterFn,
|
||||
promptForCredentialFn: promptForCredentialFn,
|
||||
IncrementBusyCount: IncrementBusyCount,
|
||||
DecrementBusyCount: DecrementBusyCount,
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,5 +58,7 @@ func NewNullGuiIO(log *logrus.Entry) *guiIO {
|
||||
logCommandFn: func(string, bool) {},
|
||||
newCmdWriterFn: func() io.Writer { return io.Discard },
|
||||
promptForCredentialFn: failPromptFn,
|
||||
IncrementBusyCount: func() {},
|
||||
DecrementBusyCount: func() {},
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user