diff options
author | dwillist <dthornton@vmware.com> | 2021-01-15 00:33:34 -0500 |
---|---|---|
committer | dwillist <dthornton@vmware.com> | 2021-01-15 00:33:41 -0500 |
commit | d2e5ac1e5ab9bca20acc5ac0b30336e5be4c3010 (patch) | |
tree | 0b0eace8625c7bde5697022e45d4404ee5950340 | |
parent | fb4644cf13e4b2a8529477007d5c8c7922fee6b1 (diff) |
update colorization and formatting of output
Signed-off-by: dwillist <dthornton@vmware.com>
-rw-r--r-- | ' | 398 | ||||
-rw-r--r-- | cmd/root.go | 5 | ||||
-rw-r--r-- | dive/filetree/file_node.go | 26 | ||||
-rw-r--r-- | go.mod | 3 | ||||
-rw-r--r-- | go.sum | 315 | ||||
-rw-r--r-- | runtime/ui/app.go | 2 | ||||
-rw-r--r-- | runtime/ui/components/filetree_primative.go | 53 | ||||
-rw-r--r-- | runtime/ui/components/image_details_view.go | 14 | ||||
-rw-r--r-- | runtime/ui/components/layers_primative.go | 35 | ||||
-rw-r--r-- | runtime/ui/components/visible_grid.go | 21 | ||||
-rw-r--r-- | runtime/ui/format/format.go | 117 | ||||
-rw-r--r-- | runtime/ui/viewmodels/filter_view_model.go | 7 | ||||
-rw-r--r-- | runtime/ui/viewmodels/tree_view_model.go | 3 |
13 files changed, 215 insertions, 784 deletions
@@ -1,398 +0,0 @@ -package components - -import ( - "bytes" - "fmt" - "io" - "strings" - - "github.com/gdamore/tcell/v2" - "github.com/rivo/tview" - "github.com/sirupsen/logrus" - "github.com/wagoodman/dive/dive/filetree" - "go.uber.org/zap" -) - -// TODO simplify this interface. -type TreeModel interface { - StringBetween(int, int, bool) string - VisitDepthParentFirst(filetree.Visitor, filetree.VisitEvaluator) error - VisitDepthChildFirst(filetree.Visitor, filetree.VisitEvaluator) error - RemovePath(path string) error - VisibleSize() int - SetLayerIndex(int) bool - ToggleHiddenFileType(filetype filetree.DiffType) bool -} - -type TreeView struct { - *tview.Box - tree TreeModel - - // Note that the following two fields are distinct - // treeIndex is the index about where we are in the current fileTree - // this should be updated every keypress - treeIndex int - - bufferIndexLowerBound int - - globalCollapseAll bool - - inputHandler func(event *tcell.EventKey, setFocus func(p tview.Primitive)) - - keyBindings map[string]KeyBinding - - showAttributes bool -} - -func NewTreeView(tree TreeModel) *TreeView { - return &TreeView{ - Box: tview.NewBox(), - tree: tree, - globalCollapseAll: true, - showAttributes: true, - inputHandler: nil, - } -} - -type KeyBindingConfig interface { - GetKeyBinding(key string) (KeyBinding, error) -} - -// Implementation notes: -// need to set up our input handler here, -// Should probably factor out keybinding initialization into a new function -// -func (t *TreeView) Setup(config KeyBindingConfig) *TreeView { - t.tree.SetLayerIndex(0) - - bindingSettings := map[string]keyAction{ - "keybinding.toggle-collapse-dir": t.collapseDir, - "keybinding.toggle-collapse-all-dir": t.collapseOrExpandAll, - "keybinding.toggle-filetree-attributes": func() bool { t.showAttributes = !t.showAttributes; return true }, - "keybinding.toggle-added-files": func() bool { t.tree.ToggleHiddenFileType(filetree.Added); return false }, - "keybinding.toggle-removed-files": func() bool { return t.tree.ToggleHiddenFileType(filetree.Removed)}, - "keybinding.toggle-modified-files": func() bool { return t.tree.ToggleHiddenFileType(filetree.Modified)}, - "keybinding.toggle-unmodified-files": func() bool { return t.tree.ToggleHiddenFileType(filetree.Unmodified)}, - "keybinding.page-up": func() bool { return t.pageUp() }, - "keybinding.page-down": func() bool { return t.pageDown() }, - } - - bindingArray := []KeyBinding{} - actionArray := []keyAction{} - - for keybinding, action := range bindingSettings { - binding, err := config.GetKeyBinding(keybinding) - if err != nil { - panic(fmt.Errorf("setup error during %s: %w", keybinding, err)) - // TODO handle this error - //return nil - } - bindingArray = append(bindingArray, binding) - actionArray = append(actionArray, action) - } - - t.inputHandler = func(event *tcell.EventKey, setFocus func(p tview.Primitive)) { - switch event.Key() { - case tcell.KeyUp: - t.keyUp() - case tcell.KeyDown: - t.keyDown() - case tcell.KeyRight: - t.keyRight() - case tcell.KeyLeft: - t.keyLeft() - } - - for idx, binding := range bindingArray { - if binding.Match(event) { - actionArray[idx]() - } - } - } - - return t -} - -// TODO: do we need all of these?? or is there an alternative API we could use for the wrappers???? -func (t *TreeView) getBox() *tview.Box { - return t.Box -} - -func (t *TreeView) getDraw() drawFn { - return t.Draw -} - -func (t *TreeView) getInputWrapper() inputFn { - return t.InputHandler -} - -// Implementation note: -// what do we want here??? a binding object?? yes -func (t *TreeView) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) { - return t.inputHandler -} - -func (t *TreeView) SetInputHandler(handler func(event *tcell.EventKey, setFocus func(p tview.Primitive))) *TreeView { - t.inputHandler = handler - return t -} - -func (t *TreeView) WrapInputHandler() func(*tcell.EventKey, func(tview.Primitive)) { - return t.Box.WrapInputHandler(t.inputHandler) -} - -func (t *TreeView) Focus(delegate func(p tview.Primitive)) { - t.Box.Focus(delegate) -} - -func (t *TreeView) HasFocus() bool { - return t.Box.HasFocus() -} - -// Private helper methods - -func (t *TreeView) collapseDir() bool { - node := t.getAbsPositionNode() - if node != nil && node.Data.FileInfo.IsDir { - logrus.Debugf("collapsing node %s", node.Path()) - node.Data.ViewInfo.Collapsed = !node.Data.ViewInfo.Collapsed - return true - } - if node != nil { - logrus.Debugf("unable to collapse node %s", node.Path()) - logrus.Debugf(" IsDir: %t", node.Data.FileInfo.IsDir) - - } else { - logrus.Debugf("unable to collapse nil node") - } - return false -} - -func (t *TreeView) collapseOrExpandAll() bool { - zap.S().Info("collapsing all directories") - visitor := func(n *filetree.FileNode) error { - if n.Data.FileInfo.IsDir { - n.Data.ViewInfo.Collapsed = t.globalCollapseAll - } - return nil - } - - evaluator := func(n *filetree.FileNode) bool { - return true - } - if err := t.tree.VisitDepthParentFirst(visitor, evaluator); err != nil { - zap.S().Panic("error collapsing all: ", err.Error()) - panic(fmt.Errorf("error callapsing all dir: %w", err)) - // TODO log error here - //return false - } - - zap.S().Info("finished collapsing all directories") - - t.globalCollapseAll = !t.globalCollapseAll - return true - -} - -// getAbsPositionNode determines the selected screen cursor's location in the file tree, returning the selected FileNode. -func (t *TreeView) getAbsPositionNode() (node *filetree.FileNode) { - var visitor func(*filetree.FileNode) error - var evaluator func(*filetree.FileNode) bool - var dfsCounter int - - visitor = func(curNode *filetree.FileNode) error { - if dfsCounter == t.treeIndex { - node = curNode - } - dfsCounter++ - return nil - } - - evaluator = func(curNode *filetree.FileNode) bool { - return !curNode.Parent.Data.ViewInfo.Collapsed && !curNode.Data.ViewInfo.Hidden - } - - err := t.tree.VisitDepthParentFirst(visitor, evaluator) - if err != nil { - logrus.Errorf("unable to get node position: %+v", err) - } - - return node -} - -func (t *TreeView) keyDown() bool { - _, _, _, height := t.Box.GetInnerRect() - - // treeIndex is the index about where we are in the current file - if t.treeIndex >= t.tree.VisibleSize() { - return false - } - t.treeIndex++ - if (t.treeIndex - t.bufferIndexLowerBound) >= height { - t.bufferIndexLowerBound++ - } - - logrus.Debugf(" treeIndex: %d", t.treeIndex) - logrus.Debugf(" bufferIndexLowerBound: %d", t.bufferIndexLowerBound) - logrus.Debugf(" height: %d", height) - - return true -} - -func (t *TreeView) keyUp() bool { - if t.treeIndex <= 0 { - return false - } - t.treeIndex-- - if t.treeIndex < t.bufferIndexLowerBound { - t.bufferIndexLowerBound-- - } - - logrus.Debugf("keyUp end at: %s", t.getAbsPositionNode().Path()) - logrus.Debugf(" treeIndex: %d", t.treeIndex) - logrus.Debugf(" bufferIndexLowerBound: %d", t.bufferIndexLowerBound) - return true -} - - -// TODO add regex filtering -func (t *TreeView) keyRight() bool { - node := t.getAbsPositionNode() - - _, _, _, height := t.Box.GetInnerRect() - if node == nil { - return false - } - - if !node.Data.FileInfo.IsDir { - return false - } - - if len(node.Children) == 0 { - return false - } - - if node.Data.ViewInfo.Collapsed { - node.Data.ViewInfo.Collapsed = false - } - - t.treeIndex++ - if (t.treeIndex - t.bufferIndexLowerBound) >= height { - t.bufferIndexLowerBound++ - } - - return true -} - -func (t *TreeView) keyLeft() bool { - var visitor func(*filetree.FileNode) error - var evaluator func(*filetree.FileNode) bool - var dfsCounter, newIndex int - //oldIndex := t.treeIndex - currentNode := t.getAbsPositionNode() - - if currentNode == nil { - return true - } - parentPath := currentNode.Parent.Path() - - visitor = func(curNode *filetree.FileNode) error { - if strings.Compare(parentPath, curNode.Path()) == 0 { - newIndex = dfsCounter - } - dfsCounter++ - return nil - } - - evaluator = func(curNode *filetree.FileNode) bool { - return !curNode.Parent.Data.ViewInfo.Collapsed && !curNode.Data.ViewInfo.Hidden - } - - err := t.tree.VisitDepthParentFirst(visitor, evaluator) - if err != nil { - // TODO: remove this panic - panic(err) - } - - t.treeIndex = newIndex - //moveIndex := oldIndex - newIndex - if newIndex < t.bufferIndexLowerBound { - t.bufferIndexLowerBound = t.treeIndex - } - - return true -} - -// TODO make all movement rely on a single function (shouldn't be too dificult really) -func (t *TreeView) pageDown() bool { - - _,_,_,height := t.GetInnerRect() - visibleSize := t.tree.VisibleSize() - t.treeIndex = intMin(t.treeIndex + height, visibleSize) - if t.treeIndex >= t.bufferIndexUpperBound() { - t.bufferIndexLowerBound = intMin(t.treeIndex, visibleSize - height + 1) - } - return true -} - - -func (t *TreeView) pageUp() bool { - _,_,_,height := t.GetInnerRect() - - t.treeIndex = intMax(0, t.treeIndex - height) - if t.treeIndex < t.bufferIndexLowerBound { - t.bufferIndexLowerBound = t.treeIndex - } - - return true -} - -func (t *TreeView) bufferIndexUpperBound() int { - _, _, _, height := t.Box.GetInnerRect() - return t.bufferIndexLowerBound + height -} - -func (t *TreeView) Draw(screen tcell.Screen) { - t.Box.Draw(screen) - selectedIndex := t.treeIndex - t.bufferIndexLowerBound - x, y, width, height := t.Box.GetInnerRect() - showAttributes := width > 80 && t.showAttributes - // TODO add switch for showing attributes. - treeString := t.tree.StringBetween(t.bufferIndexLowerBound, t.bufferIndexUpperBound(), showAttributes) - lines := strings.Split(treeString, "\n") - - // update the contents - for yIndex, line := range lines { - if yIndex >= height { - break - } - // Strip out ansi colors, Tview cannot use these - stripLine := bytes.NewBuffer(nil) - w := tview.ANSIWriter(stripLine) - if _, err := io.Copy(w, strings.NewReader(line)); err != nil { - //TODO: handle panic gracefully - panic(err) - } - - tview.Print(screen, stripLine.String(), x, y+yIndex, width, tview.AlignLeft, tcell.ColorDefault) - for xIndex := 0; xIndex < width; xIndex++ { - m, c, style, _ := screen.GetContent(x+xIndex, y+yIndex) - style = style.Background(tcell.ColorWhite).Foreground(tcell.ColorBlack).Bold(true) - if yIndex == selectedIndex { - screen.SetContent(x+xIndex, y+yIndex, m, c, style) - screen.SetContent(x+xIndex, y+yIndex, m, c, style) - } else if yIndex > selectedIndex { - break - } - } - } - -} - - -func intMin(a, b int) int { - if a < b { - return a - } - return b -} diff --git a/cmd/root.go b/cmd/root.go index bf2e8bc..bdce3db 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -76,9 +76,10 @@ func initCli() { func initConfig() { var err error - viper.SetDefault("log.level", log.InfoLevel.String()) + //viper.SetDefault("log.level", log.InfoLevel.String()) + viper.SetDefault("log.level", "debug") viper.SetDefault("log.path", "./dive.log") - viper.SetDefault("log.enabled", false) + viper.SetDefault("log.enabled", true) // keybindings: status view / global // This keybinding can be changed but ctrl+C may still quit the application diff --git a/dive/filetree/file_node.go b/dive/filetree/file_node.go index 0689415..6620a2a 100644 --- a/dive/filetree/file_node.go +++ b/dive/filetree/file_node.go @@ -7,9 +7,9 @@ import ( "strings" "github.com/sirupsen/logrus" + "github.com/wagoodman/dive/runtime/ui/format" "github.com/dustin/go-humanize" - "github.com/fatih/color" "github.com/phayes/permbits" ) @@ -17,11 +17,18 @@ const ( AttributeFormat = "%s%s %11s %10s " ) -var diffTypeColor = map[DiffType]*color.Color{ - Added: color.New(color.FgGreen), - Removed: color.New(color.FgRed), - Modified: color.New(color.FgYellow), - Unmodified: color.New(color.Reset), +//var diffTypeColor = map[DiffType]*color.Color{ +// Added: color.New(color.FgGreen), +// Removed: color.New(color.FgRed), +// Modified: color.New(color.FgYellow), +// Unmodified: color.New(color.Reset), +//} + +var diffTypeColor = map[DiffType]format.Formatter{ + Added: format.Added, + Removed: format.Removed, + Modified: format.Modified, + Unmodified: format.Normal, } // FileNode represents a single file, its relation to files beneath it, the tree it exists in, and the metadata of the given file. @@ -132,7 +139,7 @@ func (node *FileNode) String() string { if node.Data.FileInfo.TypeFlag == tar.TypeSymlink || node.Data.FileInfo.TypeFlag == tar.TypeLink { display += " → " + node.Data.FileInfo.Linkname } - return diffTypeColor[node.Data.DiffType].Sprint(display) + return diffTypeColor[node.Data.DiffType](display) } // MetadatString returns the FileNode metadata in a columnar string. @@ -172,7 +179,10 @@ func (node *FileNode) MetadataString() string { size := humanize.Bytes(uint64(sizeBytes)) - return diffTypeColor[node.Data.DiffType].Sprint(fmt.Sprintf(AttributeFormat, dir, fileMode, userGroup, size)) + diffColoring := diffTypeColor[node.Data.DiffType] + + return diffColoring(fmt.Sprintf(AttributeFormat, dir, fileMode, userGroup, size)) + } // VisitDepthChildFirst iterates a tree depth-first (starting at this FileNode), evaluating the deepest depths first (visit on bubble up) @@ -10,7 +10,6 @@ require ( github.com/docker/cli v20.10.0-beta1+incompatible github.com/docker/docker v1.4.2-0.20200221181110-62bd5a33f707 github.com/dustin/go-humanize v1.0.0 - github.com/fatih/color v1.9.0 github.com/fsnotify/fsnotify v1.4.9 // indirect github.com/gdamore/tcell/v2 v2.1.0 github.com/golang/protobuf v1.4.3 // indirect @@ -78,3 +77,5 @@ replace github.com/golangci/ineffassign => github.com/golangci/ineffassign v0.0. replace github.com/golangci/lint-1 => github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217 replace mvdan.cc/unparam => mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34 + +replace github.com/rivo/tview => /home/deek/workspace/VMware/dwillist/tview @@ -6,52 +6,31 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v42.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= -github.com/Azure/go-autorest/autorest v0.10.2/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= -github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -59,46 +38,39 @@ github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced3 github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 h1:ygIc8M6trr62pF5DucadTWGdEB4mEyvzi0e2nbcmcyA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/hcsshim v0.8.7 h1:ptnOoufxGSzauVTsdE+wMYnCWA301PdoN4xg5oRdZpg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= -github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.8.11 h1:qs8+XI1mFA1H/zhXT9qVG/lcJO18p1yCsICIrCjVXw8= -github.com/Microsoft/hcsshim v0.8.11/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/apex/log v1.1.2-0.20190827100214-baa5455d1012/go.mod h1:Ls949n1HFtXfbDcjiTTFQqkVUrte0puoIBfO3SVgwOA= github.com/apex/log v1.1.2 h1:bnDuVoi+o98wOdVqfEzNDlY0tcmBia7r4YkjS9EqGYk= github.com/apex/log v1.1.2/go.mod h1:SyfRweFO+TlkIJ3DVizTSeI1xk7jOIIqOnUPZQTTsww= -github.com/apex/log v1.9.0 h1:FHtw/xuaM8AgmvDDTI9fiwoAL25Sq2cxojnZICUU8l0= -github.com/apex/log v1.9.0/go.mod h1:m82fZlWIuiWzWP04XCTXmnX0xRkYYbCdYn8jbJeLBEA= github.com/apex/logs v0.0.3/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= -github.com/apex/logs v1.0.0/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.31.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -109,39 +81,24 @@ github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/buildpacks/imgutil v0.0.0-20200313170640-a02052f47d62/go.mod h1:TjPmM78urjQIiMal4T7en6iBekAPv6z1yVMZobc4Kd8= github.com/buildpacks/imgutil v0.0.0-20200805143852-1844b230530d h1:uVTFIiev3f7fi5BSv1RtM5W5lcqQodqLRBG5AdoDe2U= github.com/buildpacks/imgutil v0.0.0-20200805143852-1844b230530d/go.mod h1:uVv0fNwOEBNgyM9ZvwV0g2Dvzk31q5TtSeoC1GGmW+k= -github.com/buildpacks/imgutil v0.0.0-20201008151938-cea9fc548372/go.mod h1:Oj9x40zkDyafaKpvgPuLGFjzzrdQQ+w9DNi1JzqJV1I= -github.com/buildpacks/imgutil v0.0.0-20201022190551-6525b8cdcdd0 h1:NfMkYsjGmNJGl80WHEa4rGM1hU8IDUIdqBiPZpxkvRM= -github.com/buildpacks/imgutil v0.0.0-20201022190551-6525b8cdcdd0/go.mod h1:tG2oQSjijSLsymHJz/K3dJyUfmQ72dBfxDqWlNMPFUQ= github.com/buildpacks/lifecycle v0.7.2 h1:FO7i2cokLNc7lcuThq/LYt1jmkB8HBrjpK+2GWWsaLI= github.com/buildpacks/lifecycle v0.7.2/go.mod h1:k41tT3XOt7ufaMGAvOpEsXyuJpUPoo4F686Z652lU3E= -github.com/buildpacks/lifecycle v0.9.3 h1:SvhYMYu1kJ1w79X4YTJFW36zjo1kwuKv+4T0yvDfV0o= -github.com/buildpacks/lifecycle v0.9.3/go.mod h1:BsvmYI8KKY197/mYXpTvmgauo259fZx+ueYyV5Ih92Q= github.com/buildpacks/pack v0.14.2 h1:4/3+2mwmb2LmpFVEHUlOk07PLcIoA1LCCAbNgNnbp3s= github.com/buildpacks/pack v0.14.2/go.mod h1:P7Hj8ltMWZ/Yt++ZbvAU/Zr8C7iTZT0L5pO5H7dfRKY= -github.com/buildpacks/pack v0.15.1 h1:rkpd6biMqomxtOSDgR320bBn7SRCSwrmPCigGVRgqfo= -github.com/buildpacks/pack v0.15.1/go.mod h1:mX2tVfYp1Q6fbg7YJkaG/SRLY4Zx6DJHd6dBCqSWwoU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.3 h1:LoIzb5y9x5l8VKAlyrbusNPXqBY0+kviRloxFUMFwKc= github.com/containerd/containerd v1.3.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.1 h1:pASeJT3R3YyVn+94qEPk0SnU1OQ20Jd/T+SPKy9xehY= -github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41 h1:kIFnQBO7rQ0XkMe6xEwbybYHBEaWmh/f++laI6Emt7M= github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= @@ -156,18 +113,16 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -176,16 +131,12 @@ github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop github.com/docker/cli v0.0.0-20200312141509-ef2f64abbd37/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/cli v20.10.0-beta1+incompatible h1:K4hmHhtBIAZ8BIcvjtk3Fi63o2UlGp7D4Y1w9fLI7rc= github.com/docker/cli v20.10.0-beta1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v20.10.0+incompatible h1:3yWaTjVy5Yh40Uv+WcNx1T/beKhmlJfzrDjjA5Y3hiI= -github.com/docker/cli v20.10.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20200221181110-62bd5a33f707 h1:sF5ALylAtPbpvthO6EMyjXZfvZuVIYoJLPgSWkGZJjo= github.com/docker/docker v1.4.2-0.20200221181110-62bd5a33f707/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.0-beta1.0.20201110211921-af34b94a78a1+incompatible h1:J2OhsbfqoBRRT048iD/tqXBvEQWQATQ8vew6LqQmDSU= -github.com/docker/docker v20.10.0-beta1.0.20201110211921-af34b94a78a1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= @@ -197,7 +148,6 @@ github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:Htrtb github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= @@ -205,17 +155,11 @@ github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v0.0.0-20200808040245-162e5629780b/go.mod h1:NAJj0yf/KaRKURN6nyi7A9IZydMivZEm9oQLWNjfKDc= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= @@ -227,11 +171,9 @@ github.com/gdamore/tcell/v2 v2.1.0 h1:UnSmozHgBkQi2PGsFr+rpdXuAPRRucMegpQp3Z3kDr github.com/gdamore/tcell/v2 v2.1.0/go.mod h1:vSVL/GV5mCSlPC6thFP5kfOFdM9MGZcalipmpTxTgQA= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/gliderlabs/ssh v0.3.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20 |