From a9601ffcbad2e9bcbcebe9bdccf924a6c16bd7c2 Mon Sep 17 00:00:00 2001 From: MarvinJWendt Date: Fri, 19 Jul 2024 23:48:33 +0200 Subject: [PATCH] chore: updated template files --- .github/release.yml | 16 +-- .github/workflows/atomicgo.yml | 180 +++++++++++++++++++++++++--- .github/workflows/go.yml | 30 ++--- .github/workflows/lint.yml | 15 ++- .github/workflows/tweet-release.yml | 15 ++- .gitignore | 26 ++-- .golangci.yml | 17 +-- Makefile | 15 ++- codecov.yml | 10 ++ 9 files changed, 253 insertions(+), 71 deletions(-) diff --git a/.github/release.yml b/.github/release.yml index e875b71..6ad1455 100644 --- a/.github/release.yml +++ b/.github/release.yml @@ -1,9 +1,12 @@ -################################################################## -# IMPORTANT NOTE # -# # -# This file is synced with https://github.com/atomicgo/template # -# Please make changes there. # -################################################################## +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ changelog: exclude: @@ -24,4 +27,3 @@ changelog: - title: Other Changes labels: - "*" - diff --git a/.github/workflows/atomicgo.yml b/.github/workflows/atomicgo.yml index 9032e1b..f8b545f 100644 --- a/.github/workflows/atomicgo.yml +++ b/.github/workflows/atomicgo.yml @@ -1,24 +1,174 @@ -################################################################## -# IMPORTANT NOTE # -# # -# This file is synced with https://github.com/atomicgo/template # -# Please make changes there. # -################################################################## +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ name: AtomicGo on: push: - branches: [main] - workflow_dispatch: + branches: + - main + +permissions: + contents: write + packages: write jobs: - docs: - if: "!contains(github.event.head_commit.message, 'autoupdate')" + test: + name: Test Go Code + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + steps: + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: stable + + - name: Check out code into the Go module directory + uses: actions/checkout@v3 + + - name: Get dependencies + run: go get -v -t -d ./... + + - name: Build + run: go build -v . + + - name: Test + run: go test -coverprofile="coverage.txt" -covermode=atomic -v -p 1 . + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + + build: + name: Build AtomicGo Package runs-on: ubuntu-latest + needs: test + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: - - name: Update Docs - uses: atomicgo/ci@main - env: - ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} - TERM: xterm-256color + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Download assets + run: | + mkdir -p .templates + wget https://raw.githubusercontent.com/atomicgo/atomicgo/main/templates/example.gotxt -O .templates/example.gotxt + wget https://raw.githubusercontent.com/atomicgo/atomicgo/main/templates/readme.md -O .templates/readme.md + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: stable + + - name: Install Go tools + run: | + go install github.com/robertkrimen/godocdown/godocdown@latest + go install github.com/princjef/gomarkdoc/cmd/gomarkdoc@latest + go install github.com/caarlos0/svu@latest + + - name: Set up Git configuration + run: | + REPO_FULLNAME="${{ github.repository }}" + echo "::group::Setup git" + git config --global --add safe.directory /github/workspace + + echo "::notice::Login into git" + git config --global user.email "git@marvinjwendt.com" + git config --global user.name "MarvinJWendt" + + echo "::notice::Ignore workflow files (we may not touch them)" + git update-index --assume-unchanged .github/workflows/* + + - name: Generate README.md + run: | + echo "::group::Generate README.md" + FILE=./.github/atomicgo/custom_readme + INCLUDE_UNEXPORTED=./.github/atomicgo/include_unexported + if test -f "$FILE"; then + echo "::notice::.github/custom_readme is present. Not generating a new readme." + else + echo "::notice::Running Godocdown" + $(go env GOPATH)/bin/godocdown -template ./.templates/readme.md >README.md + echo "::notice::Running gomarkdoc" + GOMARKDOC_FLAGS="--template-file example=./.templates/example.gotxt" + if test -f "$INCLUDE_UNEXPORTED"; then + GOMARKDOC_FLAGS+=" -u" + fi + + $(go env GOPATH)/bin/gomarkdoc $GOMARKDOC_FLAGS --repository.url "https://github.com/${{ github.repository }}" --repository.default-branch main --repository.path / -e -o README.md . + fi + echo "::endgroup::" + + - name: Run custom CI system (bash equivalent of main.go) + run: | + echo "::group::Run custom CI system" + echo "::notice::Counting unit tests" + unittest_count=$(go test -v -p 1 ./... | tee /dev/tty | grep -c "RUN") + + echo "::notice::Replacing badge in README.md" + sed -i 's|> $GITHUB_ENV + echo "::notice::Current version is $(svu current)" + + - name: Calculate next version + id: next_version + run: | + echo "next_version=$(svu next)" >> $GITHUB_ENV + echo "::notice::Next version is $(svu next)" + + - name: Check if release is needed + id: check_release + run: | + echo "release_needed=$( [ '${{ env.current_version }}' != '${{ env.next_version }}' ] && echo true || echo false )" >> $GITHUB_ENV + + - name: Create tag + if: env.release_needed == 'true' + run: | + git tag -a ${{ env.next_version }} -m "Release v${{ env.next_version }}" + git push origin ${{ env.next_version }} + sleep 5 # sleep for 5 seconds to allow GitHub to process the tag + + - name: Release + if: env.release_needed == 'true' + uses: softprops/action-gh-release@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + generate_release_notes: true + tag_name: ${{ env.next_version }} diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index cd98365..64da3c1 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -1,33 +1,33 @@ -################################################################## -# IMPORTANT NOTE # -# # -# This file is synced with https://github.com/atomicgo/template # -# Please make changes there. # -################################################################## +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ name: Go on: - push: - branches: [main] pull_request: jobs: - build: - name: Build + test: + name: Test Go code runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - - name: Set up Go 1.x - uses: actions/setup-go@v2 + - name: Set up Go + uses: actions/setup-go@v4 with: - go-version: ^1 - id: go + go-version: stable - name: Check out code into the Go module directory - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Get dependencies run: go get -v -t -d ./... diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index debf1ac..5701467 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,9 +1,12 @@ -################################################################## -# IMPORTANT NOTE # -# # -# This file is synced with https://github.com/atomicgo/template # -# Please make changes there. # -################################################################## +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ name: Code Analysis diff --git a/.github/workflows/tweet-release.yml b/.github/workflows/tweet-release.yml index 9d0ae84..c85517a 100644 --- a/.github/workflows/tweet-release.yml +++ b/.github/workflows/tweet-release.yml @@ -1,9 +1,12 @@ -################################################################## -# IMPORTANT NOTE # -# # -# This file is synced with https://github.com/atomicgo/template # -# Please make changes there. # -################################################################## +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ name: Tweet release diff --git a/.gitignore b/.gitignore index 7e5f3f4..a923ef3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,27 @@ -# Go template - -## Binaries for programs and plugins +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ + +# Binaries *.exe *.exe~ -*.dll *.so -*.dylib + +# Go specifics ## Test binary, built with `go test -c` *.test -## Output of the go coverage tool, specifically when used with LiteIDE +## Output of the go coverage tool *.out -## Dependency directories (remove the comment below to include it) +## Vendored dependencies vendor/ # IDEs @@ -31,10 +39,12 @@ gen # Operating System Files ## macOS -### General .DS_Store # Other ## Experimenting folder experimenting + +## CI assets +.templates diff --git a/.golangci.yml b/.golangci.yml index 8554711..54cda6a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,13 +1,14 @@ -################################################################## -# IMPORTANT NOTE # -# # -# This file is synced with https://github.com/atomicgo/template # -# Please make changes there. # -################################################################## +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ run: - # Timeout for analysis, e.g. 30s, 5m. - # Default: 1m timeout: 3m linters: diff --git a/Makefile b/Makefile index 3a9e84e..9a3ab77 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,12 @@ -################################################################## -# IMPORTANT NOTE # -# # -# This file is synced with https://github.com/atomicgo/template # -# Please make changes there. # -################################################################## +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ test: @echo "# Running tests..." diff --git a/codecov.yml b/codecov.yml index bfdc987..631eace 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,3 +1,13 @@ +# ┌───────────────────────────────────────────────────────────────────┐ +# │ │ +# │ IMPORTANT NOTE │ +# │ │ +# │ This file is synced with https://github.com/atomicgo/template │ +# │ │ +# │ Please apply all changes to the template repository │ +# │ │ +# └───────────────────────────────────────────────────────────────────┘ + coverage: status: project: