From 3c44c5828a0ce1c3a47c8419f5af808592276b41 Mon Sep 17 00:00:00 2001 From: Jeppe Fihl-Pearson Date: Tue, 30 May 2023 15:11:55 +0100 Subject: [PATCH 01/39] Fix: Let Docker image be built correctly for non-amd64 platforms When building the Docker image on a platform such as arm64, the generated binary is instead located inside the `/go/src/terraform-docs/bin/linux-arm64/` folder, meaning the second stage of the Docker image build fails. This fixes that. Signed-off-by: Jeppe Fihl-Pearson --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 13a4850f..b4e669ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,6 @@ RUN make build FROM alpine:3.16.1 -COPY --from=builder /go/src/terraform-docs/bin/linux-amd64/terraform-docs /usr/local/bin/ +COPY --from=builder /go/src/terraform-docs/bin/linux-*/terraform-docs /usr/local/bin/ ENTRYPOINT ["terraform-docs"] From 5a2f6ffa405dc801fbfb0c1c60bda973760a4146 Mon Sep 17 00:00:00 2001 From: Shamil Ganiev Date: Wed, 28 Feb 2024 16:48:04 +0200 Subject: [PATCH 02/39] add docker multiarch build Signed-off-by: Shamil Ganiev --- .github/workflows/ci.yaml | 23 +++++++++++++---------- .github/workflows/prerelease.yaml | 17 ++++++++++++----- .github/workflows/release.yaml | 6 ++++++ .goreleaser.yml | 17 +++++++++++++++-- 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6fddb9bb..e30b0de4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -90,6 +90,12 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker uses: docker/login-action@v3 if: env.REGISTRY_USERNAME != '' @@ -98,17 +104,14 @@ jobs: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - - name: Build 'dev' Docker image - if: "!contains(github.ref, 'refs/heads/master')" - run: make docker - env: - DOCKER_TAG: ${{ github.sha }} - - - name: Build and push 'edge' Docker image + - name: Build and push Docker image if: env.REGISTRY_USERNAME != '' && contains(github.ref, 'refs/heads/master') - run: make docker push - env: - DOCKER_TAG: edge + uses: docker/build-push-action@v5 + with: + outputs: "type=registry,push=true" + platforms: linux/amd64,linux/arm64 + push: true + tags: quay.io/${{ env.REPO_OWNER }}/terraform-docs:edge publish: runs-on: ubuntu-latest diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index d90c9734..96c848a9 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -54,6 +54,12 @@ jobs: id: vars run: echo ::set-output name=tag::${GITHUB_REF:11} # tag name without leading 'v' + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker uses: docker/login-action@v3 if: env.REGISTRY_USERNAME != '' @@ -63,8 +69,9 @@ jobs: password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push Docker image - run: make docker push - env: - DOCKER_TAG: ${{ steps.vars.outputs.tag }} - REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} - REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} + uses: docker/build-push-action@v5 + with: + outputs: "type=registry,push=true" + platforms: linux/amd64,linux/arm64 + push: true + tags: quay.io/${{ env.REPO_OWNER }}/terraform-docs:${{ steps.vars.outputs.tag }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 74492023..61d092bc 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -25,6 +25,12 @@ jobs: with: go-version: ${{ env.GO_VERSION }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker uses: docker/login-action@v3 if: env.REGISTRY_USERNAME != '' diff --git a/.goreleaser.yml b/.goreleaser.yml index 80599f18..460b523d 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -48,8 +48,21 @@ changelog: dockers: - dockerfile: scripts/release/Dockerfile image_templates: - - "quay.io/terraform-docs/terraform-docs:latest" - - "quay.io/terraform-docs/terraform-docs:{{ .RawVersion }}" + - "quay.io/terraform-docs/terraform-docs:latest-amd64" + - "quay.io/terraform-docs/terraform-docs:{{ .RawVersion }}-amd64" + use: buildx + build_flag_templates: + - "--pull" + - "--platform=linux/amd64" + - dockerfile: scripts/release/Dockerfile + image_templates: + - "quay.io/terraform-docs/terraform-docs:latest-arm64" + - "quay.io/terraform-docs/terraform-docs:{{ .RawVersion }}-arm64" + use: buildx + build_flag_templates: + - "--pull" + - "--platform=linux/arm64" + goarch: arm64 brews: - tap: From a97e1713117275d3b1a1407605c2a7d3a67c5e90 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Sat, 1 Jun 2024 12:27:10 -0400 Subject: [PATCH 03/39] ci: kickoff actions run Signed-off-by: Khosrow Moossavi From 8ae3344d97da87cf80209ed2e79c632e59e2c5f1 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Sat, 1 Jun 2024 12:29:51 -0400 Subject: [PATCH 04/39] chore: bump version to v0.19.0-alpha Signed-off-by: Khosrow Moossavi --- internal/version/version.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/version/version.go b/internal/version/version.go index f210c7c9..de39853e 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -17,8 +17,8 @@ import ( // current version const ( - coreVersion = "0.18.0" - prerelease = "" + coreVersion = "0.19.0" + prerelease = "alpha" ) // Provisioned by ldflags From 19194525e499d1a32627fe90ead37951d02687d0 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Sun, 2 Jun 2024 12:03:48 -0400 Subject: [PATCH 05/39] ci: enhance release workflows Signed-off-by: Khosrow Moossavi --- .github/scripts/Makefile | 66 ++++++++++++++ .github/scripts/contributors.sh | 75 ++++++++++++++++ .../release => .github/scripts}/release.sh | 47 +++++----- .github/workflows/cut-release.yml | 45 ---------- .github/workflows/prepare-release.yml | 62 +++++++++++++ .github/workflows/prerelease.yaml | 9 +- .github/workflows/release.yaml | 90 ++++++++++++++----- .gitignore | 3 + .goreleaser.yml | 65 ++++++++++---- Makefile | 50 +---------- scripts/release/update-choco.sh | 60 ------------- 11 files changed, 355 insertions(+), 217 deletions(-) create mode 100644 .github/scripts/Makefile create mode 100755 .github/scripts/contributors.sh rename {scripts/release => .github/scripts}/release.sh (52%) delete mode 100644 .github/workflows/cut-release.yml create mode 100644 .github/workflows/prepare-release.yml delete mode 100755 scripts/release/update-choco.sh diff --git a/.github/scripts/Makefile b/.github/scripts/Makefile new file mode 100644 index 00000000..2e736bbf --- /dev/null +++ b/.github/scripts/Makefile @@ -0,0 +1,66 @@ +# Copyright 2024 The terraform-docs Authors. +# +# Licensed under the MIT license (the "License"); you may not +# use this file except in compliance with the License. +# +# You may obtain a copy of the License at the LICENSE file in +# the root directory of this source tree. + +# Project variables +PROJECT_NAME := terraform-docs +PROJECT_OWNER := terraform-docs +DESCRIPTION := generate documentation from Terraform modules in various output formats +PROJECT_URL := https://github.com/$(PROJECT_OWNER)/$(PROJECT_NAME) +LICENSE := MIT + +# Build variables +COMMIT_HASH ?= $(shell git rev-parse --short HEAD 2>/dev/null) +CUR_VERSION ?= $(shell git describe --tags --exact-match 2>/dev/null || git describe --tags 2>/dev/null || echo "v0.0.0-$(COMMIT_HASH)") + +########### +##@ Release + +.PHONY: contributors +contributors: OLD_VERSION ?= "" +contributors: NEW_VERSION ?= "" +contributors: ## generate contributors list + @ $(MAKE) --no-print-directory log-$@ + @ ./contributors.sh "$(OLD_VERSION)" "$(NEW_VERSION)" "1" + +PATTERN = + +# if the last relase was alpha, beta or rc, 'release' target has to used with current +# cycle release. For example if latest tag is v0.8.0-rc.2 and v0.8.0 GA needs to get +# released the following should be executed: "make release version=0.8.0" +.PHONY: release +release: VERSION ?= $(shell echo $(CUR_VERSION) | sed 's/^v//' | awk -F'[ .]' '{print $(PATTERN)}') +release: ## Prepare release + @ $(MAKE) --no-print-directory log-$@ + @ ./release.sh "$(VERSION)" "$(CUR_VERSION)" "1" + +.PHONY: patch +patch: PATTERN = '\$$1\".\"\$$2\".\"\$$3+1' +patch: release ## Prepare Patch release + +.PHONY: minor +minor: PATTERN = '\$$1\".\"\$$2+1\".0\"' +minor: release ## Prepare Minor release + +.PHONY: major +major: PATTERN = '\$$1+1\".0.0\"' +major: release ## Prepare Major release + +######################################################################## +## Self-Documenting Makefile Help ## +## https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html ## +######################################################################## + +######## +##@ Help + +.PHONY: help +help: ## Display this help + @awk -v "col=\033[36m" -v "nocol=\033[0m" ' BEGIN { FS = ":.*##" ; printf "Usage:\n make %s%s\n", col, nocol } /^[a-zA-Z_-]+:.*?##/ { printf " %s%-12s%s %s\n", col, $$1, nocol, $$2 } /^##@/ { printf "\n%s%s%s\n", nocol, substr($$0, 5), nocol } ' $(MAKEFILE_LIST) + +log-%: + @grep -h -E '^$*:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN { FS = ":.*?## " }; { printf "\033[36m==> %s\033[0m\n", $$2 }' diff --git a/.github/scripts/contributors.sh b/.github/scripts/contributors.sh new file mode 100755 index 00000000..45709f65 --- /dev/null +++ b/.github/scripts/contributors.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +# +# Copyright 2024 The terraform-docs Authors. +# +# Licensed under the MIT license (the "License"); you may not +# use this file except in compliance with the License. +# +# You may obtain a copy of the License at the LICENSE file in +# the root directory of this source tree. + +set -o errexit +set -o pipefail + +CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) + +if [ -z "${CURRENT_BRANCH}" ] || [ "${CURRENT_BRANCH}" != "master" ]; then + echo "Error: The current branch is '${CURRENT_BRANCH}', switch to 'master' to do the release." + exit 1 +fi + +if [ -n "$(git status --short)" ]; then + echo "Error: There are untracked/modified changes, commit or discard them before the release." + exit 1 +fi + +OLD_VERSION=${1//v/} +NEW_VERSION=${2//v/} +FROM_MAKEFILE=$3 + +# get closest GA tag, ignore alpha, beta and rc tags +function getClosestVersion() { + for t in $(git tag --sort=-creatordate); do + tag="$t" + if [[ "$tag" == *"-alpha"* ]] || [[ "$tag" == *"-beta"* ]] || [[ "$tag" == *"-rc"* ]]; then + continue + fi + if [ "$tag" == "v${NEW_VERSION}" ]; then + continue + fi + break + done + echo "${tag//v/}" +} +CLOSEST_VERSION=$(getClosestVersion) + +if [ -z "$OLD_VERSION" ]; then + OLD_VERSION="${CLOSEST_VERSION}" +fi + +if [ -z "$OLD_VERSION" ] || [ -z "$NEW_VERSION" ]; then + if [ -z "${FROM_MAKEFILE}" ]; then + echo "Error: refs are missing. e.g. contributors " + else + echo "Error: refs are missing. e.g. 'make contributors OLD_VERSION=x.y.z NEW_VERSION=a.b.c'" + fi + exit 1 +fi + +touch contributors.list + +git log "v${OLD_VERSION}..v${NEW_VERSION}" | +grep ^Author: | +sed 's/ <.*//; s/^Author: //' | +sort | +uniq | +while read -r line; do + name=$(printf %s "$line" | iconv -f utf-8 -t ascii//translit | jq -sRr @uri) + handle=$(curl -fsSL "https://api.github.com/search/users?q=in:name%20${name}" | jq -r '.items[0].login') + if [ "$handle" == "null" ]; then + echo "- @${name}" >> contributors.list + else + echo "- @${handle}" >> contributors.list + fi + sleep 5 +done diff --git a/scripts/release/release.sh b/.github/scripts/release.sh similarity index 52% rename from scripts/release/release.sh rename to .github/scripts/release.sh index b497b084..afffc7be 100755 --- a/scripts/release/release.sh +++ b/.github/scripts/release.sh @@ -12,7 +12,6 @@ set -o errexit set -o pipefail CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) -COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null) if [ -z "${CURRENT_BRANCH}" ] || [ "${CURRENT_BRANCH}" != "master" ]; then echo "Error: The current branch is '${CURRENT_BRANCH}', switch to 'master' to do the release." @@ -24,11 +23,11 @@ if [ -n "$(git status --short)" ]; then exit 1 fi -RELEASE_VERSION=$1 -CURRENT_VERSION=$2 +RELEASE_FULL_VERSION=${1//v/} +CURRENT_FULL_VERSION=${2//v/} FROM_MAKEFILE=$3 -if [ -z "${RELEASE_VERSION}" ]; then +if [ -z "${RELEASE_FULL_VERSION}" ]; then if [ -z "${FROM_MAKEFILE}" ]; then echo "Error: VERSION is missing. e.g. ./release.sh " else @@ -37,17 +36,19 @@ if [ -z "${RELEASE_VERSION}" ]; then exit 1 fi -if [ -z "${CURRENT_VERSION}" ]; then - CURRENT_VERSION=$(git describe --tags --exact-match 2>/dev/null || git describe --tags 2>/dev/null || echo "v0.0.1-${COMMIT_HASH}") +if [ -z "${CURRENT_FULL_VERSION}" ]; then + COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null) + CURRENT_FULL_VERSION=$(git describe --tags --exact-match 2>/dev/null || git describe --tags 2>/dev/null || echo "v0.0.1-${COMMIT_HASH}") fi +CURRENT_FULL_VERSION=${CURRENT_FULL_VERSION//v/} -if [ "v${RELEASE_VERSION}" == "${CURRENT_VERSION}" ]; then - echo "Error: provided version (v${RELEASE_VERSION}) already exists." +if [ "${RELEASE_FULL_VERSION}" == "${CURRENT_FULL_VERSION}" ]; then + echo "Error: provided version (v${RELEASE_FULL_VERSION}) already exists." exit 1 fi -if [ "$(git describe --tags "v${RELEASE_VERSION}" 2>/dev/null)" ]; then - echo "Error: provided version (v${RELEASE_VERSION}) already exists." +if [ "$(git describe --tags "v${RELEASE_FULL_VERSION}" 2>/dev/null)" ]; then + echo "Error: provided version (v${RELEASE_FULL_VERSION}) already exists." exit 1 fi @@ -64,21 +65,27 @@ function getClosestVersion() { } CLOSEST_VERSION=$(getClosestVersion) -echo "Release Version: ${RELEASE_VERSION}" -echo "Closest Version: ${CLOSEST_VERSION}" +echo "Release Version: v${RELEASE_FULL_VERSION}" +echo "Closest Version: v${CLOSEST_VERSION}" -# Bump the released version in README and version.go -if [[ $RELEASE_VERSION != *"-alpha"* && $RELEASE_VERSION != *"-beta"* && $RELEASE_VERSION != *"-rc"* ]]; then - sed -i -E "s|${CLOSEST_VERSION}|${RELEASE_VERSION}|g" README.md - sed -i -E "s|${CLOSEST_VERSION}|${RELEASE_VERSION}|g" docs/user-guide/installation.md +RELEASE_VERSION=$(echo $RELEASE_FULL_VERSION | cut -d"-" -f1) +RELEASE_IDENTIFIER=$(echo $RELEASE_FULL_VERSION | cut -d"-" -f2) + +if [[ $RELEASE_VERSION == $RELEASE_IDENTIFIER ]]; then + RELEASE_IDENTIFIER="" +fi + +# Set the released version in README and installation.md +if [[ $RELEASE_IDENTIFIER == "" ]]; then + sed -i -E "s|${CLOSEST_VERSION}|${RELEASE_VERSION}|g" ../../README.md + sed -i -E "s|${CLOSEST_VERSION}|${RELEASE_VERSION}|g" ../../docs/user-guide/installation.md echo "Modified: README.md" echo "Modified: docs/user-guide/installation.md" - git add README.md docs/user-guide/installation.md fi -sed -i -E "s|coreVersion([[:space:]]*)= \"(.*)\"|coreVersion\1= \"${RELEASE_VERSION}\"|g" internal/version/version.go -sed -i -E "s|prerelease([[:space:]]*)= \"(.*)\"|prerelease\1= \"\"|g" internal/version/version.go +# Set the released version and identifier in version.go +sed -i -E "s|coreVersion([[:space:]]*)= \"(.*)\"|coreVersion\1= \"${RELEASE_VERSION}\"|g" ../../internal/version/version.go +sed -i -E "s|prerelease([[:space:]]*)= \"(.*)\"|prerelease\1= \"${RELEASE_IDENTIFIER}\"|g" ../../internal/version/version.go echo "Modified: internal/version/version.go" -git add internal/version/version.go diff --git a/.github/workflows/cut-release.yml b/.github/workflows/cut-release.yml deleted file mode 100644 index d83976fc..00000000 --- a/.github/workflows/cut-release.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: release-cut - -on: - workflow_dispatch: - inputs: - version: - description: "The version to be released (without leading v)" - required: true - type: string - -jobs: - release: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[ci skip]')" - permissions: - contents: write - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - ref: master - fetch-depth: 0 - - - name: Prepare v${{ inputs.version }} Release - run: | - make release VERSION=${{ inputs.version }} - - - name: Push v${{ inputs.version }} Changes - uses: stefanzweifel/git-auto-commit-action@v5 - env: - GITHUB_TOKEN: ${{ secrets.COMMITTER_TOKEN }} - with: - file_pattern: "README.md docs/user-guide/installation.md internal/version/version.go" - commit_message: "Release version v${{ inputs.version }}" - commit_user_name: terraform-docs-bot - commit_user_email: bot@terraform-docs.io - commit_author: "terraform-docs-bot " - - - name: Cut v${{ inputs.version }} Release - run: | - git config --global user.name terraform-docs-bot - git config --global user.email bot@terraform-docs.io - - git tag --annotate --message "v${{ inputs.version }} Release" "v${{ inputs.version }}" - git push origin "v${{ inputs.version }}" diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml new file mode 100644 index 00000000..2accf6b1 --- /dev/null +++ b/.github/workflows/prepare-release.yml @@ -0,0 +1,62 @@ +name: prepare-release +run-name: prepare release v${{ github.event.inputs.version }} + +on: + workflow_dispatch: + inputs: + version: + description: "The version to be released" + required: true + type: string + +jobs: + release: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + permissions: + contents: write + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: master + fetch-depth: 0 + token: ${{ secrets.COMMITTER_TOKEN }} + + - name: Get variables + run: | + release_version="${{ inputs.version }}" + echo "release_version=${release_version//v/}" >> "$GITHUB_ENV" + + - name: Prepare v${{ env.release_version }} Release + run: | + make -C .github/scripts release VERSION=${{ env.release_version }} + + - name: Generate commit message + id: commit-message + run: | + if [[ ${{ env.release_version }} == *"-alpha"* ]]; then + echo "release_commit_message=chore: bump version to v${{ env.release_version }}" >> "$GITHUB_ENV" + else + echo "release_commit_message=Release version v${{ env.release_version }}" >> "$GITHUB_ENV" + fi + + - name: Push v${{ env.release_version }} Changes + uses: stefanzweifel/git-auto-commit-action@v5 + env: + GITHUB_TOKEN: ${{ secrets.COMMITTER_TOKEN }} + with: + file_pattern: "README.md docs/user-guide/installation.md internal/version/version.go" + commit_message: "${{ env.release_commit_message }}" + commit_user_name: terraform-docs-bot + commit_user_email: bot@terraform-docs.io + commit_author: "terraform-docs-bot " + + - name: Cut v${{ env.release_version }} Release + if: "!contains(env.release_version, '-alpha')" # skip when starting new release cycle + run: | + git config --global user.name terraform-docs-bot + git config --global user.email bot@terraform-docs.io + + git tag --annotate --message "v${{ env.release_version }} Release" "v${{ env.release_version }}" + git push origin "v${{ env.release_version }}" diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index c8c22f61..0fe42736 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -28,8 +28,9 @@ jobs: uses: goreleaser/goreleaser-action@v5 if: env.REGISTRY_USERNAME != '' with: - version: latest - args: release --rm-dist --skip-publish --skip-sign + distribution: goreleaser + version: 1.26.2 + args: release --clean --skip=publish --skip=sign - name: Release uses: softprops/action-gh-release@v2 @@ -52,7 +53,7 @@ jobs: - name: Set version output id: vars - run: echo ::set-output name=tag::${GITHUB_REF:11} # tag name without leading 'v' + run: echo "release_tag=${GITHUB_REF:11}" >> "$GITHUB_ENV" # tag name without leading 'v' - name: Login to Docker uses: docker/login-action@v3 @@ -65,6 +66,6 @@ jobs: - name: Build and push Docker image run: make docker push env: - DOCKER_TAG: ${{ steps.vars.outputs.tag }} + DOCKER_TAG: ${{ env.release_tag }} REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2fbaed39..e4a93c55 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -25,6 +25,12 @@ jobs: with: go-version: ${{ env.GO_VERSION }} + - name: Generate Contributors list + id: contributors + run: | + make -C .github/scripts contributors NEW_VERSION=${GITHUB_REF:11} + echo "contributors_list=$(cat .github/scripts/contributors.list)" >> "$GITHUB_ENV" + - name: Login to Docker uses: docker/login-action@v3 if: env.REGISTRY_USERNAME != '' @@ -37,37 +43,77 @@ jobs: uses: goreleaser/goreleaser-action@v5 if: env.REGISTRY_USERNAME != '' with: - version: latest - args: release --rm-dist --skip-sign + distribution: goreleaser + version: 1.26.2 + args: release --clean --skip=sign env: GITHUB_TOKEN: ${{ secrets.COMMITTER_TOKEN }} - - - name: Set version output - id: vars - run: echo ::set-output name=tag::${GITHUB_REF:11} # tag name without leading 'v' - - - name: Update Chocolatey package - run: ./scripts/release/update-choco.sh "${{ steps.vars.outputs.tag }}" - - - name: Update Chocolatey package - uses: drud/action-cross-commit@master - with: - source-folder: scripts/release/chocolatey-package - destination-repository: https://${{ secrets.COMMITTER_USERNAME }}:${{ secrets.COMMITTER_TOKEN }}@github.com/terraform-docs/chocolatey-package - destination-folder: . - destination-branch: main - git-user: terraform-docs-bot - git-user-email: bot@terraform-docs.io - git-commit-message: "Chocolatey update for terraform-docs version v${{ steps.vars.outputs.tag }}" - excludes: README.md:LICENSE:DCO:.git:.github + Contributors: ${{ env.contributors_list }} homebrew: runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[ci skip]')" + needs: [assets] steps: - name: Bump Homebrew formula version uses: dawidd6/action-homebrew-bump-formula@v3.11.0 - if: "!contains(github.ref, '-')" # skip prereleases with: token: ${{ secrets.COMMITTER_TOKEN }} formula: terraform-docs + + chocolatey: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + needs: [assets] + steps: + - name: Update Chocolatey package + run: | + # get closest GA tag, ignore alpha, beta and rc tags + function getClosestVersion() { + for t in $(git tag --sort=-creatordate); do + tag="$t" + if [[ "$tag" == *"-alpha"* ]] || [[ "$tag" == *"-beta"* ]] || [[ "$tag" == *"-rc"* ]]; then + continue + fi + if [ "$tag" == "${GITHUB_REF:11}" ]; then + continue + fi + break + done + echo "${tag//v/}" + } + CLOSEST_VERSION=$(getClosestVersion) + + curl -L \ + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ secrets.COMMITTER_TOKEN }}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/terraform-docs/chocolatey-package/dispatches \ + -d "{\ + \"event_type\": \"trigger-workflow\", \ + \"client_payload\": {\ + \"current-version\": \"${CLOSEST_VERSION}\", \ + \"release-version\": \"${GITHUB_REF:11}\" \ + }\ + }" + + gh-actions: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + needs: [assets] + steps: + - name: Update GitHub Actions + run: | + curl -L \ + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ secrets.COMMITTER_TOKEN }}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/terraform-docs/chocolatey-package/dispatches \ + -d "{\ + \"event_type\": \"trigger-workflow\", \ + \"client_payload\": {\ + \"release-version\": \"${GITHUB_REF:11}\" \ + }\ + }" diff --git a/.gitignore b/.gitignore index af3ec5fc..c2893b06 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ dist/ # website site/ + +# contributors.list +contributors.list diff --git a/.goreleaser.yml b/.goreleaser.yml index 80599f18..56989cc9 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -38,12 +38,46 @@ checksum: snapshot: name_template: "{{ .Tag }}-dev" +release: + github: + owner: terraform-docs + name: terraform-docs + header: | + ## Notable Updates + footer: | + ## Docker images + + - `docker pull quay.io/terraform-docs/terraform-docs:latest` + - `docker pull quay.io/terraform-docs/terraform-docs:{{ .RawVersion }}` + + ## Contributors + + Very special thanks to the contributors. + + {{ .Env.Contributors }} + changelog: sort: asc filters: exclude: - "^docs:" - "^test:" + - "^Merge pull request" + groups: + - title: Dependency updates + regexp: '^.*?(.+)\(deps\)!?:.+$' + order: 300 + - title: "Features" + regexp: '^.*?feat(\(.+\))??!?:.+$' + order: 100 + - title: "Security updates" + regexp: '^.*?sec(\(.+\))??!?:.+$' + order: 150 + - title: "Bug Fixes" + regexp: '^.*?(fix|refactor)(\(.+\))??!?:.+$' + order: 200 + - title: "Chores" + order: 9999 dockers: - dockerfile: scripts/release/Dockerfile @@ -52,7 +86,7 @@ dockers: - "quay.io/terraform-docs/terraform-docs:{{ .RawVersion }}" brews: - - tap: + - repository: owner: terraform-docs name: homebrew-tap commit_author: @@ -64,20 +98,15 @@ brews: test: | system "#{bin}/terraform-docs version" -scoop: - bucket: - owner: terraform-docs - name: scoop-bucket - commit_author: - name: terraform-docs-bot - email: bot@terraform-docs.io - commit_msg_template: "Scoop update for {{ .ProjectName }} version {{ .Tag }}" - url_template: "https://github.com/terraform-docs/terraform-docs/releases/download/{{ .Tag }}/{{ .ArtifactName }}" - homepage: "https://github.com/terraform-docs/" - description: "Generate documentation from Terraform modules in various output formats" - license: MIT - -# Uncomment these lines if you want to experiment with other -# parts of the release process without releasing new binaries. -# release: -# disable: true +scoops: + - repository: + owner: terraform-docs + name: scoop-bucket + commit_author: + name: terraform-docs-bot + email: bot@terraform-docs.io + commit_msg_template: "Scoop update for {{ .ProjectName }} version {{ .Tag }}" + url_template: "https://github.com/terraform-docs/terraform-docs/releases/download/{{ .Tag }}/{{ .ArtifactName }}" + homepage: "https://github.com/terraform-docs/" + description: "Generate documentation from Terraform modules in various output formats" + license: MIT diff --git a/Makefile b/Makefile index 9b88e6d1..3e1a1ab9 100644 --- a/Makefile +++ b/Makefile @@ -109,32 +109,6 @@ docs: ## Generate document of formatter commands @ $(MAKE) --no-print-directory log-$@ $(GORUN) ./scripts/docs/generate.go -########### -##@ Release - -PATTERN = - -# if the last relase was alpha, beta or rc, 'release' target has to used with current -# cycle release. For example if latest tag is v0.8.0-rc.2 and v0.8.0 GA needs to get -# released the following should be executed: "make release version=0.8.0" -.PHONY: release -release: VERSION ?= $(shell echo $(CUR_VERSION) | sed 's/^v//' | awk -F'[ .]' '{print $(PATTERN)}') -release: ## Prepare release - @ $(MAKE) --no-print-directory log-$@ - @ ./scripts/release/release.sh "$(VERSION)" "$(CUR_VERSION)" "1" - -.PHONY: patch -patch: PATTERN = '\$$1\".\"\$$2\".\"\$$3+1' -patch: release ## Prepare Patch release - -.PHONY: minor -minor: PATTERN = '\$$1\".\"\$$2+1\".0\"' -minor: release ## Prepare Minor release - -.PHONY: major -major: PATTERN = '\$$1+1\".0.0\"' -major: release ## Prepare Major release - ########### ##@ Helpers @@ -165,27 +139,7 @@ tools: ## Install required tools .PHONY: help help: ## Display this help - @awk \ - -v "col=\033[36m" -v "nocol=\033[0m" \ - ' \ - BEGIN { \ - FS = ":.*##" ; \ - printf "Usage:\n make %s%s\n", col, nocol \ - } \ - /^[a-zA-Z_-]+:.*?##/ { \ - printf " %s%-12s%s %s\n", col, $$1, nocol, $$2 \ - } \ - /^##@/ { \ - printf "\n%s%s%s\n", nocol, substr($$0, 5), nocol \ - } \ - ' $(MAKEFILE_LIST) + @awk -v "col=\033[36m" -v "nocol=\033[0m" ' BEGIN { FS = ":.*##" ; printf "Usage:\n make %s%s\n", col, nocol } /^[a-zA-Z_-]+:.*?##/ { printf " %s%-12s%s %s\n", col, $$1, nocol, $$2 } /^##@/ { printf "\n%s%s%s\n", nocol, substr($$0, 5), nocol } ' $(MAKEFILE_LIST) log-%: - @grep -h -E '^$*:.*?## .*$$' $(MAKEFILE_LIST) | \ - awk \ - 'BEGIN { \ - FS = ":.*?## " \ - }; \ - { \ - printf "\033[36m==> %s\033[0m\n", $$2 \ - }' + @grep -h -E '^$*:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN { FS = ":.*?## " }; { printf "\033[36m==> %s\033[0m\n", $$2 }' diff --git a/scripts/release/update-choco.sh b/scripts/release/update-choco.sh deleted file mode 100755 index 07a116d1..00000000 --- a/scripts/release/update-choco.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash -# -# Copyright 2021 The terraform-docs Authors. -# -# Licensed under the MIT license (the "License"); you may not -# use this file except in compliance with the License. -# -# You may obtain a copy of the License at the LICENSE file in -# the root directory of this source tree. - -set -o errexit -set -o pipefail - -if [ -n "$(git status --short)" ]; then - echo "Error: There are untracked/modified changes, commit or discard them before the release." - exit 1 -fi - -RELEASE_VERSION=$1 - -if [ -z "${RELEASE_VERSION}" ]; then - echo "Error: release version is missing" - exit 1 -fi - -PWD=$(cd "$(dirname "$0")" && pwd -P) - -# get closest GA tag immediately before the latest one, ignore alpha, beta and rc tags -function getClosestVersion() { - local latest - latest="" - for t in $(git tag --sort=-creatordate); do - tag="$t" - if [[ "$tag" == *"-alpha"* ]] || [[ "$tag" == *"-beta"* ]] || [[ "$tag" == *"-rc"* ]]; then - continue - fi - if [ -z "$latest" ]; then - latest="$t" - continue - fi - break - done - echo "${tag//v/}" -} -CLOSEST_VERSION=$(getClosestVersion) - -git clone https://github.com/terraform-docs/chocolatey-package "${PWD}/chocolatey-package" - -# Bump version in terraform-docs.nuspec -sed -i -E "s|${CLOSEST_VERSION}|${RELEASE_VERSION}|g" "${PWD}/chocolatey-package/terraform-docs.nuspec" - -# Bump version and checksum in tools/chocolateyinstall.ps1 -CHECKSUM=$(grep windows-amd64.zip "${PWD}/../../dist/terraform-docs-v${RELEASE_VERSION}.sha256sum" | awk '{print $1}') - -sed -i -E "s|checksum = '.*$|checksum = '${CHECKSUM}'|g" "${PWD}/chocolatey-package/tools/chocolateyinstall.ps1" -sed -i -E "s|v${CLOSEST_VERSION}|v${RELEASE_VERSION}|g" "${PWD}/chocolatey-package/tools/chocolateyinstall.ps1" - -pushd "${PWD}/chocolatey-package/" -git diff -popd From 186bd7e667861ce7e8f9fcad4de74c7c08b8d756 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Tue, 4 Jun 2024 11:28:18 -0400 Subject: [PATCH 06/39] chore: update teaser image Signed-off-by: Khosrow Moossavi --- images/terraform-docs-teaser.png | Bin 19013 -> 19002 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/terraform-docs-teaser.png b/images/terraform-docs-teaser.png index 407922ec6cd412bf0fdf2817e4b6ca0bb7d8c053..e09c3cb01118d8554ae9fc68692e1392bcfd2261 100644 GIT binary patch literal 19002 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 CrE^vQ literal 19013 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 Mv=po4U%vT&04DsbbpQYW From db5e64cedb738d153c04d6a74a94f5c7cf1a370c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Jun 2024 06:40:05 +0000 Subject: [PATCH 07/39] Bump goreleaser/goreleaser-action from 5 to 6 Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 5 to 6. - [Release notes](https://github.com/goreleaser/goreleaser-action/releases) - [Commits](https://github.com/goreleaser/goreleaser-action/compare/v5...v6) --- updated-dependencies: - dependency-name: goreleaser/goreleaser-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/prerelease.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index 0fe42736..9f8cf477 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -25,7 +25,7 @@ jobs: go-version: ${{ env.GO_VERSION }} - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 + uses: goreleaser/goreleaser-action@v6 if: env.REGISTRY_USERNAME != '' with: distribution: goreleaser diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e4a93c55..23e6921d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -40,7 +40,7 @@ jobs: password: ${{ secrets.REGISTRY_PASSWORD }} - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v5 + uses: goreleaser/goreleaser-action@v6 if: env.REGISTRY_USERNAME != '' with: distribution: goreleaser From 78e94da7864d47732bbd941fe5c4e081ccd77e74 Mon Sep 17 00:00:00 2001 From: "christophe.vandekerchove" Date: Fri, 5 Jul 2024 14:02:30 -0400 Subject: [PATCH 08/39] fix: Replace
with
for markdown syntax
provides additional support for XHTML without breaking compatibility with HTML. This can be useful when trying to publish documentation generated by terraform-docs to XHTML based solutions Signed-off-by: christophe.vandekerchove --- docs/reference/markdown-table.md | 8 ++++---- format/testdata/markdown/table-Base.golden | 8 ++++---- format/testdata/markdown/table-EscapeCharacters.golden | 8 ++++---- .../testdata/markdown/table-IndentationOfFour.golden | 8 ++++---- format/testdata/markdown/table-OutputValues.golden | 4 ++-- .../markdown/table-OutputValuesNoSensitivity.golden | 4 ++-- format/testdata/markdown/table-WithAnchor.golden | 8 ++++---- format/testdata/markdown/table-WithRequired.golden | 8 ++++---- format/testdata/markdown/table-WithoutDefault.golden | 4 ++-- format/testdata/markdown/table-WithoutType.golden | 8 ++++---- template/sanitizer.go | 6 +++--- template/sanitizer_test.go | 10 +++++----- template/template_test.go | 4 ++-- .../testdata/table/codeblock-html.markdown.expected | 2 +- template/testdata/table/complex-html.markdown.expected | 2 +- 15 files changed, 46 insertions(+), 46 deletions(-) diff --git a/docs/reference/markdown-table.md b/docs/reference/markdown-table.md index 6c6faad4..64b4ce7f 100644 --- a/docs/reference/markdown-table.md +++ b/docs/reference/markdown-table.md @@ -148,15 +148,15 @@ generates the following output: | [bool-2](#input\_bool-2) | It's bool number two. | `bool` | `false` | no | | [bool-3](#input\_bool-3) | n/a | `bool` | `true` | no | | [bool\_default\_false](#input\_bool\_default\_false) | n/a | `bool` | `false` | no | - | [input-with-code-block](#input\_input-with-code-block) | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| no | + | [input-with-code-block](#input\_input-with-code-block) | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| no | | [input-with-pipe](#input\_input-with-pipe) | It includes v1 \| v2 \| v3 | `string` | `"v1"` | no | | [input\_with\_underscores](#input\_input\_with\_underscores) | A variable with underscores. | `any` | n/a | yes | - | [list-1](#input\_list-1) | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| no | + | [list-1](#input\_list-1) | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| no | | [list-2](#input\_list-2) | It's list number two. | `list` | n/a | yes | | [list-3](#input\_list-3) | n/a | `list` | `[]` | no | | [list\_default\_empty](#input\_list\_default\_empty) | n/a | `list(string)` | `[]` | no | - | [long\_type](#input\_long\_type) | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| no | - | [map-1](#input\_map-1) | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| no | + | [long\_type](#input\_long\_type) | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| no | + | [map-1](#input\_map-1) | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| no | | [map-2](#input\_map-2) | It's map number two. | `map` | n/a | yes | | [map-3](#input\_map-3) | n/a | `map` | `{}` | no | | [no-escape-default-value](#input\_no-escape-default-value) | The description contains `something_with_underscore`. Defaults to 'VALUE\_WITH\_UNDERSCORE'. | `string` | `"VALUE_WITH_UNDERSCORE"` | no | diff --git a/format/testdata/markdown/table-Base.golden b/format/testdata/markdown/table-Base.golden index 21ef339e..24333eef 100644 --- a/format/testdata/markdown/table-Base.golden +++ b/format/testdata/markdown/table-Base.golden @@ -92,14 +92,14 @@ followed by another line of text. | number-1 | It's number number one. | `number` | `42` | | map-3 | n/a | `map` | `{}` | | map-2 | It's map number two. | `map` | n/a | -| map-1 | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| +| map-1 | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| | list-3 | n/a | `list` | `[]` | | list-2 | It's list number two. | `list` | n/a | -| list-1 | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| +| list-1 | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| | input_with_underscores | A variable with underscores. | `any` | n/a | | input-with-pipe | It includes v1 \| v2 \| v3 | `string` | `"v1"` | -| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| -| long_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| +| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| +| long_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| | no-escape-default-value | The description contains `something_with_underscore`. Defaults to 'VALUE_WITH_UNDERSCORE'. | `string` | `"VALUE_WITH_UNDERSCORE"` | | with-url | The description contains url. https://www.domain.com/foo/bar_baz.html | `string` | `""` | | string_default_empty | n/a | `string` | `""` | diff --git a/format/testdata/markdown/table-EscapeCharacters.golden b/format/testdata/markdown/table-EscapeCharacters.golden index bb82f742..b8e6b01f 100644 --- a/format/testdata/markdown/table-EscapeCharacters.golden +++ b/format/testdata/markdown/table-EscapeCharacters.golden @@ -92,14 +92,14 @@ followed by another line of text. | number-1 | It's number number one. | `number` | `42` | | map-3 | n/a | `map` | `{}` | | map-2 | It's map number two. | `map` | n/a | -| map-1 | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| +| map-1 | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| | list-3 | n/a | `list` | `[]` | | list-2 | It's list number two. | `list` | n/a | -| list-1 | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| +| list-1 | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| | input\_with\_underscores | A variable with underscores. | `any` | n/a | | input-with-pipe | It includes v1 \| v2 \| v3 | `string` | `"v1"` | -| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| -| long\_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| +| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| +| long\_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| | no-escape-default-value | The description contains `something_with_underscore`. Defaults to 'VALUE\_WITH\_UNDERSCORE'. | `string` | `"VALUE_WITH_UNDERSCORE"` | | with-url | The description contains url. https://www.domain.com/foo/bar_baz.html | `string` | `""` | | string\_default\_empty | n/a | `string` | `""` | diff --git a/format/testdata/markdown/table-IndentationOfFour.golden b/format/testdata/markdown/table-IndentationOfFour.golden index 19c86fd8..96e9c4f1 100644 --- a/format/testdata/markdown/table-IndentationOfFour.golden +++ b/format/testdata/markdown/table-IndentationOfFour.golden @@ -92,14 +92,14 @@ followed by another line of text. | number-1 | It's number number one. | `number` | `42` | | map-3 | n/a | `map` | `{}` | | map-2 | It's map number two. | `map` | n/a | -| map-1 | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| +| map-1 | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| | list-3 | n/a | `list` | `[]` | | list-2 | It's list number two. | `list` | n/a | -| list-1 | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| +| list-1 | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| | input_with_underscores | A variable with underscores. | `any` | n/a | | input-with-pipe | It includes v1 \| v2 \| v3 | `string` | `"v1"` | -| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| -| long_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| +| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| +| long_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| | no-escape-default-value | The description contains `something_with_underscore`. Defaults to 'VALUE_WITH_UNDERSCORE'. | `string` | `"VALUE_WITH_UNDERSCORE"` | | with-url | The description contains url. https://www.domain.com/foo/bar_baz.html | `string` | `""` | | string_default_empty | n/a | `string` | `""` | diff --git a/format/testdata/markdown/table-OutputValues.golden b/format/testdata/markdown/table-OutputValues.golden index 309b85cd..b0a25b37 100644 --- a/format/testdata/markdown/table-OutputValues.golden +++ b/format/testdata/markdown/table-OutputValues.golden @@ -2,7 +2,7 @@ | Name | Description | Value | Sensitive | |------|-------------|-------|:---------:| -| unquoted | It's unquoted output. |
{
"leon": "cat"
}
| no | -| output-2 | It's output number two. |
[
"jack",
"lola"
]
| no | +| unquoted | It's unquoted output. |
{
"leon": "cat"
}
| no | +| output-2 | It's output number two. |
[
"jack",
"lola"
]
| no | | output-1 | It's output number one. | `1` | no | | output-0.12 | terraform 0.12 only | `` | yes | \ No newline at end of file diff --git a/format/testdata/markdown/table-OutputValuesNoSensitivity.golden b/format/testdata/markdown/table-OutputValuesNoSensitivity.golden index 8e7f0216..0e6221ca 100644 --- a/format/testdata/markdown/table-OutputValuesNoSensitivity.golden +++ b/format/testdata/markdown/table-OutputValuesNoSensitivity.golden @@ -2,7 +2,7 @@ | Name | Description | Value | |------|-------------|-------| -| unquoted | It's unquoted output. |
{
"leon": "cat"
}
| -| output-2 | It's output number two. |
[
"jack",
"lola"
]
| +| unquoted | It's unquoted output. |
{
"leon": "cat"
}
| +| output-2 | It's output number two. |
[
"jack",
"lola"
]
| | output-1 | It's output number one. | `1` | | output-0.12 | terraform 0.12 only | `` | \ No newline at end of file diff --git a/format/testdata/markdown/table-WithAnchor.golden b/format/testdata/markdown/table-WithAnchor.golden index a1aaaccc..6a202b2c 100644 --- a/format/testdata/markdown/table-WithAnchor.golden +++ b/format/testdata/markdown/table-WithAnchor.golden @@ -92,14 +92,14 @@ followed by another line of text. | [number-1](#input_number-1) | It's number number one. | `number` | `42` | | [map-3](#input_map-3) | n/a | `map` | `{}` | | [map-2](#input_map-2) | It's map number two. | `map` | n/a | -| [map-1](#input_map-1) | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| +| [map-1](#input_map-1) | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| | [list-3](#input_list-3) | n/a | `list` | `[]` | | [list-2](#input_list-2) | It's list number two. | `list` | n/a | -| [list-1](#input_list-1) | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| +| [list-1](#input_list-1) | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| | [input_with_underscores](#input_input_with_underscores) | A variable with underscores. | `any` | n/a | | [input-with-pipe](#input_input-with-pipe) | It includes v1 \| v2 \| v3 | `string` | `"v1"` | -| [input-with-code-block](#input_input-with-code-block) | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| -| [long_type](#input_long_type) | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| +| [input-with-code-block](#input_input-with-code-block) | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| +| [long_type](#input_long_type) | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| | [no-escape-default-value](#input_no-escape-default-value) | The description contains `something_with_underscore`. Defaults to 'VALUE_WITH_UNDERSCORE'. | `string` | `"VALUE_WITH_UNDERSCORE"` | | [with-url](#input_with-url) | The description contains url. https://www.domain.com/foo/bar_baz.html | `string` | `""` | | [string_default_empty](#input_string_default_empty) | n/a | `string` | `""` | diff --git a/format/testdata/markdown/table-WithRequired.golden b/format/testdata/markdown/table-WithRequired.golden index 08ed2ee3..8e335e5a 100644 --- a/format/testdata/markdown/table-WithRequired.golden +++ b/format/testdata/markdown/table-WithRequired.golden @@ -92,14 +92,14 @@ followed by another line of text. | number-1 | It's number number one. | `number` | `42` | no | | map-3 | n/a | `map` | `{}` | no | | map-2 | It's map number two. | `map` | n/a | yes | -| map-1 | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| no | +| map-1 | It's map number one. | `map` |
{
"a": 1,
"b": 2,
"c": 3
}
| no | | list-3 | n/a | `list` | `[]` | no | | list-2 | It's list number two. | `list` | n/a | yes | -| list-1 | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| no | +| list-1 | It's list number one. | `list` |
[
"a",
"b",
"c"
]
| no | | input_with_underscores | A variable with underscores. | `any` | n/a | yes | | input-with-pipe | It includes v1 \| v2 \| v3 | `string` | `"v1"` | no | -| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| no | -| long_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| no | +| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` |
[
"name rack:location"
]
| no | +| long_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
|
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| no | | no-escape-default-value | The description contains `something_with_underscore`. Defaults to 'VALUE_WITH_UNDERSCORE'. | `string` | `"VALUE_WITH_UNDERSCORE"` | no | | with-url | The description contains url. https://www.domain.com/foo/bar_baz.html | `string` | `""` | no | | string_default_empty | n/a | `string` | `""` | no | diff --git a/format/testdata/markdown/table-WithoutDefault.golden b/format/testdata/markdown/table-WithoutDefault.golden index 082b876c..8cc8b3b5 100644 --- a/format/testdata/markdown/table-WithoutDefault.golden +++ b/format/testdata/markdown/table-WithoutDefault.golden @@ -22,8 +22,8 @@ | list-1 | It's list number one. | `list` | | input_with_underscores | A variable with underscores. | `any` | | input-with-pipe | It includes v1 \| v2 \| v3 | `string` | -| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` | -| long_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
| +| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
| `list` | +| long_type | This description is itself markdown.

It spans over multiple lines. |
object({
name = string,
foo = object({ foo = string, bar = string }),
bar = object({ foo = string, bar = string }),
fizz = list(string),
buzz = list(string)
})
| | no-escape-default-value | The description contains `something_with_underscore`. Defaults to 'VALUE_WITH_UNDERSCORE'. | `string` | | with-url | The description contains url. https://www.domain.com/foo/bar_baz.html | `string` | | string_default_empty | n/a | `string` | diff --git a/format/testdata/markdown/table-WithoutType.golden b/format/testdata/markdown/table-WithoutType.golden index b9345a39..56f65f3f 100644 --- a/format/testdata/markdown/table-WithoutType.golden +++ b/format/testdata/markdown/table-WithoutType.golden @@ -16,14 +16,14 @@ | number-1 | It's number number one. | `42` | | map-3 | n/a | `{}` | | map-2 | It's map number two. | n/a | -| map-1 | It's map number one. |
{
"a": 1,
"b": 2,
"c": 3
}
| +| map-1 | It's map number one. |
{
"a": 1,
"b": 2,
"c": 3
}
| | list-3 | n/a | `[]` | | list-2 | It's list number two. | n/a | -| list-1 | It's list number one. |
[
"a",
"b",
"c"
]
| +| list-1 | It's list number one. |
[
"a",
"b",
"c"
]
| | input_with_underscores | A variable with underscores. | n/a | | input-with-pipe | It includes v1 \| v2 \| v3 | `"v1"` | -| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
|
[
"name rack:location"
]
| -| long_type | This description is itself markdown.

It spans over multiple lines. |
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| +| input-with-code-block | This is a complicated one. We need a newline.
And an example in a code block
default     = [
"machine rack01:neptune"
]
|
[
"name rack:location"
]
| +| long_type | This description is itself markdown.

It spans over multiple lines. |
{
"bar": {
"bar": "bar",
"foo": "bar"
},
"buzz": [
"fizz",
"buzz"
],
"fizz": [],
"foo": {
"bar": "foo",
"foo": "foo"
},
"name": "hello"
}
| | no-escape-default-value | The description contains `something_with_underscore`. Defaults to 'VALUE_WITH_UNDERSCORE'. | `"VALUE_WITH_UNDERSCORE"` | | with-url | The description contains url. https://www.domain.com/foo/bar_baz.html | `""` | | string_default_empty | n/a | `""` | diff --git a/template/sanitizer.go b/template/sanitizer.go index bf020d3f..029ee98d 100644 --- a/template/sanitizer.go +++ b/template/sanitizer.go @@ -114,7 +114,7 @@ func SanitizeMarkdownTable(s string, escape bool, html bool) string { return segment }, func(segment string, first bool, last bool) string { - linebreak := "
" + linebreak := "
" codestart := "
"
 			codeend := "
" @@ -189,11 +189,11 @@ func ConvertMultiLineText(s string, isTable bool, isHeader bool, showHTML bool) return s } - // representation of line break.
if showHTML is true, if false. + // representation of line break.
if showHTML is true, if false. linebreak := " " if showHTML { - linebreak = "
" + linebreak = "
" } // Convert space-space-newline to 'linebreak'. diff --git a/template/sanitizer_test.go b/template/sanitizer_test.go index e4fb7e77..cf787d9f 100644 --- a/template/sanitizer_test.go +++ b/template/sanitizer_test.go @@ -301,7 +301,7 @@ func TestConvertMultiLineText(t *testing.T) { filename: "newline-single", isTable: true, showHTML: true, - expected: "Lorem ipsum dolor sit amet,

consectetur adipiscing elit,

sed do eiusmod tempor incididunt

ut labore et dolore magna aliqua.", + expected: "Lorem ipsum dolor sit amet,

consectetur adipiscing elit,

sed do eiusmod tempor incididunt

ut labore et dolore magna aliqua.", }, { name: "convert multi-line newline-single", @@ -322,7 +322,7 @@ func TestConvertMultiLineText(t *testing.T) { filename: "newline-double", isTable: true, showHTML: true, - expected: "Lorem ipsum dolor sit amet,


consectetur adipiscing elit,


sed do eiusmod tempor incididunt


ut labore et dolore magna aliqua.", + expected: "Lorem ipsum dolor sit amet,


consectetur adipiscing elit,


sed do eiusmod tempor incididunt


ut labore et dolore magna aliqua.", }, { name: "convert multi-line newline-double", @@ -343,7 +343,7 @@ func TestConvertMultiLineText(t *testing.T) { filename: "paragraph", isTable: true, showHTML: true, - expected: "Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.", + expected: "Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.", }, { name: "convert multi-line paragraph", @@ -364,7 +364,7 @@ func TestConvertMultiLineText(t *testing.T) { filename: "list", isTable: true, showHTML: true, - expected: "- Lorem ipsum dolor sit amet,
* Lorem ipsum dolor sit amet,
* consectetur adipiscing elit,
- consectetur adipiscing elit,
- sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua.", + expected: "- Lorem ipsum dolor sit amet,
* Lorem ipsum dolor sit amet,
* consectetur adipiscing elit,
- consectetur adipiscing elit,
- sed do eiusmod tempor incididunt
- ut labore et dolore magna aliqua.", }, { name: "convert multi-line list", @@ -385,7 +385,7 @@ func TestConvertMultiLineText(t *testing.T) { filename: "indentations", isTable: true, showHTML: true, - expected: "This is is a multline test which works

Key
Foo1: blah
Foo2: blah

Key2
Foo1: bar1
Foo2: bar2", + expected: "This is is a multline test which works

Key
Foo1: blah
Foo2: blah

Key2
Foo1: bar1
Foo2: bar2", }, { name: "convert multi-line indentations", diff --git a/template/template_test.go b/template/template_test.go index 37f97dab..cc8c08ac 100644 --- a/template/template_test.go +++ b/template/template_test.go @@ -398,14 +398,14 @@ func TestBuiltinFunc(t *testing.T) { funcName: "sanitizeMarkdownTbl", funcArgs: []string{"\"Example of 'foo_bar' module in `foo_bar.tf`.\n\n| Foo | Bar |\""}, escape: true, - expected: "Example of 'foo\\_bar' module in `foo_bar.tf`.

\\| Foo \\| Bar \\|", + expected: "Example of 'foo\\_bar' module in `foo_bar.tf`.

\\| Foo \\| Bar \\|", }, { name: "template builtin functions sanitizeMarkdownTbl", funcName: "sanitizeMarkdownTbl", funcArgs: []string{"\"Example of 'foo_bar' module in `foo_bar.tf`.\n\n| Foo | Bar |\""}, escape: false, - expected: "Example of 'foo_bar' module in `foo_bar.tf`.

\\| Foo \\| Bar \\|", + expected: "Example of 'foo_bar' module in `foo_bar.tf`.

\\| Foo \\| Bar \\|", }, { name: "template builtin functions sanitizeMarkdownTbl", diff --git a/template/testdata/table/codeblock-html.markdown.expected b/template/testdata/table/codeblock-html.markdown.expected index 8e60f2ad..a70db77c 100644 --- a/template/testdata/table/codeblock-html.markdown.expected +++ b/template/testdata/table/codeblock-html.markdown.expected @@ -1 +1 @@ -This is a complicated one. We need a newline.
And an example in a code block. Availeble options
are: foo \| bar \| baz
default = [
"foo"
]
\ No newline at end of file +This is a complicated one. We need a newline.
And an example in a code block. Availeble options
are: foo \| bar \| baz
default = [
"foo"
]
\ No newline at end of file diff --git a/template/testdata/table/complex-html.markdown.expected b/template/testdata/table/complex-html.markdown.expected index c822e025..dd0ac735 100644 --- a/template/testdata/table/complex-html.markdown.expected +++ b/template/testdata/table/complex-html.markdown.expected @@ -1 +1 @@ -Usage:

Example of 'foo\_bar' module in `foo_bar.tf`.

- list item 1
- list item 2

Even inline **formatting** in _here_ is possible.
and some [link](https://domain.com/)

* list item 3
* list item 4
module "foo_bar" {
source = "github.com/foo/bar"

id = "1234567890"
name = "baz"

zones = ["us-east-1", "us-west-1"]

tags = {
Name = "baz"
Created-By = "first.last@email.com"
Date-Created = "20180101"
}
}
Here is some trailing text after code block,
followed by another line of text.

\| Name \| Description \|
\|------\|-----------------\|
\| Foo \| Foo description \|
\| Bar \| Bar description \| \ No newline at end of file +Usage:

Example of 'foo\_bar' module in `foo_bar.tf`.

- list item 1
- list item 2

Even inline **formatting** in _here_ is possible.
and some [link](https://domain.com/)

* list item 3
* list item 4
module "foo_bar" {
source = "github.com/foo/bar"

id = "1234567890"
name = "baz"

zones = ["us-east-1", "us-west-1"]

tags = {
Name = "baz"
Created-By = "first.last@email.com"
Date-Created = "20180101"
}
}
Here is some trailing text after code block,
followed by another line of text.

\| Name \| Description \|
\|------\|-----------------\|
\| Foo \| Foo description \|
\| Bar \| Bar description \| \ No newline at end of file From 045e5e69dbf3830b16297ecf090aa4c0a30b0628 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 21:46:59 +0000 Subject: [PATCH 09/39] Bump google.golang.org/grpc from 1.64.0 to 1.64.1 Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.64.0 to 1.64.1. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.64.0...v1.64.1) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index ebc3aaf4..811cee6b 100644 --- a/go.mod +++ b/go.mod @@ -58,16 +58,16 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/zclconf/go-cty v1.14.4 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.23.0 // indirect + golang.org/x/crypto v0.24.0 // indirect golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - golang.org/x/tools v0.21.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e // indirect - google.golang.org/grpc v1.64.0 // indirect + google.golang.org/grpc v1.64.1 // indirect google.golang.org/protobuf v1.34.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect ) diff --git a/go.sum b/go.sum index 8cfa1ae9..a889c9a0 100644 --- a/go.sum +++ b/go.sum @@ -166,8 +166,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d h1:N0hmiNbwsSNwHBAvR3QB5w25pUwH4tK0Y/RltD1j1h4= golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e h1:7Xs2YCOpMlNqSQSmrrnhlzBXIE/bpMecZplbLePTJvE= @@ -181,8 +181,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL 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= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -203,8 +203,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -213,19 +213,19 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e h1:Elxv5MwEkCI9f5SkoL6afed6NTdxaGoAo39eANBwHL8= google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 0562dbd6c15c599693931227a87902ef6bd09103 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 06:57:50 +0000 Subject: [PATCH 10/39] Bump library/alpine from 3.20.0 to 3.20.2 in /scripts/release Bumps library/alpine from 3.20.0 to 3.20.2. --- updated-dependencies: - dependency-name: library/alpine dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- scripts/release/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release/Dockerfile b/scripts/release/Dockerfile index c0049116..66b8e5a0 100644 --- a/scripts/release/Dockerfile +++ b/scripts/release/Dockerfile @@ -6,7 +6,7 @@ # You may obtain a copy of the License at the LICENSE file in # the root directory of this source tree. -FROM docker.io/library/alpine:3.20.0 +FROM docker.io/library/alpine:3.20.2 COPY terraform-docs /usr/local/bin/terraform-docs From 7de82c84c0a8fed1a79a6aecd3f6e0a78d7552dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Aug 2024 06:42:12 +0000 Subject: [PATCH 11/39] Bump library/golang from 1.22.3-alpine to 1.23.0-alpine Bumps library/golang from 1.22.3-alpine to 1.23.0-alpine. --- updated-dependencies: - dependency-name: library/golang dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 40e23fb2..ae4d2004 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ # You may obtain a copy of the License at the LICENSE file in # the root directory of this source tree. -FROM docker.io/library/golang:1.22.3-alpine AS builder +FROM docker.io/library/golang:1.23.0-alpine AS builder RUN apk add --update --no-cache make From 4c944787bc56574ea0a9d63f483f41e635530398 Mon Sep 17 00:00:00 2001 From: Pascal Hofmann Date: Wed, 4 Sep 2024 09:19:02 +0200 Subject: [PATCH 12/39] ci: Use correct env var for repo owner Signed-off-by: Pascal Hofmann --- .github/workflows/ci.yaml | 2 +- .github/workflows/prerelease.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 394375bd..c427530b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -111,7 +111,7 @@ jobs: outputs: "type=registry,push=true" platforms: linux/amd64,linux/arm64 push: true - tags: quay.io/${{ env.REPO_OWNER }}/terraform-docs:edge + tags: quay.io/${{ env.GITHUB_REPOSITORY_OWNER }}/terraform-docs:edge publish: runs-on: ubuntu-latest diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index f4e92310..c78d56d9 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -75,6 +75,6 @@ jobs: outputs: "type=registry,push=true" platforms: linux/amd64,linux/arm64 push: true - tags: quay.io/${{ env.REPO_OWNER }}/terraform-docs:${{ steps.vars.outputs.tag }} + tags: quay.io/${{ env.GITHUB_REPOSITORY_OWNER }}/terraform-docs:${{ steps.vars.outputs.tag }} From 62756ca4d3de82b63de9b74635a473667bc104c8 Mon Sep 17 00:00:00 2001 From: Pascal Hofmann Date: Wed, 4 Sep 2024 09:34:22 +0200 Subject: [PATCH 13/39] ci: Use correct var for repo owner (second try) Signed-off-by: Pascal Hofmann --- .github/workflows/ci.yaml | 2 +- .github/workflows/prerelease.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c427530b..97bf2ca7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -111,7 +111,7 @@ jobs: outputs: "type=registry,push=true" platforms: linux/amd64,linux/arm64 push: true - tags: quay.io/${{ env.GITHUB_REPOSITORY_OWNER }}/terraform-docs:edge + tags: quay.io/${{ github.event.repository.name }}/terraform-docs:edge publish: runs-on: ubuntu-latest diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index c78d56d9..94fa5787 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -75,6 +75,6 @@ jobs: outputs: "type=registry,push=true" platforms: linux/amd64,linux/arm64 push: true - tags: quay.io/${{ env.GITHUB_REPOSITORY_OWNER }}/terraform-docs:${{ steps.vars.outputs.tag }} + tags: quay.io/${{ github.event.repository.name }}/terraform-docs:${{ steps.vars.outputs.tag }} From 7da557ac5eeb9f8b537a15f49215b17ba253b5d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 06:24:11 +0000 Subject: [PATCH 14/39] chore(deps): bump docker/build-push-action from 5 to 6 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v5...v6) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yaml | 2 +- .github/workflows/prerelease.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 97bf2ca7..a9573f88 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -106,7 +106,7 @@ jobs: - name: Build and push Docker image if: env.REGISTRY_USERNAME != '' && contains(github.ref, 'refs/heads/master') - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: outputs: "type=registry,push=true" platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index 94fa5787..f3e754b2 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -70,7 +70,7 @@ jobs: password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push Docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: outputs: "type=registry,push=true" platforms: linux/amd64,linux/arm64 From c825b41689069d9d51d53bd459a8164a5a3290d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 06:37:15 +0000 Subject: [PATCH 15/39] chore(deps): bump library/alpine from 3.20.0 to 3.20.2 Bumps library/alpine from 3.20.0 to 3.20.2. --- updated-dependencies: - dependency-name: library/alpine dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index df34ddfa..2c5f161d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ RUN make build ################ -FROM docker.io/library/alpine:3.20.0 +FROM docker.io/library/alpine:3.20.2 # Mitigate CVE-2023-5363 RUN apk add --no-cache --upgrade "openssl>=3.1.4-r1" From a639fbd42479a6e76c8231b8f9d3f6049ed6209f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 06:22:55 +0000 Subject: [PATCH 16/39] chore(deps): bump library/alpine in /scripts/release Bumps library/alpine from 3.20.2 to 3.20.3. --- updated-dependencies: - dependency-name: library/alpine dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- scripts/release/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release/Dockerfile b/scripts/release/Dockerfile index 66b8e5a0..5b1ce88e 100644 --- a/scripts/release/Dockerfile +++ b/scripts/release/Dockerfile @@ -6,7 +6,7 @@ # You may obtain a copy of the License at the LICENSE file in # the root directory of this source tree. -FROM docker.io/library/alpine:3.20.2 +FROM docker.io/library/alpine:3.20.3 COPY terraform-docs /usr/local/bin/terraform-docs From 5441df2ac976dcda3dd8273adf8559aec1728975 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 06:30:26 +0000 Subject: [PATCH 17/39] chore(deps): bump library/alpine from 3.20.2 to 3.20.3 Bumps library/alpine from 3.20.2 to 3.20.3. --- updated-dependencies: - dependency-name: library/alpine dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2c5f161d..c25e67b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ RUN make build ################ -FROM docker.io/library/alpine:3.20.2 +FROM docker.io/library/alpine:3.20.3 # Mitigate CVE-2023-5363 RUN apk add --no-cache --upgrade "openssl>=3.1.4-r1" From a2f4573244b63716ff3c62ebcbee022347b0e98d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 06:11:59 +0000 Subject: [PATCH 18/39] chore(deps): bump library/golang from 1.23.0-alpine to 1.23.1-alpine Bumps library/golang from 1.23.0-alpine to 1.23.1-alpine. --- updated-dependencies: - dependency-name: library/golang dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c25e67b8..3518d1fa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ # You may obtain a copy of the License at the LICENSE file in # the root directory of this source tree. -FROM docker.io/library/golang:1.23.0-alpine AS builder +FROM docker.io/library/golang:1.23.1-alpine AS builder RUN apk add --update --no-cache make From 0db6eef258c38ac6b37a33ebd1d94ad1e094e0d6 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Wed, 18 Sep 2024 12:07:44 -0400 Subject: [PATCH 19/39] chore: update go to 1.23.1 Signed-off-by: Khosrow Moossavi --- .github/workflows/ci.yaml | 2 +- .github/workflows/codeql.yaml | 2 +- .github/workflows/prerelease.yaml | 2 +- .github/workflows/release.yaml | 2 +- go.mod | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a9573f88..4eddc378 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -7,7 +7,7 @@ on: pull_request: env: - GO_VERSION: "1.22.3" + GO_VERSION: "1.23.1" REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} jobs: diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 8f8eb777..3d581309 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -6,7 +6,7 @@ on: - master env: - GO_VERSION: "1.22.3" + GO_VERSION: "1.23.1" jobs: analyze: diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index f3e754b2..4eae35a1 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -6,7 +6,7 @@ on: - "v*.*.*-*" env: - GO_VERSION: "1.22.3" + GO_VERSION: "1.23.1" REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} jobs: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4baa723d..11b10cd3 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -7,7 +7,7 @@ on: - "!v*.*.*-*" env: - GO_VERSION: "1.22.3" + GO_VERSION: "1.23.1" REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} jobs: diff --git a/go.mod b/go.mod index 811cee6b..aed3ce7b 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/terraform-docs/terraform-docs -go 1.22 +go 1.23 require ( github.com/BurntSushi/toml v1.4.0 From 3355644e986a830d22e4148a1f54f3dc8db99aeb Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Wed, 18 Sep 2024 12:09:10 -0400 Subject: [PATCH 20/39] chore: update go dependencies Signed-off-by: Khosrow Moossavi --- go.mod | 43 +++++++++--------- go.sum | 134 ++++++++++++++++++++------------------------------------- 2 files changed, 69 insertions(+), 108 deletions(-) diff --git a/go.mod b/go.mod index aed3ce7b..9a695c6e 100644 --- a/go.mod +++ b/go.mod @@ -4,28 +4,29 @@ go 1.23 require ( github.com/BurntSushi/toml v1.4.0 - github.com/Masterminds/sprig/v3 v3.2.3 + github.com/Masterminds/sprig/v3 v3.3.0 github.com/hashicorp/go-hclog v1.6.3 github.com/hashicorp/go-plugin v1.6.1 github.com/hashicorp/go-version v1.7.0 - github.com/hashicorp/hcl/v2 v2.20.1 + github.com/hashicorp/hcl/v2 v2.22.0 github.com/iancoleman/orderedmap v0.3.0 github.com/imdario/mergo v0.3.16 github.com/mitchellh/go-homedir v1.1.0 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.18.2 + github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 github.com/terraform-docs/terraform-config-inspect v0.0.0-20210728164355-9c1f178932fa - golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 gopkg.in/yaml.v3 v3.0.1 honnef.co/go/tools v0.3.2 mvdan.cc/xurls/v2 v2.5.0 ) require ( + dario.cat/mergo v1.0.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver/v3 v3.2.1 // indirect + github.com/Masterminds/semver/v3 v3.3.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -36,7 +37,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect - github.com/huandu/xstrings v1.4.0 // indirect + github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -47,27 +48,27 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/oklog/run v1.1.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cast v1.7.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/zclconf/go-cty v1.14.4 // indirect + github.com/zclconf/go-cty v1.15.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.24.0 // indirect + golang.org/x/crypto v0.27.0 // indirect golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e // indirect - google.golang.org/grpc v1.64.1 // indirect - google.golang.org/protobuf v1.34.1 // indirect + golang.org/x/mod v0.21.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/text v0.18.0 // indirect + golang.org/x/tools v0.25.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.66.2 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect ) diff --git a/go.sum b/go.sum index a889c9a0..c08cda5b 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,13 @@ +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= -github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= -github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= +github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= +github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= +github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -17,7 +18,7 @@ github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -38,7 +39,6 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= @@ -51,16 +51,14 @@ github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= -github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= -github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= +github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -87,7 +85,6 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -100,53 +97,43 @@ github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQ github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= 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= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= +github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/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/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -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.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/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= @@ -154,89 +141,62 @@ github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSW github.com/terraform-docs/terraform-config-inspect v0.0.0-20210728164355-9c1f178932fa h1:wdyf3TobwYFwsqnUGJcjdNHxKfwHPFbaOknBJehnF1M= github.com/terraform-docs/terraform-config-inspect v0.0.0-20210728164355-9c1f178932fa/go.mod h1:GtanFwTsRRXScYHOMb5h4K18XQBFeS2tXat9/LrPtPc= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= -github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= -github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= +github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= -golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d h1:N0hmiNbwsSNwHBAvR3QB5w25pUwH4tK0Y/RltD1j1h4= -golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e h1:7Xs2YCOpMlNqSQSmrrnhlzBXIE/bpMecZplbLePTJvE= golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.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-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/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-20210615035016-665e8c7367d1/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= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= +golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e h1:Elxv5MwEkCI9f5SkoL6afed6NTdxaGoAo39eANBwHL8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= +google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/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= honnef.co/go/tools v0.3.2 h1:ytYb4rOqyp1TSa2EPvNVwtPQJctSELKaMyLfqNP4+34= From c2e8d0ac3c1428fd62d37c8fbc0e4997fcb953be Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Wed, 18 Sep 2024 12:34:47 -0400 Subject: [PATCH 21/39] chore: fix linter issues Signed-off-by: Khosrow Moossavi --- .golangci.yml | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 8c753463..ff10e07e 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -3,16 +3,17 @@ run: tests: false output: - format: tab + formats: + - format: tab linters-settings: - govet: - # report about shadowed variables - check-shadowing: true + # govet: + # # report about shadowed variables + # check-shadowing: true - golint: - # minimal confidence for issues, default is 0.8 - min-confidence: 0.8 + # golint: + # # minimal confidence for issues, default is 0.8 + # min-confidence: 0.8 gofmt: # simplify code: gofmt with `-s` option, true by default @@ -27,9 +28,9 @@ linters-settings: # minimal code complexity to report, 30 by default (but we recommend 10-20) min-complexity: 10 - maligned: - # print struct with more effective memory layout or not, false by default - suggest-new: true + # maligned: + # # print struct with more effective memory layout or not, false by default + # suggest-new: true dupl: # tokens count to trigger issue, 150 by default @@ -50,7 +51,7 @@ linters-settings: # XXX: if you enable this setting, unused will report a lot of false-positives in text editors: # if it's called for subdir of a project it can't find funcs usages. All text editor integrations # with golangci-lint call it on a directory with the changed file. - check-exported: false + exported-fields-are-used: false unparam: # Inspect exported functions, default is false. Set to true if no external program/library imports your code. @@ -89,6 +90,7 @@ linters-settings: locale: US linters: + disable-all: true enable: - megacheck - govet @@ -121,6 +123,9 @@ issues: - scopelint - unparam - goconst + - path: (.*).go + linters: + - typecheck # G306: Expect WriteFile permissions to be 0600 or less # mainly seen in internal/cli/wrtier.go @@ -146,8 +151,8 @@ issues: # Default is false. new: false - # Maximum issues count per one linter. Set to 0 to disable. Default is 50. - max-per-linter: 0 + # # Maximum issues count per one linter. Set to 0 to disable. Default is 50. + # max-issues-per-linter: 0 # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. max-same-issues: 0 From 11270e31d8952d699dd48059f2b8593b294b78c3 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Wed, 18 Sep 2024 12:39:37 -0400 Subject: [PATCH 22/39] chore: update staticcheck to 2024.1.1 Signed-off-by: Khosrow Moossavi --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3e1a1ab9..fc560f22 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ lint: ## Run linter .PHONY: staticcheck staticcheck: ## Run staticcheck @ $(MAKE) --no-print-directory log-$@ - $(GO) run honnef.co/go/tools/cmd/staticcheck@2023.1.6 -- ./... + $(GO) run honnef.co/go/tools/cmd/staticcheck@2024.1.1 -- ./... .PHONY: test test: ## Run tests From d64cd3b44353b6b2ff4ea72d6c0f39283a696739 Mon Sep 17 00:00:00 2001 From: terraform-docs-bot Date: Wed, 18 Sep 2024 16:53:55 +0000 Subject: [PATCH 23/39] Release version v0.19.0 --- README.md | 12 ++++++------ docs/user-guide/installation.md | 10 +++++----- internal/version/version.go | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 190d488f..198ec589 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Stable binaries are also available on the [releases] page. To install, download binary for your platform from "Assets" and place this into your `$PATH`: ```bash -curl -Lo ./terraform-docs.tar.gz https://github.com/terraform-docs/terraform-docs/releases/download/v0.18.0/terraform-docs-v0.18.0-$(uname)-amd64.tar.gz +curl -Lo ./terraform-docs.tar.gz https://github.com/terraform-docs/terraform-docs/releases/download/v0.19.0/terraform-docs-v0.19.0-$(uname)-amd64.tar.gz tar -xzf terraform-docs.tar.gz chmod +x terraform-docs mv terraform-docs /usr/local/bin/terraform-docs @@ -51,12 +51,12 @@ The latest version can be installed using `go install` or `go get`: ```bash # go1.17+ -go install github.com/terraform-docs/terraform-docs@v0.18.0 +go install github.com/terraform-docs/terraform-docs@v0.19.0 ``` ```bash # go1.16 -GO111MODULE="on" go get github.com/terraform-docs/terraform-docs@v0.18.0 +GO111MODULE="on" go get github.com/terraform-docs/terraform-docs@v0.19.0 ``` **NOTE:** please use the latest Go to do this, minimum `go1.16` is required. @@ -88,14 +88,14 @@ terraform-docs can be run as a container by mounting a directory with `.tf` files in it and run the following command: ```bash -docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.18.0 markdown /terraform-docs +docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.19.0 markdown /terraform-docs ``` If `output.file` is not enabled for this module, generated output can be redirected back to a file: ```bash -docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.18.0 markdown /terraform-docs > doc.md +docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.19.0 markdown /terraform-docs > doc.md ``` **NOTE:** Docker tag `latest` refers to _latest_ stable released version and `edge` @@ -142,7 +142,7 @@ in the root of your Git repo with at least the following content: ```yaml repos: - repo: https://github.com/terraform-docs/terraform-docs - rev: "v0.18.0" + rev: "v0.19.0" hooks: - id: terraform-docs-go args: ["markdown", "table", "--output-file", "README.md", "./mymodule/path"] diff --git a/docs/user-guide/installation.md b/docs/user-guide/installation.md index 28ee130b..65cede9b 100644 --- a/docs/user-guide/installation.md +++ b/docs/user-guide/installation.md @@ -51,14 +51,14 @@ terraform-docs can be run as a container by mounting a directory with `.tf` files in it and run the following command: ```bash -docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.18.0 markdown /terraform-docs +docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.19.0 markdown /terraform-docs ``` If `output.file` is not enabled for this module, generated output can be redirected back to a file: ```bash -docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.18.0 markdown /terraform-docs > doc.md +docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.19.0 markdown /terraform-docs > doc.md ``` {{< alert type="primary" >}} @@ -73,7 +73,7 @@ Stable binaries are available on the GitHub [Release] page. To install, download the file for your platform from "Assets" and place it into your `$PATH`: ```bash -curl -sSLo ./terraform-docs.tar.gz https://terraform-docs.io/dl/v0.18.0/terraform-docs-v0.18.0-$(uname)-amd64.tar.gz +curl -sSLo ./terraform-docs.tar.gz https://terraform-docs.io/dl/v0.19.0/terraform-docs-v0.19.0-$(uname)-amd64.tar.gz tar -xzf terraform-docs.tar.gz chmod +x terraform-docs mv terraform-docs /some-dir-in-your-PATH/terraform-docs @@ -89,12 +89,12 @@ The latest version can be installed using `go install` or `go get`: ```bash # go1.17+ -go install github.com/terraform-docs/terraform-docs@v0.18.0 +go install github.com/terraform-docs/terraform-docs@v0.19.0 ``` ```bash # go1.16 -GO111MODULE="on" go get github.com/terraform-docs/terraform-docs@v0.18.0 +GO111MODULE="on" go get github.com/terraform-docs/terraform-docs@v0.19.0 ``` {{< alert type="warning" >}} diff --git a/internal/version/version.go b/internal/version/version.go index de39853e..cdf41001 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -18,7 +18,7 @@ import ( // current version const ( coreVersion = "0.19.0" - prerelease = "alpha" + prerelease = "" ) // Provisioned by ldflags From 49fde02ef2fb556c0c336adcf7333d39b788f535 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Wed, 18 Sep 2024 12:57:21 -0400 Subject: [PATCH 24/39] ci: fix release scripts Signed-off-by: Khosrow Moossavi --- .github/scripts/contributors.sh | 7 ------- .github/scripts/release.sh | 7 ------- 2 files changed, 14 deletions(-) diff --git a/.github/scripts/contributors.sh b/.github/scripts/contributors.sh index 45709f65..a3161d0d 100755 --- a/.github/scripts/contributors.sh +++ b/.github/scripts/contributors.sh @@ -11,13 +11,6 @@ set -o errexit set -o pipefail -CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) - -if [ -z "${CURRENT_BRANCH}" ] || [ "${CURRENT_BRANCH}" != "master" ]; then - echo "Error: The current branch is '${CURRENT_BRANCH}', switch to 'master' to do the release." - exit 1 -fi - if [ -n "$(git status --short)" ]; then echo "Error: There are untracked/modified changes, commit or discard them before the release." exit 1 diff --git a/.github/scripts/release.sh b/.github/scripts/release.sh index afffc7be..98a7af41 100755 --- a/.github/scripts/release.sh +++ b/.github/scripts/release.sh @@ -11,13 +11,6 @@ set -o errexit set -o pipefail -CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) - -if [ -z "${CURRENT_BRANCH}" ] || [ "${CURRENT_BRANCH}" != "master" ]; then - echo "Error: The current branch is '${CURRENT_BRANCH}', switch to 'master' to do the release." - exit 1 -fi - if [ -n "$(git status --short)" ]; then echo "Error: There are untracked/modified changes, commit or discard them before the release." exit 1 From af31cc618e8f4763da3323de4040927d849041de Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Wed, 18 Sep 2024 14:54:43 -0400 Subject: [PATCH 25/39] fix: release scripts Signed-off-by: Khosrow Moossavi --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 11b10cd3..11b22802 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -35,7 +35,7 @@ jobs: id: contributors run: | make -C .github/scripts contributors NEW_VERSION=${GITHUB_REF:11} - echo "contributors_list=$(cat .github/scripts/contributors.list)" >> "$GITHUB_ENV" + echo "contributors_list=$(cat .github/scripts/contributors.list | sed -z 's/\n/\\n/g')" >> "$GITHUB_ENV" - name: Login to Docker uses: docker/login-action@v3 From 55d89169488edb3bb16eb5960b723bca6f729f4d Mon Sep 17 00:00:00 2001 From: terraform-docs-bot Date: Thu, 19 Sep 2024 16:39:44 +0000 Subject: [PATCH 26/39] chore: bump version to v0.20.0-alpha --- internal/version/version.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/version/version.go b/internal/version/version.go index cdf41001..d0a54f15 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -17,8 +17,8 @@ import ( // current version const ( - coreVersion = "0.19.0" - prerelease = "" + coreVersion = "0.20.0" + prerelease = "alpha" ) // Provisioned by ldflags From 8c170f285d71d147558ac9cfe8aea8f5843505f6 Mon Sep 17 00:00:00 2001 From: Dave Jagoda Date: Sat, 21 Sep 2024 12:32:35 -0700 Subject: [PATCH 27/39] Update typo in pre-commit-hooks.md Signed-off-by: Dave Jagoda --- docs/how-to/pre-commit-hooks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how-to/pre-commit-hooks.md b/docs/how-to/pre-commit-hooks.md index 80f64e78..98ae8480 100644 --- a/docs/how-to/pre-commit-hooks.md +++ b/docs/how-to/pre-commit-hooks.md @@ -76,7 +76,7 @@ done ``` {{< alert type="warning" >}} -This is very basic and higly simplified version of [pre-commit-terraform](https://github.com/antonbabenko/pre-commit-terraform). +This is very basic and highly simplified version of [pre-commit-terraform](https://github.com/antonbabenko/pre-commit-terraform). Please refer to it for complete examples and guides. {{< /alert >}} From 616bff0feb6b47ff931a77e3c705fd02bfb0b3ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 06:34:26 +0000 Subject: [PATCH 28/39] chore(deps): bump library/golang from 1.23.1-alpine to 1.23.4-alpine Bumps library/golang from 1.23.1-alpine to 1.23.4-alpine. --- updated-dependencies: - dependency-name: library/golang dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3518d1fa..e26fa888 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ # You may obtain a copy of the License at the LICENSE file in # the root directory of this source tree. -FROM docker.io/library/golang:1.23.1-alpine AS builder +FROM docker.io/library/golang:1.23.4-alpine AS builder RUN apk add --update --no-cache make From 006ff31f25d6288d88cbeef04ca02139fd90a1c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 00:28:11 +0000 Subject: [PATCH 29/39] chore(deps): bump golang.org/x/crypto from 0.27.0 to 0.31.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.27.0 to 0.31.0. - [Commits](https://github.com/golang/crypto/compare/v0.27.0...v0.31.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 9a695c6e..2a9f7023 100644 --- a/go.mod +++ b/go.mod @@ -59,13 +59,13 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/zclconf/go-cty v1.15.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.27.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/mod v0.21.0 // indirect golang.org/x/net v0.29.0 // indirect - golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.25.0 // indirect - golang.org/x/text v0.18.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/grpc v1.66.2 // indirect diff --git a/go.sum b/go.sum index c08cda5b..a0d16187 100644 --- a/go.sum +++ b/go.sum @@ -150,8 +150,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e h1:7Xs2YCOpMlNqSQSmrrnhlzBXIE/bpMecZplbLePTJvE= @@ -163,8 +163,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.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-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -175,12 +175,12 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= From e4707464498082547cf1df2756000f55c215eaf1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Jan 2025 14:09:25 +0000 Subject: [PATCH 30/39] chore(deps): bump golang.org/x/net from 0.29.0 to 0.33.0 Bumps [golang.org/x/net](https://github.com/golang/net) from 0.29.0 to 0.33.0. - [Commits](https://github.com/golang/net/compare/v0.29.0...v0.33.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2a9f7023..645005a4 100644 --- a/go.mod +++ b/go.mod @@ -62,7 +62,7 @@ require ( golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect diff --git a/go.sum b/go.sum index a0d16187..67106806 100644 --- a/go.sum +++ b/go.sum @@ -160,8 +160,8 @@ golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= From bb098187e73e94541ac0e53dd9e28b96a476f053 Mon Sep 17 00:00:00 2001 From: James Geddes Date: Tue, 4 Feb 2025 17:32:36 +0000 Subject: [PATCH 31/39] add support for .tofu files Signed-off-by: James Geddes --- docs/user-guide/configuration/footer-from.md | 6 +++--- docs/user-guide/configuration/header-from.md | 6 +++--- terraform/load.go | 7 ++++--- terraform/load_test.go | 14 +++++++++++--- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/docs/user-guide/configuration/footer-from.md b/docs/user-guide/configuration/footer-from.md index 6a425fa8..960141b7 100644 --- a/docs/user-guide/configuration/footer-from.md +++ b/docs/user-guide/configuration/footer-from.md @@ -11,14 +11,14 @@ toc: true Since `v0.12.0` Relative path to a file to extract footer for the generated output from. Supported -file formats are `.adoc`, `.md`, `.tf`, and `.txt`. +file formats are `.adoc`, `.md`, `.tf`, `.tofu`, and `.txt`. {{< alert type="info" >}} The whole file content is being extracted as module footer when extracting from `.adoc`, `.md`, or `.txt`. {{< /alert >}} -To extract footer from `.tf` file you need to use following javascript, c, or java +To extract footer from `.tf` or `.tofu` file you need to use following javascript, c, or java like multi-line comment. ```tf @@ -37,7 +37,7 @@ resource "foo" "bar" { ... } ``` {{< alert type="info" >}} -This comment must start at the immediate first line of the `.tf` file +This comment must start at the immediate first line of the `.tf` or `.tofu` file before any `resource`, `variable`, `module`, etc. {{< /alert >}} diff --git a/docs/user-guide/configuration/header-from.md b/docs/user-guide/configuration/header-from.md index b5f016ef..2ab4a0b6 100644 --- a/docs/user-guide/configuration/header-from.md +++ b/docs/user-guide/configuration/header-from.md @@ -11,14 +11,14 @@ toc: true Since `v0.10.0` Relative path to a file to extract header for the generated output from. Supported -file formats are `.adoc`, `.md`, `.tf`, and `.txt`. +file formats are `.adoc`, `.md`, `.tf`, `.tofu`, and `.txt`. {{< alert type="info" >}} The whole file content is being extracted as module header when extracting from `.adoc`, `.md`, or `.txt`. {{< /alert >}} -To extract header from `.tf` file you need to use following javascript, c, or java +To extract header from `.tf` or `.tofu` file you need to use following javascript, c, or java like multi-line comment. ```tf @@ -37,7 +37,7 @@ resource "foo" "bar" { ... } ``` {{< alert type="info" >}} -This comment must start at the immediate first line of the `.tf` file +This comment must start at the immediate first line of the `.tf` or `.tofu` file before any `resource`, `variable`, `module`, etc. {{< /alert >}} diff --git a/terraform/load.go b/terraform/load.go index fea188ba..55dfc72e 100644 --- a/terraform/load.go +++ b/terraform/load.go @@ -108,10 +108,10 @@ func isFileFormatSupported(filename string, section string) (bool, error) { return false, fmt.Errorf("--%s-from value is missing", section) } switch getFileFormat(filename) { - case ".adoc", ".md", ".tf", ".txt": + case ".adoc", ".md", ".tf", ".tofu", ".txt": return true, nil } - return false, fmt.Errorf("only .adoc, .md, .tf, and .txt formats are supported to read %s from", section) + return false, fmt.Errorf("only .adoc, .md, .tf, .tofu and .txt formats are supported to read %s from", section) } func loadHeader(config *print.Config) (string, error) { @@ -146,7 +146,8 @@ func loadSection(config *print.Config, file string, section string) (string, err } return "", err // user explicitly asked for a file which doesn't exist } - if getFileFormat(file) != ".tf" { + format := getFileFormat(file) + if format != ".tf" && format != ".tofu" { content, err := os.ReadFile(filepath.Clean(filename)) if err != nil { return "", err diff --git a/terraform/load_test.go b/terraform/load_test.go index 89a87eb1..563770f2 100644 --- a/terraform/load_test.go +++ b/terraform/load_test.go @@ -161,6 +161,14 @@ func TestIsFileFormatSupported(t *testing.T) { errText: "", section: "header", }, + { + name: "is file format supported", + filename: "main.tofu", + expected: true, + wantErr: false, + errText: "", + section: "header", + }, { name: "is file format supported", filename: "main.txt", @@ -174,7 +182,7 @@ func TestIsFileFormatSupported(t *testing.T) { filename: "main.doc", expected: false, wantErr: true, - errText: "only .adoc, .md, .tf, and .txt formats are supported to read header from", + errText: "only .adoc, .md, .tf, .tofu and .txt formats are supported to read header from", section: "header", }, { @@ -189,7 +197,7 @@ func TestIsFileFormatSupported(t *testing.T) { filename: "main.doc", expected: false, wantErr: true, - errText: "only .adoc, .md, .tf, and .txt formats are supported to read footer from", + errText: "only .adoc, .md, .tf, .tofu and .txt formats are supported to read footer from", section: "footer", }, { @@ -405,7 +413,7 @@ func TestLoadSections(t *testing.T) { file: "wrong-formate.docx", expected: "", wantErr: true, - errText: "only .adoc, .md, .tf, and .txt formats are supported to read footer from", + errText: "only .adoc, .md, .tf, .tofu and .txt formats are supported to read footer from", section: "footer", }, { From 73ee2961b456dac63debd47410d3694d0d348673 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 06:17:08 +0000 Subject: [PATCH 32/39] chore(deps): bump library/alpine from 3.20.3 to 3.21.3 Bumps library/alpine from 3.20.3 to 3.21.3. --- updated-dependencies: - dependency-name: library/alpine dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e26fa888..be2914e6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ RUN make build ################ -FROM docker.io/library/alpine:3.20.3 +FROM docker.io/library/alpine:3.21.3 # Mitigate CVE-2023-5363 RUN apk add --no-cache --upgrade "openssl>=3.1.4-r1" From 06ca95c6b7c3c498364c9b168522904b761fb758 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 06:27:24 +0000 Subject: [PATCH 33/39] chore(deps): bump library/alpine in /scripts/release Bumps library/alpine from 3.20.3 to 3.21.3. --- updated-dependencies: - dependency-name: library/alpine dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- scripts/release/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release/Dockerfile b/scripts/release/Dockerfile index 5b1ce88e..be1cbc5c 100644 --- a/scripts/release/Dockerfile +++ b/scripts/release/Dockerfile @@ -6,7 +6,7 @@ # You may obtain a copy of the License at the LICENSE file in # the root directory of this source tree. -FROM docker.io/library/alpine:3.20.3 +FROM docker.io/library/alpine:3.21.3 COPY terraform-docs /usr/local/bin/terraform-docs From a22bdbe193811e662d0c2ca5fa382f55b2ea2cad Mon Sep 17 00:00:00 2001 From: Nathan Lim <38639895+Naton-1@users.noreply.github.com> Date: Wed, 2 Apr 2025 13:54:17 -0400 Subject: [PATCH 34/39] Fix typo in insert-output-to-file.md Signed-off-by: Nathan Lim <38639895+Naton-1@users.noreply.github.com> --- docs/how-to/insert-output-to-file.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/how-to/insert-output-to-file.md b/docs/how-to/insert-output-to-file.md index 90da9d4c..1c4e2bdc 100644 --- a/docs/how-to/insert-output-to-file.md +++ b/docs/how-to/insert-output-to-file.md @@ -10,8 +10,8 @@ toc: false Since `v0.12.0` -Generated output can be insterted directly into the file. There are two modes of -insersion: `inject` (default) or `replace`. Take a look at [output] configuration +Generated output can be inserted directly into the file. There are two modes of +insertion: `inject` (default) or `replace`. Take a look at [output] configuration for all the details. ```bash From adb8099f144447b961270e0b4245de597b4dd6b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Mar 2025 01:35:34 +0000 Subject: [PATCH 35/39] chore(deps): bump golang.org/x/net from 0.33.0 to 0.36.0 Bumps [golang.org/x/net](https://github.com/golang/net) from 0.33.0 to 0.36.0. - [Commits](https://github.com/golang/net/compare/v0.33.0...v0.36.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 11 +++++------ go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 645005a4..3a912b26 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,6 @@ module github.com/terraform-docs/terraform-docs go 1.23 - require ( github.com/BurntSushi/toml v1.4.0 github.com/Masterminds/sprig/v3 v3.3.0 @@ -59,13 +58,13 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/zclconf/go-cty v1.15.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.31.0 // indirect + golang.org/x/crypto v0.35.0 // indirect golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/net v0.36.0 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect golang.org/x/tools v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/grpc v1.66.2 // indirect diff --git a/go.sum b/go.sum index 67106806..d92f8776 100644 --- a/go.sum +++ b/go.sum @@ -150,8 +150,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e h1:7Xs2YCOpMlNqSQSmrrnhlzBXIE/bpMecZplbLePTJvE= @@ -160,11 +160,11 @@ golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.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-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -175,12 +175,12 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= From 983e98a7b561e0f7065cc7012749bf6534dfded0 Mon Sep 17 00:00:00 2001 From: Pascal Hofmann Date: Fri, 4 Apr 2025 20:30:14 +0200 Subject: [PATCH 36/39] chore: bump golang to 1.24.2 Signed-off-by: Pascal Hofmann --- .github/workflows/ci.yaml | 2 +- .github/workflows/codeql.yaml | 2 +- .github/workflows/prerelease.yaml | 2 +- .github/workflows/release.yaml | 2 +- Dockerfile | 2 +- go.mod | 5 ++++- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4eddc378..dac45254 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -7,7 +7,7 @@ on: pull_request: env: - GO_VERSION: "1.23.1" + GO_VERSION: "1.24.2" REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} jobs: diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 3d581309..3b73ffac 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -6,7 +6,7 @@ on: - master env: - GO_VERSION: "1.23.1" + GO_VERSION: "1.24.2" jobs: analyze: diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index 4eae35a1..b9b0c8de 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -6,7 +6,7 @@ on: - "v*.*.*-*" env: - GO_VERSION: "1.23.1" + GO_VERSION: "1.24.2" REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} jobs: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 11b22802..68a33e52 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -7,7 +7,7 @@ on: - "!v*.*.*-*" env: - GO_VERSION: "1.23.1" + GO_VERSION: "1.24.2" REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} jobs: diff --git a/Dockerfile b/Dockerfile index be2914e6..c672e88d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ # You may obtain a copy of the License at the LICENSE file in # the root directory of this source tree. -FROM docker.io/library/golang:1.23.4-alpine AS builder +FROM docker.io/library/golang:1.24.2-alpine AS builder RUN apk add --update --no-cache make diff --git a/go.mod b/go.mod index 3a912b26..107c5c83 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,9 @@ module github.com/terraform-docs/terraform-docs -go 1.23 +go 1.23.0 + +toolchain go1.24.2 + require ( github.com/BurntSushi/toml v1.4.0 github.com/Masterminds/sprig/v3 v3.3.0 From 93c18398836d7d75417c92ae4bf655b2bdb51961 Mon Sep 17 00:00:00 2001 From: Pascal Hofmann Date: Fri, 4 Apr 2025 20:38:10 +0200 Subject: [PATCH 37/39] chore: update staticcheck to 2025.1.1 Signed-off-by: Pascal Hofmann --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fc560f22..2bf7a971 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ lint: ## Run linter .PHONY: staticcheck staticcheck: ## Run staticcheck @ $(MAKE) --no-print-directory log-$@ - $(GO) run honnef.co/go/tools/cmd/staticcheck@2024.1.1 -- ./... + $(GO) run honnef.co/go/tools/cmd/staticcheck@2025.1.1 -- ./... .PHONY: test test: ## Run tests From cf462c5da36feb66051cf0a6f1124594ed9adc7c Mon Sep 17 00:00:00 2001 From: terraform-docs-bot Date: Fri, 4 Apr 2025 21:13:10 +0000 Subject: [PATCH 38/39] Release version v0.20.0 --- README.md | 12 ++++++------ docs/user-guide/installation.md | 10 +++++----- internal/version/version.go | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 198ec589..a2ab6673 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Stable binaries are also available on the [releases] page. To install, download binary for your platform from "Assets" and place this into your `$PATH`: ```bash -curl -Lo ./terraform-docs.tar.gz https://github.com/terraform-docs/terraform-docs/releases/download/v0.19.0/terraform-docs-v0.19.0-$(uname)-amd64.tar.gz +curl -Lo ./terraform-docs.tar.gz https://github.com/terraform-docs/terraform-docs/releases/download/v0.20.0/terraform-docs-v0.20.0-$(uname)-amd64.tar.gz tar -xzf terraform-docs.tar.gz chmod +x terraform-docs mv terraform-docs /usr/local/bin/terraform-docs @@ -51,12 +51,12 @@ The latest version can be installed using `go install` or `go get`: ```bash # go1.17+ -go install github.com/terraform-docs/terraform-docs@v0.19.0 +go install github.com/terraform-docs/terraform-docs@v0.20.0 ``` ```bash # go1.16 -GO111MODULE="on" go get github.com/terraform-docs/terraform-docs@v0.19.0 +GO111MODULE="on" go get github.com/terraform-docs/terraform-docs@v0.20.0 ``` **NOTE:** please use the latest Go to do this, minimum `go1.16` is required. @@ -88,14 +88,14 @@ terraform-docs can be run as a container by mounting a directory with `.tf` files in it and run the following command: ```bash -docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.19.0 markdown /terraform-docs +docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.20.0 markdown /terraform-docs ``` If `output.file` is not enabled for this module, generated output can be redirected back to a file: ```bash -docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.19.0 markdown /terraform-docs > doc.md +docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.20.0 markdown /terraform-docs > doc.md ``` **NOTE:** Docker tag `latest` refers to _latest_ stable released version and `edge` @@ -142,7 +142,7 @@ in the root of your Git repo with at least the following content: ```yaml repos: - repo: https://github.com/terraform-docs/terraform-docs - rev: "v0.19.0" + rev: "v0.20.0" hooks: - id: terraform-docs-go args: ["markdown", "table", "--output-file", "README.md", "./mymodule/path"] diff --git a/docs/user-guide/installation.md b/docs/user-guide/installation.md index 65cede9b..4f6586f1 100644 --- a/docs/user-guide/installation.md +++ b/docs/user-guide/installation.md @@ -51,14 +51,14 @@ terraform-docs can be run as a container by mounting a directory with `.tf` files in it and run the following command: ```bash -docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.19.0 markdown /terraform-docs +docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.20.0 markdown /terraform-docs ``` If `output.file` is not enabled for this module, generated output can be redirected back to a file: ```bash -docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.19.0 markdown /terraform-docs > doc.md +docker run --rm --volume "$(pwd):/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.20.0 markdown /terraform-docs > doc.md ``` {{< alert type="primary" >}} @@ -73,7 +73,7 @@ Stable binaries are available on the GitHub [Release] page. To install, download the file for your platform from "Assets" and place it into your `$PATH`: ```bash -curl -sSLo ./terraform-docs.tar.gz https://terraform-docs.io/dl/v0.19.0/terraform-docs-v0.19.0-$(uname)-amd64.tar.gz +curl -sSLo ./terraform-docs.tar.gz https://terraform-docs.io/dl/v0.20.0/terraform-docs-v0.20.0-$(uname)-amd64.tar.gz tar -xzf terraform-docs.tar.gz chmod +x terraform-docs mv terraform-docs /some-dir-in-your-PATH/terraform-docs @@ -89,12 +89,12 @@ The latest version can be installed using `go install` or `go get`: ```bash # go1.17+ -go install github.com/terraform-docs/terraform-docs@v0.19.0 +go install github.com/terraform-docs/terraform-docs@v0.20.0 ``` ```bash # go1.16 -GO111MODULE="on" go get github.com/terraform-docs/terraform-docs@v0.19.0 +GO111MODULE="on" go get github.com/terraform-docs/terraform-docs@v0.20.0 ``` {{< alert type="warning" >}} diff --git a/internal/version/version.go b/internal/version/version.go index d0a54f15..79577266 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -18,7 +18,7 @@ import ( // current version const ( coreVersion = "0.20.0" - prerelease = "alpha" + prerelease = "" ) // Provisioned by ldflags From 553f6ad72c138e70126fafffd4f301f89e92cece Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Apr 2025 23:21:31 +0000 Subject: [PATCH 39/39] chore(deps): bump golang.org/x/net from 0.36.0 to 0.38.0 Bumps [golang.org/x/net](https://github.com/golang/net) from 0.36.0 to 0.38.0. - [Commits](https://github.com/golang/net/compare/v0.36.0...v0.38.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-version: 0.38.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 107c5c83..cf64cb32 100644 --- a/go.mod +++ b/go.mod @@ -61,13 +61,13 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/zclconf/go-cty v1.15.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.35.0 // indirect + golang.org/x/crypto v0.36.0 // indirect golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.36.0 // indirect - golang.org/x/sync v0.11.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/net v0.38.0 // indirect + golang.org/x/sync v0.12.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect golang.org/x/tools v0.25.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/grpc v1.66.2 // indirect diff --git a/go.sum b/go.sum index d92f8776..ae51c219 100644 --- a/go.sum +++ b/go.sum @@ -150,8 +150,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e h1:7Xs2YCOpMlNqSQSmrrnhlzBXIE/bpMecZplbLePTJvE= @@ -160,11 +160,11 @@ golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= 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-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -175,12 +175,12 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg=