mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-11-23 16:22:24 +03:00
Suppress output from background fetch
However, show it when there was an error. This is important for the case that a fork that you have as a remote was deleted, in which case the command log is the only way to get notified about that.
This commit is contained in:
@@ -79,6 +79,7 @@ func (self *SyncCommands) FetchBackgroundCmdObj() *oscommands.CmdObj {
|
|||||||
|
|
||||||
cmdObj := self.cmd.New(cmdArgs)
|
cmdObj := self.cmd.New(cmdArgs)
|
||||||
cmdObj.DontLog().FailOnCredentialRequest()
|
cmdObj.DontLog().FailOnCredentialRequest()
|
||||||
|
cmdObj.SuppressOutputUnlessError()
|
||||||
return cmdObj
|
return cmdObj
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ func TestSyncPush(t *testing.T) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
assert.True(t, cmdObj.ShouldLog())
|
assert.True(t, cmdObj.ShouldLog())
|
||||||
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT)
|
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT)
|
||||||
|
assert.False(t, cmdObj.ShouldSuppressOutputUnlessError())
|
||||||
}
|
}
|
||||||
s.test(cmdObj, err)
|
s.test(cmdObj, err)
|
||||||
})
|
})
|
||||||
@@ -124,6 +125,7 @@ func TestSyncFetch(t *testing.T) {
|
|||||||
test: func(cmdObj *oscommands.CmdObj) {
|
test: func(cmdObj *oscommands.CmdObj) {
|
||||||
assert.True(t, cmdObj.ShouldLog())
|
assert.True(t, cmdObj.ShouldLog())
|
||||||
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT)
|
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT)
|
||||||
|
assert.False(t, cmdObj.ShouldSuppressOutputUnlessError())
|
||||||
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--no-write-fetch-head"})
|
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--no-write-fetch-head"})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -133,6 +135,7 @@ func TestSyncFetch(t *testing.T) {
|
|||||||
test: func(cmdObj *oscommands.CmdObj) {
|
test: func(cmdObj *oscommands.CmdObj) {
|
||||||
assert.True(t, cmdObj.ShouldLog())
|
assert.True(t, cmdObj.ShouldLog())
|
||||||
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT)
|
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT)
|
||||||
|
assert.False(t, cmdObj.ShouldSuppressOutputUnlessError())
|
||||||
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all", "--no-write-fetch-head"})
|
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all", "--no-write-fetch-head"})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -162,6 +165,7 @@ func TestSyncFetchBackground(t *testing.T) {
|
|||||||
test: func(cmdObj *oscommands.CmdObj) {
|
test: func(cmdObj *oscommands.CmdObj) {
|
||||||
assert.False(t, cmdObj.ShouldLog())
|
assert.False(t, cmdObj.ShouldLog())
|
||||||
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL)
|
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL)
|
||||||
|
assert.True(t, cmdObj.ShouldSuppressOutputUnlessError())
|
||||||
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--no-write-fetch-head"})
|
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--no-write-fetch-head"})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -171,6 +175,7 @@ func TestSyncFetchBackground(t *testing.T) {
|
|||||||
test: func(cmdObj *oscommands.CmdObj) {
|
test: func(cmdObj *oscommands.CmdObj) {
|
||||||
assert.False(t, cmdObj.ShouldLog())
|
assert.False(t, cmdObj.ShouldLog())
|
||||||
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL)
|
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL)
|
||||||
|
assert.True(t, cmdObj.ShouldSuppressOutputUnlessError())
|
||||||
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all", "--no-write-fetch-head"})
|
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all", "--no-write-fetch-head"})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ type CmdObj struct {
|
|||||||
// see StreamOutput()
|
// see StreamOutput()
|
||||||
streamOutput bool
|
streamOutput bool
|
||||||
|
|
||||||
|
// see SuppressOutputUnlessError()
|
||||||
|
suppressOutputUnlessError bool
|
||||||
|
|
||||||
// see UsePty()
|
// see UsePty()
|
||||||
usePty bool
|
usePty bool
|
||||||
|
|
||||||
@@ -123,6 +126,18 @@ func (self *CmdObj) StreamOutput() *CmdObj {
|
|||||||
return self
|
return self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// when you call this, the streamed output will be suppressed unless there is an error
|
||||||
|
func (self *CmdObj) SuppressOutputUnlessError() *CmdObj {
|
||||||
|
self.suppressOutputUnlessError = true
|
||||||
|
|
||||||
|
return self
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns true if SuppressOutputUnlessError() was called
|
||||||
|
func (self *CmdObj) ShouldSuppressOutputUnlessError() bool {
|
||||||
|
return self.suppressOutputUnlessError
|
||||||
|
}
|
||||||
|
|
||||||
// returns true if StreamOutput() was called
|
// returns true if StreamOutput() was called
|
||||||
func (self *CmdObj) ShouldStreamOutput() bool {
|
func (self *CmdObj) ShouldStreamOutput() bool {
|
||||||
return self.streamOutput
|
return self.streamOutput
|
||||||
|
|||||||
@@ -227,7 +227,13 @@ func (self *cmdObjRunner) runAndStreamAux(
|
|||||||
cmdObj *CmdObj,
|
cmdObj *CmdObj,
|
||||||
onRun func(*cmdHandler, io.Writer),
|
onRun func(*cmdHandler, io.Writer),
|
||||||
) error {
|
) error {
|
||||||
cmdWriter := self.guiIO.newCmdWriterFn()
|
var cmdWriter io.Writer
|
||||||
|
var combinedOutput bytes.Buffer
|
||||||
|
if cmdObj.ShouldSuppressOutputUnlessError() {
|
||||||
|
cmdWriter = &combinedOutput
|
||||||
|
} else {
|
||||||
|
cmdWriter = self.guiIO.newCmdWriterFn()
|
||||||
|
}
|
||||||
|
|
||||||
if cmdObj.ShouldLog() {
|
if cmdObj.ShouldLog() {
|
||||||
self.logCmdObj(cmdObj)
|
self.logCmdObj(cmdObj)
|
||||||
@@ -267,6 +273,10 @@ func (self *cmdObjRunner) runAndStreamAux(
|
|||||||
self.log.Infof("%s (%s)", cmdObj.ToString(), time.Since(t))
|
self.log.Infof("%s (%s)", cmdObj.ToString(), time.Since(t))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if cmdObj.suppressOutputUnlessError {
|
||||||
|
_, _ = self.guiIO.newCmdWriterFn().Write(combinedOutput.Bytes())
|
||||||
|
}
|
||||||
|
|
||||||
errStr := stderr.String()
|
errStr := stderr.String()
|
||||||
if errStr != "" {
|
if errStr != "" {
|
||||||
return errors.New(errStr)
|
return errors.New(errStr)
|
||||||
|
|||||||
Reference in New Issue
Block a user