# CI Auto-Sort Configuration for Datasheets and Images # This GitHub Actions workflow automatically moves files with specific prefixes to their correct directories name: Auto-Sort Files on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: auto-sort: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} - name: Auto-sort datasheets and images run: | #!/bin/bash set -e # Flag to track if any files were moved FILES_MOVED=false # Function to move files with logging move_file() { local src="$1" local dest="$2" local dest_dir=$(dirname "$dest") # Create destination directory if it doesn't exist mkdir -p "$dest_dir" # Move file if it's not already in the correct location if [ "$src" != "$dest" ] && [ -f "$src" ]; then echo "Moving: $src -> $dest" mv "$src" "$dest" FILES_MOVED=true fi } # Find and move datasheet files (DS_ prefix) echo "Searching for datasheet files with DS_ prefix..." find . -name "DS_*.pdf" -o -name "DS_*.doc" -o -name "DS_*.docx" -o -name "DS_*.txt" | while read file; do # Skip files already in docs/datasheets/ if [[ "$file" != ./docs/datasheets/* ]]; then filename=$(basename "$file") move_file "$file" "docs/datasheets/$filename" fi done # Find and move image files (IMG_ prefix) echo "Searching for image files with IMG_ prefix..." find . -name "IMG_*.png" -o -name "IMG_*.jpg" -o -name "IMG_*.jpeg" -o -name "IMG_*.svg" -o -name "IMG_*.gif" -o -name "IMG_*.pdf" -o -name "IMG_*.webp" | while read file; do # Skip files already in docs/images/ if [[ "$file" != ./docs/images/* ]]; then filename=$(basename "$file") move_file "$file" "docs/images/$filename" fi done # Check if any files were moved if [ "$FILES_MOVED" = true ]; then echo "Files were moved. Setting output for commit step." echo "files_moved=true" >> $GITHUB_OUTPUT else echo "No files needed to be moved." echo "files_moved=false" >> $GITHUB_OUTPUT fi id: sort_files - name: Commit moved files if: steps.sort_files.outputs.files_moved == 'true' run: | git config --local user.email "action@github.com" git config --local user.name "GitHub Action Auto-Sort" git add docs/datasheets/ docs/images/ git commit -m "Auto-sort: Move DS_ and IMG_ prefixed files to correct directories - Moved datasheet files (DS_*) to docs/datasheets/ - Moved image files (IMG_*) to docs/images/ - Automated by CI auto-sort workflow" - name: Push changes if: steps.sort_files.outputs.files_moved == 'true' uses: ad-m/github-push-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }} branch: ${{ github.ref }} - name: Create summary run: | echo "## Auto-Sort Results" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY if [ "${{ steps.sort_files.outputs.files_moved }}" = "true" ]; then echo "✅ Files were automatically moved to correct directories" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "### Moved Files:" >> $GITHUB_STEP_SUMMARY echo "- Datasheet files (DS_*) → docs/datasheets/" >> $GITHUB_STEP_SUMMARY echo "- Image files (IMG_*) → docs/images/" >> $GITHUB_STEP_SUMMARY else echo "ℹ️ No files needed to be moved - all files are properly organized" >> $GITHUB_STEP_SUMMARY fi echo "" >> $GITHUB_STEP_SUMMARY echo "### Supported Prefixes:" >> $GITHUB_STEP_SUMMARY echo "- **DS_**: Datasheets (PDF, DOC, DOCX, TXT)" >> $GITHUB_STEP_SUMMARY echo "- **IMG_**: Images (PNG, JPG, SVG, GIF, PDF, WEBP)" >> $GITHUB_STEP_SUMMARY