| name: 'Has Engine Changes' | |
| description: 'Checks if there are any engine changes in the current branch' | |
| outputs: | |
| changed: | |
| description: "Returns 'true' if there are engine changes, 'false' otherwise" | |
| value: ${{ steps.check.outputs.changed }} | |
| runs: | |
| using: "composite" | |
| steps: | |
| - name: Fetch upstream master (if not flutter/flutter) | |
| if: github.repository != 'flutter/flutter' && !env.ACT | |
| shell: bash | |
| run: | | |
| if ! git remote get-url upstream >/dev/null 2>&1; then | |
| git remote add upstream https://github.com/flutter/flutter.git | |
| fi | |
| git fetch --no-tags upstream master:refs/remotes/upstream/master | |
| - name: Check Engine Changes | |
| id: check | |
| shell: bash | |
| env: | |
| EVENT_NAME: ${{ github.event_name }} | |
| GITHUB_REPOSITORY: ${{ github.repository }} | |
| PR_BASE_SHA: ${{ github.event.pull_request.base.sha }} | |
| MERGE_GROUP_BASE_SHA: ${{ github.event.merge_group.base_sha }} | |
| PUSH_BEFORE_SHA: ${{ github.event.before }} | |
| run: | | |
| EMPTY_SHA="0000000000000000000000000000000000000000" | |
| if [ "$EVENT_NAME" = "pull_request" ]; then | |
| if [ "$GITHUB_REPOSITORY" != "flutter/flutter" ] && \ | |
| git show-ref --verify --quiet refs/remotes/upstream/master && \ | |
| git merge-base --is-ancestor "$PR_BASE_SHA" refs/remotes/upstream/master 2>/dev/null; then | |
| BASE_REF="refs/remotes/upstream/master" | |
| else | |
| BASE_REF="$PR_BASE_SHA" | |
| fi | |
| elif [ "$EVENT_NAME" = "merge_group" ]; then | |
| BASE_REF="$MERGE_GROUP_BASE_SHA" | |
| elif [ "$EVENT_NAME" = "push" ] && [ -n "$PUSH_BEFORE_SHA" ] && [ "$PUSH_BEFORE_SHA" != "$EMPTY_SHA" ]; then | |
| BASE_REF="$PUSH_BEFORE_SHA" | |
| else | |
| if git show-ref --verify --quiet refs/remotes/upstream/master; then | |
| BASE_REF="upstream/master" | |
| else | |
| BASE_REF="origin/master" | |
| fi | |
| fi | |
| echo "Comparing against base SHA: $BASE_REF" | |
| CHANGED_FILES=$(.github/scripts/git_files_changed.sh "$BASE_REF") | |
| echo "Changed files in this branch:" | |
| echo "$CHANGED_FILES" | |
| if [ "$(printf '%s\n' "$CHANGED_FILES" | .github/scripts/did_engine_change.sh)" = "true" ]; then | |
| echo "Engine files changed." | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "No engine files changed." | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| fi |