Skip to content

Add check for migrator filename uniqueness #4

Add check for migrator filename uniqueness

Add check for migrator filename uniqueness #4

name: Check Migration Filename Uniqueness
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
migration-check:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # fetch full history so we can diff properly
- name: Fetch base branch
run: |
git fetch origin ${{ github.base_ref }} --depth=1
- name: Find newly added migration files
id: find_files
run: |
# Diff only added files between base branch and PR HEAD
files=$(git diff --name-only --diff-filter=A origin/${{ github.base_ref }}...HEAD | grep '^recipe/migrations/' || true)
echo "new_migrators=$new_migrators" >> $GITHUB_OUTPUT
- name: Search for existing uses of that migrator in conda-forge
if: steps.find_files.outputs.new_migrators != ''
run: |
failed=0
for m in ${new_migrators}; do
migrator=$(basename "$m")
echo "Checking for existing uses of migrator $migrator in conda-forge..."
# Search in GH-org with exact path where migrators end up
num_hits=$(gh search code "org:conda-forge path:.ci_support/migrations/$migrator" --json repository --jq 'map(select(.repository.isArchived == false)) | length')
if [ "$num_hits" -gt 0 ]; then
echo "Found $num_hits existing occurrences of migrator $migrator in conda-forge"
failed=1
else
echo "No existing occurrences of $migrator found"
fi
done
if [ "$failed" -eq 1 ]; then
echo "Pre-existing uses of migration filename(s) found in conda-forge."
exit 1
fi