Skip to content

Commit

Permalink
Replace godspeed with datadog-go
Browse files Browse the repository at this point in the history
  • Loading branch information
jessekempf-vsco committed Mar 14, 2024
1 parent 0c6d225 commit 3dfe212
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 106 deletions.
52 changes: 6 additions & 46 deletions cli/api/client.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package api

import (
"encoding/json"
"errors"
"fmt"
"os"
"strings"

"encoding/json"

"time"

"github.com/theckman/godspeed"
"github.com/DataDog/datadog-go/v5/statsd"
"github.com/vsco/dcdr/cli/api/ioutil2"
"github.com/vsco/dcdr/cli/api/stores"
"github.com/vsco/dcdr/cli/printer"
Expand Down Expand Up @@ -46,11 +44,11 @@ type ClientIFace interface {
type Client struct {
Store stores.IFace
Repo repo.IFace
Stats *godspeed.Godspeed
Stats statsd.ClientInterface
config *config.Config
}

func New(st stores.IFace, rp repo.IFace, cfg *config.Config, stats *godspeed.Godspeed) (c *Client) {
func New(st stores.IFace, rp repo.IFace, cfg *config.Config, stats statsd.ClientInterface) (c *Client) {
c = &Client{
Store: st,
Repo: rp,
Expand Down Expand Up @@ -143,15 +141,7 @@ func (c *Client) Set(ft *models.Feature) error {
return err
}

err = c.Store.Set(ft.ScopedKey(), bts)

if err != nil {
return err
}

err = c.SendStatEvent(ft, false)

return nil
return c.Store.Set(ft.ScopedKey(), bts)
}

func (c *Client) Get(key string, v interface{}) error {
Expand Down Expand Up @@ -196,15 +186,7 @@ func (c *Client) Delete(key string, scope string) error {
return KeyNotFoundError(key)
}

err = c.Store.Delete(key)

if err != nil {
return err
}

err = c.SendStatEvent(existing, true)

return err
return c.Store.Delete(key)
}

func (c *Client) Commit(ft *models.Feature, deleted bool) error {
Expand Down Expand Up @@ -348,28 +330,6 @@ func (c *Client) WriteOutputFile(kvb stores.KVBytes) {
printer.Logf("wrote changes to: %s", c.config.Watcher.OutputPath)
}

func (c *Client) SendStatEvent(f *models.Feature, delete bool) error {
if c.Stats == nil {
return nil
}

var text string
title := "Decider Change"

if delete {
text = fmt.Sprintf("deleted %s", f.ScopedKey())
} else {
text = fmt.Sprintf("set %s: %v", f.ScopedKey(), f.Value)
}

optionals := make(map[string]string)
optionals["alert_type"] = "info"
optionals["source_type_name"] = "dcdr"
tags := []string{"source_type:dcdr"}

return c.Stats.Event(title, text, optionals, tags)
}

// KVsToFeatures helper for unmarshalling `KVBytes` to a `FeatureMap`
func (c *Client) KVsToFeatureMap(kvb stores.KVBytes) (*models.FeatureMap, error) {
fm := models.EmptyFeatureMap()
Expand Down
28 changes: 0 additions & 28 deletions client/stats/godspeed/godspeed_statter.go

This file was deleted.

12 changes: 0 additions & 12 deletions client/stats/stats.go

This file was deleted.

18 changes: 9 additions & 9 deletions client/stats_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ package client
import (
"strings"

"github.com/vsco/dcdr/client/stats"
"github.com/DataDog/datadog-go/v5/statsd"
"github.com/vsco/dcdr/config"
"github.com/vsco/dcdr/models"
)

// StatsClient delegates `Client` methods with metrics.
type StatsClient struct {
Client
stats stats.IFace
stats statsd.ClientInterface
}

// NewStatsClient creates a new client.
func NewStatsClient(cfg *config.Config, stats stats.IFace) (sc *StatsClient, err error) {
func NewStatsClient(cfg *config.Config, stats statsd.ClientInterface) (sc *StatsClient, err error) {
sc = &StatsClient{
stats: stats,
}
Expand All @@ -29,7 +29,7 @@ func NewStatsClient(cfg *config.Config, stats stats.IFace) (sc *StatsClient, err
}

// NewStatsClient creates a new client.
func NewStatsDefault(stats stats.IFace) (sc *StatsClient, err error) {
func NewStatsDefault(stats statsd.ClientInterface) (sc *StatsClient, err error) {
sc = &StatsClient{
stats: stats,
}
Expand Down Expand Up @@ -90,21 +90,21 @@ func (sc *StatsClient) Scopes() []string {
// Incr increments the formatted `statKey`.
func (sc *StatsClient) Incr(feature string, enabled bool, sampleRate float64) {
key := sc.statKey(feature, enabled)
sc.stats.Incr(key, sampleRate)
sc.stats.Incr(key, []string{}, sampleRate)
}

func (sc *StatsClient) statKey(feature string, enabled bool) string {
status := stats.Enabled
status := "enabled"

if enabled == false {
status = stats.Disabled
status = "disabled"
}

scopes := models.DefaultScope

if len(sc.Client.Scopes()) > 0 {
scopes = strings.Replace(strings.Join(sc.Client.Scopes(), stats.JoinWith), "/", stats.JoinWith, -1)
scopes = strings.Replace(strings.Join(sc.Client.Scopes(), "."), "/", ".", -1)
}

return strings.Join([]string{sc.config.Namespace, scopes, feature, status}, stats.JoinWith)
return strings.Join([]string{sc.config.Namespace, scopes, feature, status}, ".")
}
14 changes: 9 additions & 5 deletions dcdr.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package main

import (
"fmt"
"os"

"github.com/theckman/godspeed"
"github.com/DataDog/datadog-go/v5/statsd"
"github.com/vsco/dcdr/cli"
"github.com/vsco/dcdr/cli/api"
"github.com/vsco/dcdr/cli/api/resolver"
Expand All @@ -19,18 +20,21 @@ func main() {

rp := repo.New(cfg)

var gs *godspeed.Godspeed
var err error
var stats statsd.ClientInterface

if cfg.StatsEnabled() {
gs, err = godspeed.New(cfg.Stats.Host, cfg.Stats.Port, false)
var err error
stats, err = statsd.New(fmt.Sprintf("%s:%s", cfg.Stats.Host, cfg.Stats.Port))

if err != nil {
printer.SayErr("%v", err)
os.Exit(1)
}
} else {
stats = &statsd.NoOpClient{}
}

kv := api.New(store, rp, cfg, gs)
kv := api.New(store, rp, cfg, stats)
ctrl := controller.New(cfg, kv)

dcdr := cli.New(ctrl)
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/vsco/dcdr
go 1.18

require (
github.com/DataDog/datadog-go/v5 v5.5.0
github.com/coreos/etcd v3.0.0-beta.0.0.20160528191156-a86ae1d96912+incompatible
github.com/fatih/color v1.14.1
github.com/fsnotify/fsnotify v1.3.0
Expand All @@ -13,14 +14,13 @@ require (
github.com/hashicorp/hcl v0.0.0-20160119202737-578dd9746824
github.com/rodaine/table v0.0.0-20151010055857-c35ded4ccfec
github.com/stretchr/testify v1.8.3
github.com/theckman/godspeed v0.0.0-20160207214103-ef757b820a7d
github.com/tucnak/climax v0.0.0-20160110101300-4c021a579dda
github.com/vsco/http-test v0.0.0-20160424235822-3e41d6201903
golang.org/x/net v0.17.0
)

require (
github.com/PagerDuty/godspeed v0.0.0-20180224001232-122876cde329 // indirect
github.com/Microsoft/go-winio v0.5.0 // indirect
github.com/armon/go-metrics v0.4.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/gorilla/context v0.0.0-20160525203319-aed02d124ae4 // indirect
Expand Down
28 changes: 24 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/PagerDuty/godspeed v0.0.0-20180224001232-122876cde329 h1:3q+9OIju0tFi+TUZZuG80mRbXI3MT/L/1vlTb8CcofA=
github.com/PagerDuty/godspeed v0.0.0-20180224001232-122876cde329/go.mod h1:u6OV0JEB9gtT/nTmTNEt6SXkQJW+SBnGWlJoSr+0F+U=
github.com/DataDog/datadog-go/v5 v5.5.0 h1:G5KHeB8pWBNXT4Jtw0zAkhdxEAWSpWH00geHI6LDrKU=
github.com/DataDog/datadog-go/v5 v5.5.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw=
github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU=
github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
Expand Down Expand Up @@ -39,6 +41,7 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
Expand Down Expand Up @@ -142,6 +145,7 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
Expand All @@ -165,36 +169,44 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/theckman/godspeed v0.0.0-20160207214103-ef757b820a7d h1:X7USZy33fzzrJSYDLfXvFVayK86pfZuSMfbxdzVV4XI=
github.com/theckman/godspeed v0.0.0-20160207214103-ef757b820a7d/go.mod h1:HbvX1ULDanALaHLD1Q1jwxL3THjMTn6KgpTSZ1MTvMQ=
github.com/tucnak/climax v0.0.0-20160110101300-4c021a579dda h1:VvJLFK4TAPRLbr64RWDGbqfztQdh32BivMWqZfyz4jU=
github.com/tucnak/climax v0.0.0-20160110101300-4c021a579dda/go.mod h1:aN8AHR3MaHF61SaAxoSwsOS/AjZrRJeYAlrs4mg3ugk=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
github.com/ugorji/go v0.0.0-20160328060740-a396ed22fc04 h1:eE+Se4ffRJ16+igSBQWAYUXrIL9WBJ47bE/4uMxW9lA=
github.com/ugorji/go v0.0.0-20160328060740-a396ed22fc04/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
github.com/vsco/http-test v0.0.0-20160424235822-3e41d6201903 h1:5VfvX56oHNTt6Pdss+lf110TyDLJBCuEtQFXPSDZF+k=
github.com/vsco/http-test v0.0.0-20160424235822-3e41d6201903/go.mod h1:ATk8q2GaMFU2bNaCYaYuIVIJIcR3B+w2m5zbRQtY0vY=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ=
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
Expand All @@ -208,6 +220,7 @@ golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Expand All @@ -216,8 +229,10 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
Expand All @@ -233,8 +248,12 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190424220101-1e8e1cfdf96b/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
Expand All @@ -243,5 +262,6 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 comments on commit 3dfe212

Please sign in to comment.