diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 17912c7..a03b85e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -2,14 +2,12 @@ name: Release on: push: - branches: [ main ] + branches: [main] - -permissions: +permissions: contents: write packages: write - env: GITHUB_TOKEN: ${{ github.token }} SVU_VERSION: 1.11.0 @@ -28,7 +26,7 @@ jobs: with: fetch-depth: 0 - - name: get-tags + - name: get-tags run: git fetch --force --tags - name: Get svu @@ -74,7 +72,7 @@ jobs: GORELEASER_PREVIOUS_TAG: ${{ needs.tag.outputs.PREV_VERSION }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -82,10 +80,9 @@ jobs: - uses: actions/setup-go@v4 with: - go-version: '1.21' + go-version: "1.22" check-latest: true - - uses: goreleaser/goreleaser-action@v5 with: distribution: goreleaser @@ -94,56 +91,54 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - Docker: - needs: [tag,goreleaser] + needs: [tag, goreleaser] runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 - - - uses: actions/setup-go@v4 - with: - go-version: '1.21' - check-latest: true - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - - name: Login to GHCR - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and Push Docker Image - uses: docker/build-push-action@v4.0.0 - id: build-and-push - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - tags: ghcr.io/${{ github.repository }}:${{ needs.tag.outputs.VERSION }} - build-args: | - VERSION=${{ needs.tag.outputs.VERSION }} - - - uses: sigstore/cosign-installer@v3.3.0 - - - name: Image Signing - run: | - cosign sign --yes \ - -a "repo=${{ github.repository }}" \ - -a "workflow=${{ github.workflow }}" \ - -a "ref=${{ github.sha }}" \ - -a "owner=Spectro Cloud" \ - --key env://COSIGN_PRIVATE_KEY --recursive "${TAGS}@${DIGEST}" - env: - TAGS: ghcr.io/${{ github.repository }}:${{ needs.tag.outputs.VERSION }} - COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} - COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} - DIGEST: ${{ steps.build-and-push.outputs.digest }} \ No newline at end of file + - name: Checkout + uses: actions/checkout@v4 + + - uses: actions/setup-go@v4 + with: + go-version: "1.22" + check-latest: true + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to GHCR + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and Push Docker Image + uses: docker/build-push-action@v4.0.0 + id: build-and-push + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: ghcr.io/${{ github.repository }}:${{ needs.tag.outputs.VERSION }} + build-args: | + VERSION=${{ needs.tag.outputs.VERSION }} + + - uses: sigstore/cosign-installer@v3.3.0 + + - name: Image Signing + run: | + cosign sign --yes \ + -a "repo=${{ github.repository }}" \ + -a "workflow=${{ github.workflow }}" \ + -a "ref=${{ github.sha }}" \ + -a "owner=Spectro Cloud" \ + --key env://COSIGN_PRIVATE_KEY --recursive "${TAGS}@${DIGEST}" + env: + TAGS: ghcr.io/${{ github.repository }}:${{ needs.tag.outputs.VERSION }} + COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} + COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} + DIGEST: ${{ steps.build-and-push.outputs.digest }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 85a437f..47b23a7 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -2,9 +2,9 @@ name: Test & Validate on: pull_request: - types: ['synchronize', 'opened'] + types: ["synchronize", "opened"] branches: - - main + - main env: GITHUB_TOKEN: ${{ github.token }} @@ -12,7 +12,6 @@ env: SLACK_SIGNING_SECRET: ${{secrets.SLACK_SIGNING_SECRET}} SVU_VERSION: 1.11.0 - concurrency: group: test-${{ github.ref }} cancel-in-progress: true @@ -25,47 +24,46 @@ jobs: shell: bash if: ${{ !github.event.pull_request.draft }} steps: - # If the condition above is not met, aka, the PR is not in draft status, then this step is skipped. - # Because this step is part of the critical path, omission of this step will result in remaining CI steps not gettinge executed. - # As of 8/8/2022 there is now way to enforce this beahvior in GitHub Actions CI. + # If the condition above is not met, aka, the PR is not in draft status, then this step is skipped. + # Because this step is part of the critical path, omission of this step will result in remaining CI steps not gettinge executed. + # As of 8/8/2022 there is now way to enforce this beahvior in GitHub Actions CI. - run: exit 0 linting: needs: [run-ci] runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@v4 - - uses: actions/setup-go@v4 - with: - go-version: '1.21' - check-latest: true + - uses: actions/setup-go@v4 + with: + go-version: "1.22" + check-latest: true - - name: Lint Internal Package - uses: golangci/golangci-lint-action@v3 - with: - args: --verbose --timeout 5m + - name: Lint Internal Package + uses: golangci/golangci-lint-action@v3 + with: + args: --verbose --timeout 5m test: name: Test - needs: [run-ci,linting] + needs: [run-ci, linting] runs-on: ubuntu-latest steps: + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: "1.22" + check-latest: true + id: go - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.21' - check-latest: true - id: go - - - name: Check out code into the Go module directory - uses: actions/checkout@v3 + - name: Check out code into the Go module directory + uses: actions/checkout@v3 - - name: Go Tests - run: | - go test -race ./... + - name: Go Tests + run: | + go test -race ./... release-preview: needs: [run-ci] @@ -81,7 +79,7 @@ jobs: with: fetch-depth: 0 - - name: get-tags + - name: get-tags run: git fetch --force --tags - name: Get svu @@ -126,7 +124,7 @@ jobs: GORELEASER_PREVIOUS_TAG: ${{ needs.tag.outputs.PREV_VERSION }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -134,8 +132,8 @@ jobs: - uses: actions/setup-go@v4 with: - go-version: '1.21' - check-latest: true + go-version: "1.22" + check-latest: true - uses: goreleaser/goreleaser-action@v5 with: @@ -145,64 +143,61 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - compile: name: Compile validation - needs: [run-ci,linting] + needs: [run-ci, linting] runs-on: ubuntu-latest steps: + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: "1.22" + check-latest: true + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.21' - check-latest: true - id: go - - - name: Check out code into the Go module directory - uses: actions/checkout@v3 - - - name: Run golangci-lint - uses: golangci/golangci-lint-action@v3 - with: - args: -v - - - name: build - run: | - go build -race -ldflags="-X 'spectrocloud.com/spectromate/cmd.VersionString=1.0.0'" -o=spectromate -v + - name: Run golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + args: -v + + - name: build + run: | + go build -race -ldflags="-X 'spectrocloud.com/spectromate/cmd.VersionString=1.0.0'" -o=spectromate -v Docker: - needs: [run-ci,linting,test,compile] + needs: [run-ci, linting, test, compile] runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v3 - - - uses: actions/setup-go@v4 - with: - go-version: '1.21' - check-latest: true - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - - name: Login to GHCR - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and Push Docker Image - uses: docker/build-push-action@v4.0.0 - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - tags: ghcr.io/${{ github.repository }}:dev - build-args: | - VERSION=1.0.0 \ No newline at end of file + - name: Checkout + uses: actions/checkout@v3 + + - uses: actions/setup-go@v4 + with: + go-version: "1.22" + check-latest: true + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to GHCR + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and Push Docker Image + uses: docker/build-push-action@v4.0.0 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: ghcr.io/${{ github.repository }}:dev + build-args: | + VERSION=1.0.0 diff --git a/Dockerfile b/Dockerfile index 56803d8..7ec8826 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # Copyright (c) Spectro Cloud # SPDX-License-Identifier: Apache-2.0 -FROM golang:1.21.5-alpine3.18 as builder +FROM golang:1.22.1-alpine3.19 as builder ARG VERSION diff --git a/deployment/terraform/.terraform.lock.hcl b/deployment/terraform/.terraform.lock.hcl index a85a9d9..cbc1e17 100644 --- a/deployment/terraform/.terraform.lock.hcl +++ b/deployment/terraform/.terraform.lock.hcl @@ -22,23 +22,23 @@ provider "registry.terraform.io/hashicorp/random" { } provider "registry.terraform.io/spectrocloud/spectrocloud" { - version = "0.16.1" - constraints = ">= 0.16.0" + version = "0.17.4" + constraints = ">= 0.17.4" hashes = [ - "h1:3+0kAO1q/F2QdgDz5HBknHGk8qkn3RovTSqovPd3f6o=", - "zh:026e93a6b22b34423189191a5879df087e91d28bc1fe23c94ea0b2ae8b0b42e3", - "zh:1317b97b705bac7f58c868c9fa9e5f549b21e73823dea769a4cfd5db0fb3d923", - "zh:154b5e4494360094413e3be92fc122b010ac0e950284a0b4181ad96ea0656246", - "zh:18263330ac43864f1f59d163910019ffb90ebe9a94d0cb8e0b2c8900e2799207", - "zh:41c869fda58d3a90e712fd8fb4b546a65f4e94ce639bb751b48a5848276958ec", - "zh:4d7ccc07a48f468087611ed955b62ff65b2680c065f24f0ac56e2ba7b38bab02", - "zh:67a89ca2e24ba13d1c163e453dac0836faf0f21ab42632bd63aff5070552c08c", - "zh:ad91359b4027ad51e2d4b0df2dc5985766509e7204761283187c37df15190623", - "zh:c70ce7902726c2d5ded410d3b8ed92bcf59c39853ace4ea00650214ac2bea202", - "zh:cc71264c00ada1d596b7f6a9996b7dab87d51c162247b67dea5facc820c43b9e", - "zh:ce963d2bd262b6398113924cb95cc6dd973c1b7cda11348bfc9945c999add1be", - "zh:d1ace6affc7f2bad85316e08bc3885ad9e452b8fda5e0891176a6cebbf40c8eb", - "zh:e9d604bf3f33a818c3dae0ff82478965114671a6c5f677ba346ec886ec972fa3", - "zh:fc21c8c96c67a98390b87fde6ed736c6b90b262ee5c54fefb0de29b9dde655af", + "h1:Rs+lZ10vUwRFpovLS6K3xopRzQSnyfD5OnUqYzIx/U4=", + "zh:082ecc460b81f668bf4e428841737e510979959a9f0d745440239a20f93df687", + "zh:16a1cc8caf148d2438a66777bb9b70e24e9a7e46d58ff38a538ec293d15f67ce", + "zh:1e616e15042293e4f89f77f50274ad125d7b6101493bc2c248096e3d7280d25f", + "zh:2f20ac53eec518f21fd2ee134e8b5a38f3436d886a3ca6c2e35671fda2a75907", + "zh:33ec26482ad5b3c5260c608fdd2da2c032579c78e87d402ca8216d3964f669bb", + "zh:357b86e779af1ec47421ae3a90bb518969acde7bfe069d5b7a03eb47e79bfe87", + "zh:3f3c9826043604b8f250a5ea365f68f31f41a63b72e0289730bfe82e89d8d6cc", + "zh:499daa3d8f5651e24d92d6491a316ea9d14649398e2676cc704c367c7f1e5be5", + "zh:4b08924f900ab4b0c53aabd287c18a0c8f9505b8ab213ba24f105de3a05462b0", + "zh:84e6b67465c9111995b56bab806400e2e2f51137ed32f35adcfae59bfc7a5421", + "zh:8d7ce11dde8b4c8a707fd0f213f4f21469f02b3f035a86abac090cb141aec360", + "zh:a79118b085ba80a953ca26f65c5b9682419004ba6ecf8d5a01377603b0e09d9c", + "zh:ea1556b2d7802859eb8933c69297af7f472276215c4b85b5c3b1231ce66f3474", + "zh:eff6808541a3c3d4480f7cee223770f52f357296f262f9986c8564f092226de7", ] } diff --git a/deployment/terraform/provider.tf b/deployment/terraform/provider.tf index 7daf0cf..5cb9d84 100644 --- a/deployment/terraform/provider.tf +++ b/deployment/terraform/provider.tf @@ -4,11 +4,11 @@ terraform { required_providers { spectrocloud = { - version = ">= 0.16.0" + version = ">= 0.17.4" source = "spectrocloud/spectrocloud" } random = { - version = ">= 3.5.1" + version = ">= 3.6.0" source = "hashicorp/random" } } @@ -16,4 +16,4 @@ terraform { provider "spectrocloud" { project_name = var.project -} \ No newline at end of file +} diff --git a/docs/development.md b/docs/development.md index cc6ae67..1eba0e1 100644 --- a/docs/development.md +++ b/docs/development.md @@ -4,81 +4,79 @@ To get started, use the following steps. ## Software Requirements - If you want to work on Spectromate, you will need to install the following software and actions completed. :warning: This project uses Go Modules making it safe to work with it outside of your existing GOPATH +- [Docker](https://docs.docker.com/get-docker/) v20.10.0 or greater. -* [Docker](https://docs.docker.com/get-docker/) v20.10.0 or greater. - -* [Go](https://golang.org/doc/install) 1.20 or greater. +- [Go](https://golang.org/doc/install) 1.21 or greater. -* [Ngrok](https://ngrok.com/download) v3.2.2 or greater. +- [Ngrok](https://ngrok.com/download) v3.2.2 or greater. -* [A Slack App](https://api.slack.com/apps) available that has access to your target workspace. +- [A Slack App](https://api.slack.com/apps) available that has access to your target workspace. ## Setup + The following instructions assume a directory in your home directory outside of the standard GOPATH. 1. Clone the repository by using the following command. - ```shell - $ mkdir -p $HOME/projects/spectromate/; cd $HOME/projects/spectromate/ - $ git clone git@github.com:spectrocloud/spectromate.git - ``` + ```shell + $ mkdir -p $HOME/projects/spectromate/; cd $HOME/projects/spectromate/ + $ git clone git@github.com:spectrocloud/spectromate.git + ``` 2. Issue the command `make init`. This command will download all the required project dependencies. - ```shell - make init - ``` + ```shell + make init + ``` 3. The following command is used to set up the local development support dependencies, such as Redis and Ngork. - ```shell - make start - ``` + ```shell + make start + ``` -4. Copy the URL Ngrok exposed in the output. +4. Copy the URL Ngrok exposed in the output. - ```shell - $ make start - Starting the application and ngrok... - [+] Running 3/3 - ✔ Network docs-slack-bot_default Created 0.0s - ✔ Container docs-slack-bot-redis-1 Started 0.3s - ✔ Container docs-slack-bot-redis-cli-1 Started 0.5s - Ngrok URL: https://76ac-184-179-188-29.ngrok-free.app - ``` + ```shell + $ make start + Starting the application and ngrok... + [+] Running 3/3 + ✔ Network docs-slack-bot_default Created 0.0s + ✔ Container docs-slack-bot-redis-1 Started 0.3s + ✔ Container docs-slack-bot-redis-cli-1 Started 0.5s + Ngrok URL: https://76ac-184-179-188-29.ngrok-free.app + ``` 5. Create a `env` file at the root of the project. - ```shell - touch .env - ``` + ```shell + touch .env + ``` 6. Populate the **.env** file with your respective credentials. - ```shell - export SLACK_SIGNING_SECRET=.... - export MENDABLE_API_KEY=.... - ``` + ```shell + export SLACK_SIGNING_SECRET=.... + export MENDABLE_API_KEY=.... + ``` 7. Start the local server. - ```shell - make server - ``` + ```shell + make server + ``` 8. Source the `.env` file. - ```shell - source .env - ``` - -9. Navigate to your [Slack app ](https://api.slack.com/apps) and open up your app's details page. + ```shell + source .env + ``` +9. Navigate to your [Slack app ](https://api.slack.com/apps) and open up your app's details page. 10. You will access both elements highlighted in the image. Start with the first element, by clicking on the left **Main Menu** and selecting **Slash Command**. @@ -90,10 +88,9 @@ The following instructions assume a directory in your home directory outside of 12. Save your changes and navigate back to the main details page. - 13. From the left **Main Menu**, select **Interactivity & Shortcuts**. -14. Toggle the **Interactvity** button to **On**. +14. Toggle the **Interactvity** button to **On**. 15. Use your Ngrok URL and paste the URL into the text input box. Append `/api/v1/slack/actions` to the end of the URL and save your changes. @@ -101,17 +98,15 @@ The following instructions assume a directory in your home directory outside of 16. Navigate to a Slack channel and issue the Slack command `/docs help`. - You should receive an output similar to the following. ![View of the Slack command in use](../static/images/slack_command_issued.png) -You now have a functional test application connected to your local workstation. +You now have a functional test application connected to your local workstation. 17. Stop the local server by pressing the `Ctrl` + `C`. - -Make your changes and start the server with the `make server` command to test the new behavior. +Make your changes and start the server with the `make server` command to test the new behavior. ```shell make server @@ -125,10 +120,10 @@ go run main.go ``` - ## Testing Add test cases to new functions and new commands. Invoke the Go tests from the root namespace. The pipeline will invoke the Go tests as well. + ```shell go test -race ./... -``` \ No newline at end of file +``` diff --git a/go.mod b/go.mod index 3327308..6f93d54 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,14 @@ module spectrocloud.com/spectromate -go 1.21 +go 1.22 require ( github.com/avast/retry-go v3.0.0+incompatible github.com/golang/mock v1.6.0 - github.com/gorilla/schema v1.2.0 - github.com/redis/go-redis/v9 v9.2.1 - github.com/rs/zerolog v1.31.0 - github.com/stretchr/testify v1.8.4 + github.com/gorilla/schema v1.2.1 + github.com/redis/go-redis/v9 v9.5.1 + github.com/rs/zerolog v1.32.0 + github.com/stretchr/testify v1.9.0 go.uber.org/automaxprocs v1.5.3 ) @@ -20,6 +20,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/sys v0.13.0 // indirect + golang.org/x/sys v0.18.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 89865a0..c205fd5 100644 --- a/go.sum +++ b/go.sum @@ -17,6 +17,8 @@ github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= +github.com/gorilla/schema v1.2.1 h1:tjDxcmdb+siIqkTNoV+qRH2mjYdr2hHe5MKXbp61ziM= +github.com/gorilla/schema v1.2.1/go.mod h1:Dg5SSm5PV60mhF2NFaTV1xuYYj8tV8NOPRo4FggUMnM= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -34,11 +36,17 @@ github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4 github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/redis/go-redis/v9 v9.2.1 h1:WlYJg71ODF0dVspZZCpYmoF1+U1Jjk9Rwd7pq6QmlCg= github.com/redis/go-redis/v9 v9.2.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= +github.com/redis/go-redis/v9 v9.5.1 h1:H1X4D3yHPaYrkL5X06Wh6xNVM/pX0Ft4RV0vMGvLBh8= +github.com/redis/go-redis/v9 v9.5.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= +github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= @@ -60,6 +68,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=