diff --git a/.github/workflows/check-dist.yml b/.github/workflows/check-dist.yml index 0a6e852..5d1f26f 100644 --- a/.github/workflows/check-dist.yml +++ b/.github/workflows/check-dist.yml @@ -15,6 +15,11 @@ on: paths-ignore: - '**.md' +env: + # A pipe-separated array of files to ignore when comparing the expected and actual dist/ directories, + # which are used as a regular expression filter in the `grep` command. + FILES_TO_IGNORE: 'index.js.map|sourcemap-register.js' + jobs: check-dist: runs-on: ubuntu-latest @@ -38,10 +43,18 @@ jobs: - name: Compare the expected and actual dist/ directories run: | - if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then - echo "Detected uncommitted changes after build. See status below:" - git diff + # Get a list of files that are different between the checked-in dist/ directory and the generated dist/ directory, + # then trim the list to remove any leading or trailing whitespace. + CHANGED_FILES=$(git diff --ignore-space-at-eol --name-only dist/ | grep -vE "$FILES_TO_IGNORE" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + if [ -n "$CHANGED_FILES" ]; then + echo "❗️ Detected uncommitted changes after build (see diff output below)." >&2 + echo "This indicates that the dist/ directory is out of sync with the checked-in index.js." >&2 + echo "⭐️ If the changes below are expected, run 'npm run build:compile && npm run build:package' and commit the output files." >&2 + # Run `git diff` for each line/file in $CHANGED_FILES: + echo "$CHANGED_FILES" | xargs -I {} git diff --ignore-space-at-eol --text -- {} exit 1 + else + echo "✅ No uncommitted changes detected after build." fi id: diff