mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-01-08 04:04:22 +02:00
14ecc15e71
The global counter approach is easy to understand but it's brittle and depends on implicit behaviour that is not very discoverable. With a global counter, if any goroutine accidentally decrements the counter twice, we'll think lazygit is idle when it's actually busy. Likewise if a goroutine accidentally increments the counter twice we'll think lazygit is busy when it's actually idle. With the new approach we have a map of tasks where each task can either be busy or not. We create a new task and add it to the map when we spawn a worker goroutine (among other things) and we remove it once the task is done. The task can also be paused and continued for situations where we switch back and forth between running a program and asking for user input. In order for this to work with `git push` (and other commands that require credentials) we need to obtain the task from gocui when we create the worker goroutine, and then pass it along to the commands package to pause/continue the task as required. This is MUCH more discoverable than the old approach which just decremented and incremented the global counter from within the commands package, but it's at the cost of expanding some function signatures (arguably a good thing). Likewise, whenever you want to call WithWaitingStatus or WithLoaderPanel the callback will now have access to the task for pausing/ continuing. We only need to actually make use of this functionality in a couple of places so it's a high price to pay, but I don't know if I want to introduce a WithWaitingStatusTask and WithLoaderPanelTask function (open to suggestions).
320 lines
11 KiB
Plaintext
320 lines
11 KiB
Plaintext
# github.com/OpenPeeDeeP/xdg v1.0.0
|
|
## explicit
|
|
github.com/OpenPeeDeeP/xdg
|
|
# github.com/atotto/clipboard v0.1.4
|
|
## explicit
|
|
github.com/atotto/clipboard
|
|
# github.com/aybabtme/humanlog v0.4.1
|
|
## explicit; go 1.13
|
|
github.com/aybabtme/humanlog
|
|
# github.com/cli/safeexec v1.0.0
|
|
## explicit; go 1.15
|
|
github.com/cli/safeexec
|
|
# github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21
|
|
## explicit
|
|
github.com/cloudfoundry/jibber_jabber
|
|
# github.com/creack/pty v1.1.11
|
|
## explicit; go 1.13
|
|
github.com/creack/pty
|
|
# github.com/davecgh/go-spew v1.1.1
|
|
## explicit
|
|
github.com/davecgh/go-spew/spew
|
|
# github.com/emirpasic/gods v1.12.0
|
|
## explicit
|
|
github.com/emirpasic/gods/containers
|
|
github.com/emirpasic/gods/lists
|
|
github.com/emirpasic/gods/lists/arraylist
|
|
github.com/emirpasic/gods/trees
|
|
github.com/emirpasic/gods/trees/binaryheap
|
|
github.com/emirpasic/gods/utils
|
|
# github.com/fatih/color v1.9.0
|
|
## explicit; go 1.13
|
|
github.com/fatih/color
|
|
# github.com/fsmiamoto/git-todo-parser v0.0.5
|
|
## explicit; go 1.13
|
|
github.com/fsmiamoto/git-todo-parser/todo
|
|
# github.com/fsnotify/fsnotify v1.4.7
|
|
## explicit
|
|
github.com/fsnotify/fsnotify
|
|
# github.com/gdamore/encoding v1.0.0
|
|
## explicit; go 1.9
|
|
github.com/gdamore/encoding
|
|
# github.com/gdamore/tcell/v2 v2.6.0
|
|
## explicit; go 1.12
|
|
github.com/gdamore/tcell/v2
|
|
github.com/gdamore/tcell/v2/terminfo
|
|
github.com/gdamore/tcell/v2/terminfo/a/aixterm
|
|
github.com/gdamore/tcell/v2/terminfo/a/alacritty
|
|
github.com/gdamore/tcell/v2/terminfo/a/ansi
|
|
github.com/gdamore/tcell/v2/terminfo/b/beterm
|
|
github.com/gdamore/tcell/v2/terminfo/base
|
|
github.com/gdamore/tcell/v2/terminfo/c/cygwin
|
|
github.com/gdamore/tcell/v2/terminfo/d/dtterm
|
|
github.com/gdamore/tcell/v2/terminfo/dynamic
|
|
github.com/gdamore/tcell/v2/terminfo/e/emacs
|
|
github.com/gdamore/tcell/v2/terminfo/extended
|
|
github.com/gdamore/tcell/v2/terminfo/f/foot
|
|
github.com/gdamore/tcell/v2/terminfo/g/gnome
|
|
github.com/gdamore/tcell/v2/terminfo/h/hpterm
|
|
github.com/gdamore/tcell/v2/terminfo/k/konsole
|
|
github.com/gdamore/tcell/v2/terminfo/k/kterm
|
|
github.com/gdamore/tcell/v2/terminfo/l/linux
|
|
github.com/gdamore/tcell/v2/terminfo/p/pcansi
|
|
github.com/gdamore/tcell/v2/terminfo/r/rxvt
|
|
github.com/gdamore/tcell/v2/terminfo/s/screen
|
|
github.com/gdamore/tcell/v2/terminfo/s/simpleterm
|
|
github.com/gdamore/tcell/v2/terminfo/s/sun
|
|
github.com/gdamore/tcell/v2/terminfo/t/termite
|
|
github.com/gdamore/tcell/v2/terminfo/t/tmux
|
|
github.com/gdamore/tcell/v2/terminfo/v/vt100
|
|
github.com/gdamore/tcell/v2/terminfo/v/vt102
|
|
github.com/gdamore/tcell/v2/terminfo/v/vt220
|
|
github.com/gdamore/tcell/v2/terminfo/v/vt320
|
|
github.com/gdamore/tcell/v2/terminfo/v/vt400
|
|
github.com/gdamore/tcell/v2/terminfo/v/vt420
|
|
github.com/gdamore/tcell/v2/terminfo/v/vt52
|
|
github.com/gdamore/tcell/v2/terminfo/w/wy50
|
|
github.com/gdamore/tcell/v2/terminfo/w/wy60
|
|
github.com/gdamore/tcell/v2/terminfo/w/wy99_ansi
|
|
github.com/gdamore/tcell/v2/terminfo/x/xfce
|
|
github.com/gdamore/tcell/v2/terminfo/x/xterm
|
|
github.com/gdamore/tcell/v2/terminfo/x/xterm_kitty
|
|
github.com/gdamore/tcell/v2/terminfo/x/xterm_termite
|
|
# github.com/go-errors/errors v1.4.2
|
|
## explicit; go 1.14
|
|
github.com/go-errors/errors
|
|
# github.com/go-git/gcfg v1.5.0
|
|
## explicit
|
|
github.com/go-git/gcfg
|
|
github.com/go-git/gcfg/scanner
|
|
github.com/go-git/gcfg/token
|
|
github.com/go-git/gcfg/types
|
|
# github.com/go-git/go-billy/v5 v5.0.0
|
|
## explicit; go 1.13
|
|
github.com/go-git/go-billy/v5
|
|
github.com/go-git/go-billy/v5/helper/chroot
|
|
github.com/go-git/go-billy/v5/helper/polyfill
|
|
github.com/go-git/go-billy/v5/osfs
|
|
github.com/go-git/go-billy/v5/util
|
|
# github.com/go-logfmt/logfmt v0.5.0
|
|
## explicit; go 1.13
|
|
github.com/go-logfmt/logfmt
|
|
# github.com/gobwas/glob v0.2.3
|
|
## explicit
|
|
github.com/gobwas/glob
|
|
github.com/gobwas/glob/compiler
|
|
github.com/gobwas/glob/match
|
|
github.com/gobwas/glob/syntax
|
|
github.com/gobwas/glob/syntax/ast
|
|
github.com/gobwas/glob/syntax/lexer
|
|
github.com/gobwas/glob/util/runes
|
|
github.com/gobwas/glob/util/strings
|
|
# github.com/google/go-cmp v0.5.6
|
|
## explicit; go 1.8
|
|
# github.com/gookit/color v1.4.2
|
|
## explicit; go 1.12
|
|
github.com/gookit/color
|
|
# github.com/imdario/mergo v0.3.11
|
|
## explicit; go 1.13
|
|
github.com/imdario/mergo
|
|
# github.com/integrii/flaggy v1.4.0
|
|
## explicit; go 1.12
|
|
github.com/integrii/flaggy
|
|
# github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99
|
|
## explicit
|
|
github.com/jbenet/go-context/io
|
|
# github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68
|
|
## explicit; go 1.18
|
|
github.com/jesseduffield/generics/maps
|
|
github.com/jesseduffield/generics/set
|
|
github.com/jesseduffield/generics/slices
|
|
# github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d
|
|
## explicit; go 1.13
|
|
github.com/jesseduffield/go-git/v5
|
|
github.com/jesseduffield/go-git/v5/config
|
|
github.com/jesseduffield/go-git/v5/internal/revision
|
|
github.com/jesseduffield/go-git/v5/internal/url
|
|
github.com/jesseduffield/go-git/v5/plumbing
|
|
github.com/jesseduffield/go-git/v5/plumbing/cache
|
|
github.com/jesseduffield/go-git/v5/plumbing/color
|
|
github.com/jesseduffield/go-git/v5/plumbing/filemode
|
|
github.com/jesseduffield/go-git/v5/plumbing/format/config
|
|
github.com/jesseduffield/go-git/v5/plumbing/format/diff
|
|
github.com/jesseduffield/go-git/v5/plumbing/format/gitignore
|
|
github.com/jesseduffield/go-git/v5/plumbing/format/idxfile
|
|
github.com/jesseduffield/go-git/v5/plumbing/format/index
|
|
github.com/jesseduffield/go-git/v5/plumbing/format/objfile
|
|
github.com/jesseduffield/go-git/v5/plumbing/format/packfile
|
|
github.com/jesseduffield/go-git/v5/plumbing/format/pktline
|
|
github.com/jesseduffield/go-git/v5/plumbing/object
|
|
github.com/jesseduffield/go-git/v5/plumbing/protocol/packp
|
|
github.com/jesseduffield/go-git/v5/plumbing/protocol/packp/capability
|
|
github.com/jesseduffield/go-git/v5/plumbing/protocol/packp/sideband
|
|
github.com/jesseduffield/go-git/v5/plumbing/revlist
|
|
github.com/jesseduffield/go-git/v5/plumbing/storer
|
|
github.com/jesseduffield/go-git/v5/plumbing/transport
|
|
github.com/jesseduffield/go-git/v5/plumbing/transport/client
|
|
github.com/jesseduffield/go-git/v5/plumbing/transport/file
|
|
github.com/jesseduffield/go-git/v5/plumbing/transport/git
|
|
github.com/jesseduffield/go-git/v5/plumbing/transport/http
|
|
github.com/jesseduffield/go-git/v5/plumbing/transport/internal/common
|
|
github.com/jesseduffield/go-git/v5/plumbing/transport/server
|
|
github.com/jesseduffield/go-git/v5/plumbing/transport/ssh
|
|
github.com/jesseduffield/go-git/v5/storage
|
|
github.com/jesseduffield/go-git/v5/storage/filesystem
|
|
github.com/jesseduffield/go-git/v5/storage/filesystem/dotgit
|
|
github.com/jesseduffield/go-git/v5/storage/memory
|
|
github.com/jesseduffield/go-git/v5/utils/binary
|
|
github.com/jesseduffield/go-git/v5/utils/diff
|
|
github.com/jesseduffield/go-git/v5/utils/ioutil
|
|
github.com/jesseduffield/go-git/v5/utils/merkletrie
|
|
github.com/jesseduffield/go-git/v5/utils/merkletrie/filesystem
|
|
github.com/jesseduffield/go-git/v5/utils/merkletrie/index
|
|
github.com/jesseduffield/go-git/v5/utils/merkletrie/internal/frame
|
|
github.com/jesseduffield/go-git/v5/utils/merkletrie/noder
|
|
# github.com/jesseduffield/gocui v0.3.1-0.20230709105400-44d9f78b4b52
|
|
## explicit; go 1.12
|
|
github.com/jesseduffield/gocui
|
|
# github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10
|
|
## explicit; go 1.18
|
|
github.com/jesseduffield/kill
|
|
# github.com/jesseduffield/lazycore v0.0.0-20221012050358-03d2e40243c5
|
|
## explicit; go 1.18
|
|
github.com/jesseduffield/lazycore/pkg/boxlayout
|
|
github.com/jesseduffield/lazycore/pkg/utils
|
|
# github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e
|
|
## explicit; go 1.15
|
|
github.com/jesseduffield/minimal/gitignore
|
|
# github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0
|
|
## explicit
|
|
github.com/kardianos/osext
|
|
# github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd
|
|
## explicit
|
|
github.com/kevinburke/ssh_config
|
|
# github.com/konsorten/go-windows-terminal-sequences v1.0.2
|
|
## explicit
|
|
github.com/konsorten/go-windows-terminal-sequences
|
|
# github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515
|
|
## explicit
|
|
github.com/kr/logfmt
|
|
# github.com/kylelemons/godebug v1.1.0
|
|
## explicit; go 1.11
|
|
# github.com/kyokomi/emoji/v2 v2.2.8
|
|
## explicit; go 1.14
|
|
github.com/kyokomi/emoji/v2
|
|
# github.com/lucasb-eyer/go-colorful v1.2.0
|
|
## explicit; go 1.12
|
|
github.com/lucasb-eyer/go-colorful
|
|
# github.com/mattn/go-colorable v0.1.11
|
|
## explicit; go 1.13
|
|
github.com/mattn/go-colorable
|
|
# github.com/mattn/go-isatty v0.0.14
|
|
## explicit; go 1.12
|
|
github.com/mattn/go-isatty
|
|
# github.com/mattn/go-runewidth v0.0.14
|
|
## explicit; go 1.9
|
|
github.com/mattn/go-runewidth
|
|
# github.com/mgutz/str v1.2.0
|
|
## explicit
|
|
github.com/mgutz/str
|
|
# github.com/mitchellh/go-homedir v1.1.0
|
|
## explicit
|
|
github.com/mitchellh/go-homedir
|
|
# github.com/onsi/ginkgo v1.10.3
|
|
## explicit
|
|
# github.com/onsi/gomega v1.7.1
|
|
## explicit
|
|
# github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5
|
|
## explicit
|
|
github.com/petermattis/goid
|
|
# github.com/pmezard/go-difflib v1.0.0
|
|
## explicit
|
|
github.com/pmezard/go-difflib/difflib
|
|
# github.com/rivo/uniseg v0.4.4
|
|
## explicit; go 1.18
|
|
github.com/rivo/uniseg
|
|
# github.com/sahilm/fuzzy v0.1.0
|
|
## explicit
|
|
github.com/sahilm/fuzzy
|
|
# github.com/samber/lo v1.31.0
|
|
## explicit; go 1.18
|
|
github.com/samber/lo
|
|
# github.com/sanity-io/litter v1.5.2
|
|
## explicit; go 1.14
|
|
github.com/sanity-io/litter
|
|
# github.com/sasha-s/go-deadlock v0.3.1
|
|
## explicit
|
|
github.com/sasha-s/go-deadlock
|
|
# github.com/sergi/go-diff v1.1.0
|
|
## explicit; go 1.12
|
|
github.com/sergi/go-diff/diffmatchpatch
|
|
# github.com/sirupsen/logrus v1.4.2
|
|
## explicit
|
|
github.com/sirupsen/logrus
|
|
# github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad
|
|
## explicit
|
|
github.com/spkg/bom
|
|
# github.com/stretchr/testify v1.8.0
|
|
## explicit; go 1.13
|
|
github.com/stretchr/testify/assert
|
|
# github.com/xanzy/ssh-agent v0.2.1
|
|
## explicit
|
|
github.com/xanzy/ssh-agent
|
|
# github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778
|
|
## explicit; go 1.15
|
|
github.com/xo/terminfo
|
|
# golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
|
|
## explicit; go 1.17
|
|
golang.org/x/crypto/blowfish
|
|
golang.org/x/crypto/cast5
|
|
golang.org/x/crypto/chacha20
|
|
golang.org/x/crypto/curve25519
|
|
golang.org/x/crypto/curve25519/internal/field
|
|
golang.org/x/crypto/ed25519
|
|
golang.org/x/crypto/ed25519/internal/edwards25519
|
|
golang.org/x/crypto/internal/poly1305
|
|
golang.org/x/crypto/internal/subtle
|
|
golang.org/x/crypto/openpgp
|
|
golang.org/x/crypto/openpgp/armor
|
|
golang.org/x/crypto/openpgp/elgamal
|
|
golang.org/x/crypto/openpgp/errors
|
|
golang.org/x/crypto/openpgp/packet
|
|
golang.org/x/crypto/openpgp/s2k
|
|
golang.org/x/crypto/ssh
|
|
golang.org/x/crypto/ssh/agent
|
|
golang.org/x/crypto/ssh/internal/bcrypt_pbkdf
|
|
golang.org/x/crypto/ssh/knownhosts
|
|
# golang.org/x/exp v0.0.0-20220318154914-8dddf5d87bd8
|
|
## explicit; go 1.18
|
|
golang.org/x/exp/constraints
|
|
golang.org/x/exp/slices
|
|
# golang.org/x/net v0.7.0
|
|
## explicit; go 1.17
|
|
golang.org/x/net/context
|
|
golang.org/x/net/internal/socks
|
|
golang.org/x/net/proxy
|
|
# golang.org/x/sys v0.10.0
|
|
## explicit; go 1.17
|
|
golang.org/x/sys/cpu
|
|
golang.org/x/sys/internal/unsafeheader
|
|
golang.org/x/sys/plan9
|
|
golang.org/x/sys/unix
|
|
golang.org/x/sys/windows
|
|
# golang.org/x/term v0.10.0
|
|
## explicit; go 1.17
|
|
golang.org/x/term
|
|
# golang.org/x/text v0.11.0
|
|
## explicit; go 1.17
|
|
golang.org/x/text/encoding
|
|
golang.org/x/text/encoding/internal/identifier
|
|
golang.org/x/text/transform
|
|
# gopkg.in/ozeidan/fuzzy-patricia.v3 v3.0.0
|
|
## explicit
|
|
gopkg.in/ozeidan/fuzzy-patricia.v3/patricia
|
|
# gopkg.in/warnings.v0 v0.1.2
|
|
## explicit
|
|
gopkg.in/warnings.v0
|
|
# gopkg.in/yaml.v3 v3.0.1
|
|
## explicit
|
|
gopkg.in/yaml.v3
|