Skip to content

Git action test [AllBridgeFacet v3.0.1] [@coderabbit ignore] #38

Git action test [AllBridgeFacet v3.0.1] [@coderabbit ignore]

Git action test [AllBridgeFacet v3.0.1] [@coderabbit ignore] #38

Workflow file for this run

name: Version Check
on:
pull_request:
types: [opened, edited, synchronize]
jobs:
check-version:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for all branches
- name: Fetch base branch
run: git fetch origin +refs/heads/${{ github.event.pull_request.base.ref }}:refs/remotes/origin/${{ github.event.pull_request.base.ref }}
- name: Get list of modified files
id: modified_files
run: |
BASE_REF="${{ github.event.pull_request.base.ref }}"
SHA="${{ github.sha }}"
echo "BASE_REF: $BASE_REF"
echo "SHA: $SHA"
FILES=$(git diff --name-only origin/${BASE_REF} HEAD)
echo "FILES=$FILES" # For debugging
echo "$FILES" > modified_files.txt # Write filenames to a temporary file
- name: Check version tags and update PR title
id: check_versions
run: |
BASE_REF="${{ github.event.pull_request.base.ref }}"
FILES=$(cat modified_files.txt) # Read filenames from the temporary file
echo "FILES=$FILES"
# Initialize variables
MISSING_VERSION_TAG=()
MISSING_VERSION_UPDATE=()
UPDATED_CONTRACTS=()
# Process each file separately
while IFS= read -r FILE; do
if [[ "$FILE" == *.sol ]]; then
VERSION_TAG=$(grep -E '^/// @custom:version' "$FILE" || true)
# Check if version tag exists
if [[ -z "$VERSION_TAG" ]]; then
MISSING_VERSION_TAG+=("$FILE")
else
# Check if version tag was updated in this PR
if git diff -U0 origin/${BASE_REF} HEAD "$FILE" | grep -qE '^@@.*\+/// @custom:version'; then
# version was updated
CONTRACT_NAME=$(basename "$FILE" .sol)
NEW_VERSION=$(echo "$VERSION_TAG" | awk '{print $NF}')
UPDATED_CONTRACTS+=("$CONTRACT_NAME $NEW_VERSION")
else
# version was not updated
MISSING_VERSION_UPDATE+=("$FILE")
fi
fi
fi
done <<< "$FILES"
# Output the results
if [[ ${#MISSING_VERSION_TAG[@]} -ne 0 ]]; then
echo "Files missing version tags: ${MISSING_VERSION_TAG[*]}"
fi
if [[ ${#MISSING_VERSION_UPDATE[@]} -ne 0 ]]; then
echo "Files with version tags not updated: ${MISSING_VERSION_UPDATE[*]}"
fi
if [[ ${#UPDATED_CONTRACTS[@]} -ne 0 ]]; then
echo "Updated contracts and versions: ${UPDATED_CONTRACTS[*]}"
UPDATED_CONTRACTS_STR=$(IFS=,; echo "${UPDATED_CONTRACTS[*]}")
echo "UPDATED_CONTRACTS=$UPDATED_CONTRACTS_STR" >> $GITHUB_ENV
fi
- name: Update PR title with updated version info
if: ${{env.UPDATED_CONTRACTS}}
uses: actions/github-script@v5
env:
PR_TITLE: ${{github.event.pull_request.title}}
with:
script: |
echo "PR_TITLE: $PR_TITLE"
const updatedContracts = ${{env.UPDATED_CONTRACTS}}
const updatedContracts = updatedContracts.split(',');
let prTitle = $PR_TITLE;
updatedContracts.forEach(contract => {
if (!prTitle.includes(contract.trim())) {
prTitle += ` (${contract.trim()})`;
}
});
github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
title: prTitle
});
# - name: Post reminder comment
# if: steps.check_versions.outputs.MISSING_VERSION_UPDATE
# uses: actions/github-script@v5
# with:
# script: |
# const MISSING_VERSION_FILES = '${{ steps.check_versions.outputs.MISSING_VERSION_UPDATE }}'.split(',');
# const body = `The following files have version tags that were not updated: ${MISSING_VERSION_FILES.join(', ')}. Please update the version tags.`;
# github.rest.issues.createComment({
# issue_number: context.issue.number,
# owner: context.repo.owner,
# repo: context.repo.repo,
# body: body
# });
# - name: Post version updates comment
# if: success()
# uses: actions/github-script@v5
# with:
# script: |
# const UPDATED_CONTRACTS = '${{ steps.check_versions.outputs.UPDATED_CONTRACTS }}'.split(',');
# const body = `The following contracts have been updated with new versions: ${UPDATED_CONTRACTS.join(', ')}.`;
# github.rest.issues.createComment({
# issue_number: context.issue.number,
# owner: context.repo.owner,
# repo: context.repo.repo,
# body: body
# });