From c624ef69479bab50f33f1e7e35291ddd4d88c6dc Mon Sep 17 00:00:00 2001 From: Yusuke Kanazawa Date: Wed, 10 Jul 2024 13:36:53 +0000 Subject: [PATCH] Add reviewdog --- .github/workflows/reviewdog.yml | 79 +++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 .github/workflows/reviewdog.yml diff --git a/.github/workflows/reviewdog.yml b/.github/workflows/reviewdog.yml new file mode 100644 index 000000000000..cfd3d9da4c31 --- /dev/null +++ b/.github/workflows/reviewdog.yml @@ -0,0 +1,79 @@ +name: Auto review with reviewdog + +on: + - pull_request + +permissions: + contents: read + pull-requests: write + +jobs: + textlint: + runs-on: ubuntu-latest + env: + GH_TOKEN: ${{ github.token }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Detect package manager + id: detect-package-manager + run: | + if [ -f "${{ github.workspace }}/yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "command=install" >> $GITHUB_OUTPUT + echo "runner=yarn" >> $GITHUB_OUTPUT + exit 0 + elif [ -f "${{ github.workspace }}/package.json" ]; then + echo "manager=npm" >> $GITHUB_OUTPUT + echo "command=ci" >> $GITHUB_OUTPUT + echo "runner=npx --no-install" >> $GITHUB_OUTPUT + exit 0 + else + echo "Unable to determine package manager" + exit 1 + fi + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: ${{ steps.detect-package-manager.outputs.manager }} + + - name: Install dependencies + run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} + + - name: Install reviewdog + uses: reviewdog/action-setup@v1 + with: + reviewdog_version: latest + + - name: Fetch base branch + run: git fetch origin ${{github.base_ref}} --depth=1 + + - name: Run textlint + run: | + git diff -z --diff-filter=ACMR --name-only origin/${{github.base_ref}} HEAD \ + | xargs -0 ${{ steps.detect-package-manager.outputs.runner }} textlint -f checkstyle \ + | reviewdog -f=checkstyle \ + -name=textlint \ + -reporter=github-pr-review \ + -filter-mode=added \ + -fail-on-error=false \ + -level=warning + + - name: Make code suggestions + run: | + git diff -z --diff-filter=ACMR --name-only origin/${{github.base_ref}} HEAD \ + | xargs -0 ${{ steps.detect-package-manager.outputs.runner }} textlint --fix + TMPFILE=$(mktemp) + git diff > "$(TMPFILE)" + git stash -u && git stash drop + + reviewdog \ + -f=diff \ + -f.diff.strip=1 \ + -name=textlint-fix \ + -reporter=github-pr-review \ + -filter-mode=diff_context \ + -level=warning < "$(TMPFILE)"