Skip to content

Commit

Permalink
test/smoke/harness: migrate from MailHog to Mailpit (#4091)
Browse files Browse the repository at this point in the history
* add logo back, with makefile comment

* Add support for fetching and extracting Mailpit tool

* Remove unused static analysis tools from project

- Eliminated `ineffassign` and `staticcheck` tool dependencies
- Cleaned up related entries in `Makefile`, `go.mod`, and `go.sum`
- Streamlined toolchain and dependencies for efficiency

* update procfiles

* update harness and add tests to validate mail server functionality

* update playwright command for email

* update playwright test for new email UI

* check email links are valid

* cleanup code

* update deps

* add mailpit as smoketest dependency

* update Go deps

* update mailpit version

* switch to runtime.caller

* remove stale comment

* ensure mailpit for unit test
  • Loading branch information
mastercactapus authored Oct 23, 2024
1 parent 29da739 commit 91f646f
Show file tree
Hide file tree
Showing 18 changed files with 477 additions and 497 deletions.
27 changes: 14 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ Makefile.binaries.mk: devtools/genmake/*
$(BIN_DIR)/tools/protoc: protoc.version
go run ./devtools/gettool -t protoc -v $(shell cat protoc.version) -o $@


$(BIN_DIR)/tools/mailpit: mailpit.version
go run ./devtools/gettool -t mailpit -v $(shell cat mailpit.version) -o $@

$(BIN_DIR)/tools/sqlc: sqlc.version
go run ./devtools/gettool -t sqlc -v $(shell cat sqlc.version) -o $@

Expand Down Expand Up @@ -135,22 +139,22 @@ web/src/schema.d.ts: graphql2/schema.graphql graphql2/graph/*.graphqls web/src/g
help: ## Show all valid options
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

start: bin/goalert bin/mockoidc $(NODE_DEPS) web/src/schema.d.ts $(BIN_DIR)/tools/prometheus ## Start the developer version of the application
start: bin/goalert bin/mockoidc $(NODE_DEPS) web/src/schema.d.ts $(BIN_DIR)/tools/prometheus $(BIN_DIR)/tools/mailpit ## Start the developer version of the application
@if [ -d ".vscode" ]; then \
echo "Detected .vscode directory, running 'vscode' target"; \
$(MAKE) vscode; \
fi
go run ./devtools/waitfor -timeout 1s "$(DB_URL)" || make postgres
GOALERT_VERSION=$(GIT_VERSION) GOALERT_STRICT_EXPERIMENTAL=1 go run ./devtools/runproc -f Procfile -l Procfile.local

start-prod: web/src/build/static/app.js bin/mockoidc $(BIN_DIR)/tools/prometheus ## Start the production version of the application
start-prod: web/src/build/static/app.js bin/mockoidc $(BIN_DIR)/tools/prometheus $(BIN_DIR)/tools/mailpit ## Start the production version of the application
# force rebuild to ensure build-flags are set
touch cmd/goalert/main.go
$(MAKE) $(MFLAGS) bin/goalert BUNDLE=1
go run ./devtools/runproc -f Procfile.prod -l Procfile.local


start-swo: bin/psql-lite bin/goalert bin/waitfor bin/mockoidc bin/runproc $(NODE_DEPS) web/src/schema.d.ts $(BIN_DIR)/tools/prometheus ## Start the developer version of the application in switchover mode (SWO)
start-swo: bin/psql-lite bin/goalert bin/waitfor bin/mockoidc bin/runproc $(NODE_DEPS) web/src/schema.d.ts $(BIN_DIR)/tools/prometheus $(BIN_DIR)/tools/mailpit ## Start the developer version of the application in switchover mode (SWO)
./bin/waitfor -timeout 1s "$(DB_URL)" || make postgres
./bin/goalert migrate --db-url=postgres://goalert@localhost/goalert
./bin/psql-lite -d postgres://goalert@localhost -c "update switchover_state set current_state = 'idle'; truncate table switchover_log; drop database if exists goalert2; create database goalert2;"
Expand All @@ -173,14 +177,14 @@ reset-integration: bin/waitfor bin/goalert.cover bin/psql-lite bin/resetdb
cat test/integration/setup/goalert-config.json | GOCOVERDIR=test/coverage/integration/reset ./bin/goalert.cover set-config --allow-empty-data-encryption-key --db-url "$(INT_DB_URL)"
rm -f *.session.json

start-integration: web/src/build/static/app.js bin/goalert bin/psql-lite bin/waitfor bin/runproc bin/procwrap $(BIN_DIR)/tools/prometheus reset-integration
start-integration: web/src/build/static/app.js bin/goalert bin/psql-lite bin/waitfor bin/runproc bin/procwrap $(BIN_DIR)/tools/prometheus $(BIN_DIR)/tools/mailpit reset-integration
GOALERT_DB_URL="$(INT_DB_URL)" ./bin/runproc -f Procfile.integration

jest: $(NODE_DEPS)
$(MAKE) ensure-yarn
yarn run jest $(JEST_ARGS)

test: $(NODE_DEPS) jest ## Run all unit tests
test: $(NODE_DEPS) jest $(BIN_DIR)/tools/mailpit ## Run all unit tests
rm -rf $(PWD)/test/coverage/unit
mkdir -p $(PWD)/test/coverage/unit
go test -coverpkg=./... -short ./... -args -test.gocoverdir=$(PWD)/test/coverage/unit
Expand Down Expand Up @@ -250,22 +254,19 @@ test-components: $(NODE_DEPS) bin/waitfor
storybook: ensure-yarn $(NODE_DEPS) # Start the Storybook UI
yarn storybook

bin/MailHog: go.mod go.sum
go build -o bin/MailHog github.com/mailhog/MailHog

playwright-run: $(NODE_DEPS) bin/mockoidc web/src/build/static/app.js bin/goalert.cover web/src/schema.d.ts $(BIN_DIR)/tools/prometheus reset-integration bin/MailHog ## Start playwright tests in headless mode
playwright-run: $(NODE_DEPS) bin/mockoidc web/src/build/static/app.js bin/goalert.cover web/src/schema.d.ts $(BIN_DIR)/tools/prometheus $(BIN_DIR)/tools/mailpit reset-integration ## Start playwright tests in headless mode
$(MAKE) ensure-yarn
rm -rf test/coverage/integration/playwright
mkdir -p test/coverage/integration/playwright
yarn playwright install chromium
GOCOVERDIR=test/coverage/integration/playwright yarn playwright test

playwright-ui: $(NODE_DEPS) bin/mockoidc web/src/build/static/app.js bin/goalert web/src/schema.d.ts $(BIN_DIR)/tools/prometheus reset-integration bin/MailHog ## Start the Playwright UI
playwright-ui: $(NODE_DEPS) bin/mockoidc web/src/build/static/app.js bin/goalert web/src/schema.d.ts $(BIN_DIR)/tools/prometheus $(BIN_DIR)/tools/mailpit reset-integration ## Start the Playwright UI
$(MAKE) ensure-yarn
yarn playwright install chromium
yarn playwright test --ui

smoketest:
smoketest: $(BIN_DIR)/tools/mailpit
rm -rf test/coverage/smoke
mkdir -p test/coverage/smoke
(cd test/smoke && go test -coverpkg=../../... -parallel 10 -timeout 20m -args -test.gocoverdir=$(PWD)/test/coverage/smoke)
Expand All @@ -290,8 +291,6 @@ tools:
go get -u golang.org/x/tools/cmd/bundle
go get -u golang.org/x/tools/cmd/gomvpkg
go get -u golang.org/x/tools/cmd/goimports
go get -u github.com/gordonklaus/ineffassign
go get -u honnef.co/go/tools/cmd/staticcheck
go get -u golang.org/x/tools/cmd/stringer

.pnp.cjs: yarn.lock Makefile package.json .yarnrc.yml
Expand All @@ -305,6 +304,8 @@ web/src/build/static/app.js: $(NODE_DEPS)
rm -rf web/src/build/static
mkdir -p web/src/build/static
cp -f web/src/app/public/icons/favicon-* web/src/app/public/logos/lightmode_* web/src/app/public/logos/darkmode_* web/src/build/static/
# used for email templates
cp web/src/app/public/logos/goalert-alt-logo.png web/src/build/static/
GOALERT_VERSION=$(GIT_VERSION) yarn run esbuild --prod
touch "$@"

Expand Down
2 changes: 1 addition & 1 deletion Procfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ build: while true; do make -qs bin/goalert || make bin/goalert || (echo '\033[0;
@watch-file=./bin/goalert
goalert: ./bin/goalert -l=localhost:3030 --ui-dir=web/src/build --db-url=postgres://goalert@localhost --listen-sysapi=localhost:1234 --listen-prometheus=localhost:2112 --smtp-listen=localhost:9025 --email-integration-domain=localhost --listen-pprof=localhost:6060 --pprof-mutex-profile-fraction=1 --pprof-block-profile-rate=1000

smtp: go run github.com/mailhog/MailHog -ui-bind-addr=localhost:8025 -api-bind-addr=localhost:8025 -smtp-bind-addr=localhost:1025 | grep -v KEEPALIVE
smtp: ./bin/tools/mailpit -s localhost:1025 -l localhost:8025
prom: bin/tools/prometheus --log.level=warn --config.file=devtools/prometheus/prometheus.yml --storage.tsdb.path=bin/prom-data/ --web.listen-address=localhost:9090

@watch-file=./web/src/esbuild.config.js
Expand Down
2 changes: 1 addition & 1 deletion Procfile.prod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ build: while true; do make -qs bin/goalert BUNDLE=1 || make bin/goalert BUNDLE=1
@watch-file=./bin/goalert
goalert: ./bin/goalert -l=localhost:3030 --db-url=postgres://goalert@localhost --listen-sysapi=localhost:1234 --listen-prometheus=localhost:2112 --listen-pprof=localhost:6060 --pprof-mutex-profile-fraction=1 --pprof-block-profile-rate=1000

smtp: go run github.com/mailhog/MailHog -ui-bind-addr=localhost:8025 -api-bind-addr=localhost:8025 -smtp-bind-addr=localhost:1025 | grep -v KEEPALIVE
smtp: ./bin/tools/mailpit -s localhost:1025 -l localhost:8025
prom: bin/tools/prometheus --log.level=warn --config.file=devtools/prometheus/prometheus.yml --storage.tsdb.path=bin/prom-data/ --web.listen-address=localhost:9090

oidc: ./bin/mockoidc
2 changes: 1 addition & 1 deletion Procfile.swo
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ build: while true; do make -qs bin/goalert || make bin/goalert || (echo '\033[0;
@watch-file=./bin/goalert
goalert: ./bin/goalert -l=localhost:3040 --ui-dir=web/src/build --db-url=postgres://goalert@localhost:5435 --listen-sysapi=localhost:1234 --listen-prometheus=localhost:2112 --db-url-next=postgres://goalert@localhost:5435/goalert2

smtp: go run github.com/mailhog/MailHog -ui-bind-addr=localhost:8025 -api-bind-addr=localhost:8025 -smtp-bind-addr=localhost:1025 | grep -v KEEPALIVE
smtp: ./bin/tools/mailpit -s localhost:1025 -l localhost:8025

prom: bin/tools/prometheus --log.level=warn --config.file=devtools/prometheus/prometheus-swo.yml --storage.tsdb.path=bin/prom-data/ --web.listen-address=localhost:9090

Expand Down
34 changes: 34 additions & 0 deletions devtools/gettool/getmailpit.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package main

import (
"archive/tar"
"compress/gzip"
"fmt"
"runtime"
)

func getMailpit(version, output string) error {
url := fmt.Sprintf("https://github.com/axllent/mailpit/releases/download/v%s/mailpit-%s-%s.tar.gz",
version, runtime.GOOS, runtime.GOARCH,
)
fd, _, err := fetchFile(url)
if err != nil {
return fmt.Errorf("fetch: %w", err)
}
defer fd.Close()

gzr, err := gzip.NewReader(fd)
if err != nil {
return fmt.Errorf("deflate: %w", err)
}
defer gzr.Close()

r := tar.NewReader(gzr)

err = extractFromTar(r, "mailpit", output, true)
if err != nil {
return fmt.Errorf("extract: %w", err)
}

return nil
}
2 changes: 2 additions & 0 deletions devtools/gettool/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ func main() {
err = getGolangCiLint(*version, *output)
case "sqlc":
err = getSqlc(*version, *output)
case "mailpit":
err = getMailpit(*version, *output)
default:
log.Fatalf("unknown tool '%s'", *tool)
}
Expand Down
3 changes: 0 additions & 3 deletions devtools/tools.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,9 @@ package devtools
import (
_ "github.com/99designs/gqlgen"
_ "github.com/fullstorydev/grpcui/cmd/grpcui"
_ "github.com/gordonklaus/ineffassign"
_ "github.com/kffl/speedbump"
_ "github.com/mailhog/MailHog"
_ "golang.org/x/tools/cmd/goimports"
_ "golang.org/x/tools/cmd/stringer"
_ "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
_ "google.golang.org/protobuf/cmd/protoc-gen-go"
_ "honnef.co/go/tools/cmd/staticcheck"
)
80 changes: 27 additions & 53 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,100 +5,85 @@ go 1.23
toolchain go1.23.0

require (
github.com/99designs/gqlgen v0.17.54
github.com/99designs/gqlgen v0.17.55
github.com/brianvoe/gofakeit/v6 v6.28.0
github.com/coreos/go-oidc/v3 v3.11.0
github.com/creack/pty/v2 v2.0.1
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
github.com/emersion/go-smtp v0.21.3
github.com/expr-lang/expr v1.16.9
github.com/fatih/color v1.17.0
github.com/fatih/color v1.18.0
github.com/felixge/httpsnoop v1.0.4
github.com/fullstorydev/grpcui v1.5.0
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
github.com/google/go-github/v56 v56.0.0
github.com/google/uuid v1.6.0
github.com/gordonklaus/ineffassign v0.1.0
github.com/hashicorp/yamux v0.1.2
github.com/jackc/pgtype v1.14.3
github.com/jackc/pgtype v1.14.4
github.com/jackc/pgx/v5 v5.7.1
github.com/jmespath/go-jmespath v0.4.0
github.com/joho/godotenv v1.5.1
github.com/kffl/speedbump v1.1.0
github.com/lib/pq v1.10.9
github.com/mailhog/MailHog v1.0.1
github.com/mailhog/MailHog-Server v1.0.1
github.com/mailhog/data v1.0.1
github.com/mailhog/storage v1.0.1
github.com/matcornic/hermes/v2 v2.1.0
github.com/mnako/letters v0.2.2
github.com/nyaruka/phonenumbers v1.4.0
github.com/mnako/letters v0.2.3
github.com/nyaruka/phonenumbers v1.4.1
github.com/oauth2-proxy/mockoidc v0.0.0-20240214162133-caebfff84d25
github.com/pelletier/go-toml/v2 v2.2.3
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.20.4
github.com/prometheus/client_golang v1.20.5
github.com/rubenv/sql-migrate v1.7.0
github.com/sirupsen/logrus v1.9.3
github.com/slack-go/slack v0.14.0
github.com/slack-go/slack v0.15.0
github.com/spf13/cobra v1.8.1
github.com/spf13/viper v1.19.0
github.com/sqlc-dev/pqtype v0.3.0
github.com/stretchr/testify v1.9.0
github.com/vektah/gqlparser/v2 v2.5.17
golang.org/x/crypto v0.27.0
github.com/vektah/gqlparser/v2 v2.5.18
golang.org/x/crypto v0.28.0
golang.org/x/oauth2 v0.23.0
golang.org/x/sys v0.25.0
golang.org/x/term v0.24.0
golang.org/x/tools v0.25.0
google.golang.org/grpc v1.67.0
golang.org/x/sys v0.26.0
golang.org/x/term v0.25.0
golang.org/x/tools v0.26.0
google.golang.org/grpc v1.67.1
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1
google.golang.org/protobuf v1.34.2
google.golang.org/protobuf v1.35.1
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
honnef.co/go/tools v0.5.1
)

require (
cel.dev/expr v0.16.2 // indirect
cloud.google.com/go/compute/metadata v0.5.2 // indirect
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible // indirect
github.com/PuerkitoBio/goquery v1.10.0 // indirect
github.com/agnivade/levenshtein v1.1.1 // indirect
github.com/agnivade/levenshtein v1.2.0 // indirect
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
github.com/alecthomas/units v0.0.0-20240626203959-61d1e3462e30 // indirect
github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect
github.com/andybalholm/cascadia v1.3.2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
github.com/bufbuild/protocompile v0.14.1 // indirect
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
github.com/emersion/go-sasl v0.0.0-20231106173351-e73c9f7bad43 // indirect
github.com/envoyproxy/go-control-plane v0.13.0 // indirect
github.com/emersion/go-sasl v0.0.0-20241020182733-b788ff22d5a6 // indirect
github.com/envoyproxy/go-control-plane v0.13.1 // indirect
github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/fullstorydev/grpcurl v1.9.1 // indirect
github.com/go-jose/go-jose/v3 v3.0.3 // indirect
github.com/go-jose/go-jose/v4 v4.0.4 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/gorilla/context v1.1.2 // indirect
github.com/gorilla/css v1.0.1 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/pat v1.0.2 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/huandu/xstrings v1.5.0 // indirect
github.com/ian-kent/envconf v0.0.0-20141026121121-c19809918c02 // indirect
github.com/ian-kent/go-log v0.0.0-20160113211217-5731446c36ab // indirect
github.com/ian-kent/goose v0.0.0-20141221090059-c3541ea826ad // indirect
github.com/ian-kent/linkio v0.0.0-20170807205755-97566b872887 // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jackc/pgio v1.0.0 // indirect
Expand All @@ -107,58 +92,47 @@ require (
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056 // indirect
github.com/jhump/protoreflect v1.17.0 // indirect
github.com/klauspost/compress v1.17.10 // indirect
github.com/klauspost/compress v1.17.11 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mailhog/MailHog-UI v1.0.1 // indirect
github.com/mailhog/http v1.0.1 // indirect
github.com/mailhog/mhsendmail v0.2.0 // indirect
github.com/mailhog/smtp v1.0.1 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ogier/pflag v0.0.1 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.59.1 // indirect
github.com/prometheus/common v0.60.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/smartystreets/goconvey v1.8.1 // indirect
github.com/sosodev/duration v1.3.1 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.7.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/t-k/fluent-logger-golang v1.0.0 // indirect
github.com/tinylib/msgp v1.2.1 // indirect
github.com/urfave/cli/v2 v2.27.4 // indirect
github.com/urfave/cli/v2 v2.27.5 // indirect
github.com/vanng822/css v1.0.1 // indirect
github.com/vanng822/go-premailer v1.21.0 // indirect
github.com/vanng822/go-premailer v1.22.0 // indirect
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
golang.org/x/exp/typeparams v0.0.0-20240909161429-701f63a606c0 // indirect
golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect
golang.org/x/mod v0.21.0 // indirect
golang.org/x/net v0.29.0 // indirect
golang.org/x/net v0.30.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/text v0.18.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
golang.org/x/text v0.19.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect
gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading

0 comments on commit 91f646f

Please sign in to comment.