diff --git a/Makefile b/Makefile index cea63b1..1c3209d 100644 --- a/Makefile +++ b/Makefile @@ -25,13 +25,6 @@ test-web: test: test-bot test-web -testContainers: -ifeq (,$(shell command -v docker 2> /dev/null)) - $(error "No docker in $(PATH)") -endif - - go test -tags testcontainers ./bot - install: prod mkdir -p $(DEST_DIR) cp -r assets $(DEST_DIR) diff --git a/bot/go.mod b/bot/go.mod index 19aad59..6534c93 100644 --- a/bot/go.mod +++ b/bot/go.mod @@ -7,71 +7,24 @@ require ( github.com/google/uuid v1.6.0 github.com/jarcoal/httpmock v1.3.1 github.com/joho/godotenv v1.5.1 - github.com/testcontainers/testcontainers-go v0.30.0 - github.com/testcontainers/testcontainers-go/modules/mongodb v0.29.1 go.mongodb.org/mongo-driver v1.14.0 layeh.com/gopus v0.0.0-20210501142526-1ee02d434e32 ) require ( - dario.cat/mergo v1.0.0 // indirect - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/Microsoft/hcsshim v0.11.4 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/containerd/containerd v1.7.12 // indirect - github.com/containerd/log v0.1.0 // indirect - github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/distribution/reference v0.5.0 // indirect - github.com/docker/docker v25.0.5+incompatible // indirect - github.com/docker/go-connections v0.5.0 // indirect - github.com/docker/go-units v0.5.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/gorilla/websocket v1.5.1 // indirect github.com/klauspost/compress v1.17.7 // indirect - github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/moby/patternmatcher v0.6.0 // indirect - github.com/moby/sys/sequential v0.5.0 // indirect - github.com/moby/sys/user v0.1.0 // indirect - github.com/moby/term v0.5.0 // indirect github.com/montanaflynn/stats v0.7.1 // indirect - github.com/morikuni/aec v1.0.0 // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/shirou/gopsutil/v3 v3.23.12 // indirect - github.com/shoenig/go-m1cpu v0.1.6 // indirect - github.com/sirupsen/logrus v1.9.3 // indirect - github.com/tklauser/go-sysconf v0.3.12 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.2 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect - github.com/yusufpapurcu/wmi v1.2.3 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/crypto v0.22.0 // indirect - golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea // indirect - golang.org/x/mod v0.16.0 // indirect golang.org/x/net v0.24.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.13.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect - google.golang.org/grpc v1.58.3 // indirect - google.golang.org/protobuf v1.33.0 // indirect ) diff --git a/bot/internal/joke/database_testcontainers_test.go b/bot/internal/joke/database_testcontainers_test.go deleted file mode 100644 index b766d02..0000000 --- a/bot/internal/joke/database_testcontainers_test.go +++ /dev/null @@ -1,190 +0,0 @@ -//go:build testcontainers - -package joke - -import ( - "context" - "github.com/testcontainers/testcontainers-go" - "github.com/testcontainers/testcontainers-go/modules/mongodb" - "github.com/wittano/komputer/db" - "go.mongodb.org/mongo-driver/bson/primitive" - "os" - "testing" -) - -type jokeSerchArgs struct { - name string - withID bool - search SearchParameters - joke Joke -} - -func createJokeService(ctx context.Context) (container *mongodb.MongoDBContainer, service DatabaseJokeService, err error) { - container, err = mongodb.RunContainer(ctx, testcontainers.WithEnv(map[string]string{ - "MONGO_INITDB_DATABASE": db.DatabaseName, - })) - if err != nil { - return - } - - mongodbURI, err := container.ConnectionString(ctx) - if err != nil { - return - } - os.Setenv(db.MongodbURIKey, mongodbURI) - - service = NewDatabaseJokeService(db.Mongodb(ctx)) - - return -} - -func terminateDatabase(ctx context.Context, t *testing.T, db *mongodb.MongoDBContainer) { - if err := db.Terminate(ctx); err != nil { - t.Fatal(err) - } -} - -func TestJokeService_AddWithRealDatabase(t *testing.T) { - ctx := context.Background() - - db, service, err := createJokeService(ctx) - if err != nil { - t.Fatal(err) - } - defer terminateDatabase(ctx, t, db) - - id, err := service.Add(ctx, testJoke) - if err != nil { - t.Fatal(err) - } - - if id == "" { - t.Fatal("New joke wasn't saved") - } -} - -func TestJokeService_Get(t *testing.T) { - const testGuildID = "1" - - args := []jokeSerchArgs{ - { - name: "find random joke", - search: SearchParameters{}, - joke: testJoke, - }, - { - name: "find by type", - search: SearchParameters{Type: TwoPart}, - joke: Joke{ - Type: TwoPart, - Question: "testTwoPartQuestion", - Answer: "testTwoPartAnswer", - Category: DARK, - GuildID: testGuildID, - }, - }, - { - name: "find by category", - search: SearchParameters{Category: MISC}, - joke: Joke{ - Type: Single, - Question: "testQuestion", - Answer: "testAnswer", - Category: MISC, - GuildID: testGuildID, - }, - }, - { - name: "find by id", - withID: true, - search: SearchParameters{}, // I added ID after adding entity to database - joke: Joke{ - Type: Single, - Question: "testQuestion", - Answer: "testAnswer", - Category: PROGRAMMING, - GuildID: testGuildID, - }, - }, - { - name: "find by id and category", - withID: true, - search: SearchParameters{Category: MISC}, - joke: Joke{ - Type: Single, - Question: "testQuestion", - Answer: "testAnswer", - Category: MISC, - GuildID: testGuildID, - }, - }, - { - name: "find by id and type", - withID: true, - search: SearchParameters{Type: TwoPart}, - joke: Joke{ - Type: TwoPart, - Question: "testTwoPartQuestion", - Answer: "testTwoPartAnswer", - Category: DARK, - GuildID: testGuildID, - }, - }, - { - name: "find by type and category", - search: SearchParameters{Type: TwoPart, Category: YOMAMA}, - joke: Joke{ - Type: TwoPart, - Question: "testTwoPartQuestion", - Answer: "testTwoPartAnswer", - Category: YOMAMA, - GuildID: testGuildID, - }, - }, - { - name: "find by id, category and type", - withID: true, - search: SearchParameters{Type: TwoPart, Category: DARK}, - joke: Joke{ - Type: TwoPart, - Question: "testTwoPartQuestion", - Answer: "testTwoPartAnswer", - Category: DARK, - GuildID: testGuildID, - }, - }, - } - - ctx := context.WithValue(context.Background(), GuildIDKey, testGuildID) - db, service, err := createJokeService(ctx) - if err != nil { - t.Fatal(err) - } - defer terminateDatabase(ctx, t, db) - - // Added jokes to database - for _, data := range args { - newJoke, search, withID := data.joke, data.search, data.withID - id, err := service.Add(ctx, newJoke) - if err != nil { - t.Fatal(err) - } - newJoke.ID, err = primitive.ObjectIDFromHex(id) - if err != nil { - t.Fatal(err) - } - - if withID { - search.ID = newJoke.ID - } - } - - for _, data := range args { - search := data.search - t.Run(data.name, func(t *testing.T) { - if _, err := service.Get(ctx, search); err != nil { - t.Fatal(err) - } - }) - } -} diff --git a/go.mod b/go.mod index a562b46..ff8135e 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/wittano/komputer go 1.22.1 require ( - github.com/wittano/komputer/bot v0.0.0-20240413161249-52fbf7107441 - github.com/wittano/komputer/web v0.0.0-20240413161249-52fbf7107441 + github.com/wittano/komputer/bot v0.0.0-20240425195028-7a9b43f258f4 + github.com/wittano/komputer/web v0.0.0-20240425195028-7a9b43f258f4 go.mongodb.org/mongo-driver v1.15.0 ) @@ -22,6 +22,7 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/montanaflynn/stats v0.7.1 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect diff --git a/go.sum b/go.sum index adfa3b7..e04d850 100644 --- a/go.sum +++ b/go.sum @@ -54,16 +54,12 @@ github.com/jarcoal/httpmock v1.3.1 h1:iUx3whfZWVf3jT01hQTO/Eo5sAYtB2/rqaUuOtpInw github.com/jarcoal/httpmock v1.3.1/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8= -github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8= github.com/labstack/echo/v4 v4.12.0 h1:IKpw49IMryVB2p1a4dzwlhP1O2Tf2E0Ir/450lH+kI0= github.com/labstack/echo/v4 v4.12.0/go.mod h1:UP9Cr2DJXbOK3Kr9ONYzNowSh7HP0aG0ShAyycHSJvM= github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= @@ -121,29 +117,21 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/wittano/komputer/bot v0.0.0-20240411141946-658aa8d45c90 h1:b3koNS5jN9y/5f9ud7yYhbm25ojPmBV58UQQxQ680WQ= -github.com/wittano/komputer/bot v0.0.0-20240411141946-658aa8d45c90/go.mod h1:hLu/V9pqAvQNUOhIB94IOrfenlJmWooiJuEGTq+M/Oc= -github.com/wittano/komputer/bot v0.0.0-20240413161249-52fbf7107441 h1:lvHdgKJOi6fclBaztIne6FKxdFxyvAtaSnoxdOS8a0E= -github.com/wittano/komputer/bot v0.0.0-20240413161249-52fbf7107441/go.mod h1:1ChPTXCZbDpKt4cUES7hSzcKX1Y3pnlMOboXRTYu64E= -github.com/wittano/komputer/web v0.0.0-20240412103354-9dbece601221 h1:2iTNX2vEN41kBjegTpcw3n4Q/Ji8UhlZYC0XVfifBL8= -github.com/wittano/komputer/web v0.0.0-20240412103354-9dbece601221/go.mod h1:ZDDeswBhrpbjXkFAeGo1jglnQ7OmsS8dlSuJk1zDw/o= -github.com/wittano/komputer/web v0.0.0-20240413161249-52fbf7107441 h1:QJFgcW/1mSUSaSoRzbD6diyfCenaW2HDd5xW1Z/4Bq0= -github.com/wittano/komputer/web v0.0.0-20240413161249-52fbf7107441/go.mod h1:TjYVarCINIdPYE5LvDudUMcCyPjq+iQFVuKsHoLG0FY= +github.com/wittano/komputer/bot v0.0.0-20240425195028-7a9b43f258f4 h1:LbrhB22n8Xh6KjyQJEia+tlFoKumWX2Zbo2KbkUD0kc= +github.com/wittano/komputer/bot v0.0.0-20240425195028-7a9b43f258f4/go.mod h1:1ChPTXCZbDpKt4cUES7hSzcKX1Y3pnlMOboXRTYu64E= +github.com/wittano/komputer/web v0.0.0-20240425195028-7a9b43f258f4 h1:RN/cQ0KxO7Df22bJYkFlRVErfCDM+vS0kEkBpddqp4s= +github.com/wittano/komputer/web v0.0.0-20240425195028-7a9b43f258f4/go.mod h1:TjYVarCINIdPYE5LvDudUMcCyPjq+iQFVuKsHoLG0FY= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= -github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk= -github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4= github.com/youmark/pkcs8 v0.0.0-20240424034433-3c2c7870ae76 h1:tBiBTKHnIjovYoLX/TPkcf+OjqqKGQrPtGT3Foz+Pgo= github.com/youmark/pkcs8 v0.0.0-20240424034433-3c2c7870ae76/go.mod h1:SQliXeA7Dhkt//vS29v3zpbEwoa+zb2Cn5xj5uO4K5U= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= -go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.mongodb.org/mongo-driver v1.15.0 h1:rJCKC8eEliewXjZGf0ddURtl7tTVy1TK3bfl0gkUSLc= go.mongodb.org/mongo-driver v1.15.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= @@ -155,7 +143,6 @@ go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8p go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= @@ -165,7 +152,6 @@ golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnL golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -176,7 +162,6 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/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-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/go.work.sum b/go.work.sum index 3fbcd96..ca7554f 100644 --- a/go.work.sum +++ b/go.work.sum @@ -68,6 +68,7 @@ github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8 github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= github.com/docker/cli v23.0.3+incompatible h1:Zcse1DuDqBdgI7OQDV8Go7b83xLgfhW1eza4HfEdxpY=