From b6767534cf75608c65edc2c8b4f2635e89e42df1 Mon Sep 17 00:00:00 2001 From: Max Mynter <32773644+maxmynter@users.noreply.github.com> Date: Fri, 16 May 2025 08:05:04 +0200 Subject: [PATCH] [CI] Add check for changes in autogenerated files (#415) --- .gitattributes | 4 ++++ .github/workflows/ci.yaml | 25 +++++++++++++++++++++++++ scripts/autogenerate_files.sh | 23 +++++++++++++++++++++++ scripts/release.sh | 8 +------- 4 files changed, 53 insertions(+), 7 deletions(-) create mode 100755 scripts/autogenerate_files.sh diff --git a/.gitattributes b/.gitattributes index 6313b56..ebe1a3b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,5 @@ * text=auto eol=lf + +docs/reference/cli.md linguist-generated=true +docs/reference/configuration.md linguist-generated=true +docs/reference/rules.md linguist-generated=true diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b3ccb15..b67ec7e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -71,3 +71,28 @@ jobs: exit_code="${PIPESTATUS[0]}" echo '```' >> "$GITHUB_STEP_SUMMARY" exit "$exit_code" + + generated-check: + name: "Check generated files unedited" + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + submodules: recursive + + - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2 + + - name: "Run auto generation scripts" + run: | + ./scripts/autogenerate_files.sh + + - name: "Check for uncommitted changes" + run: | + if [[ -n "$(git status --porcelain)" ]]; then + echo "Error: Auto-generated files were manually edited." + echo "Files with changes:" + git status --porcelain + exit 1 + fi diff --git a/scripts/autogenerate_files.sh b/scripts/autogenerate_files.sh new file mode 100755 index 0000000..9ef2363 --- /dev/null +++ b/scripts/autogenerate_files.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env sh +# +# Generate files and copy documentation from Ruff. +# +# Usage +# +# ./scripts/autogenerate-files.sh +# +set -eu + +script_root="$(realpath "$(dirname "$0")")" +project_root="$(dirname "$script_root")" +cd "$project_root" + +echo "Updating lockfile..." +uv lock + +echo "Copying reference documentation from Ruff..." +cp ruff/crates/ty/docs/cli.md ./docs/reference/ +cp ruff/crates/ty/docs/configuration.md ./docs/reference/ +cp ./ruff/crates/ty/docs/rules.md ./docs/reference/ + +echo "Documentation has been copied from Ruff submodule" diff --git a/scripts/release.sh b/scripts/release.sh index e8949ad..cb4ed37 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -46,11 +46,5 @@ cd "$project_root" uv run --only-group release \ rooster release "$@" -echo "Updating lockfile..." -uv lock - -echo "Copying reference documentation from Ruff..." -cp ruff/crates/ty/docs/cli.md ./docs/reference/ -cp ruff/crates/ty/docs/configuration.md ./docs/reference/ -cp ./ruff/crates/ty/docs/rules.md ./docs/reference/ +"${script_root}/autogenerate_files.sh" git add ./docs/reference