# Gitea Actions Auto-Sort Configuration for Datasheets and Images # This 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.CI_BOT_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" return 0 # Success - file was moved fi return 1 # No file moved } # Find and move datasheet files (DS_ prefix) echo "Searching for datasheet files with DS_ prefix..." mapfile -t datasheet_files < <(find . -name "DS_*.pdf" -o -name "DS_*.doc" -o -name "DS_*.docx" -o -name "DS_*.txt") for file in "${datasheet_files[@]}"; do if [[ -n "$file" && "$file" != ./docs/datasheets/* ]]; then filename=$(basename "$file") if move_file "$file" "docs/datasheets/$filename"; then FILES_MOVED=true fi fi done # Find and move image files (IMG_ prefix) echo "Searching for image files with IMG_ prefix..." mapfile -t image_files < <(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") for file in "${image_files[@]}"; do if [[ -n "$file" && "$file" != ./docs/images/* ]]; then filename=$(basename "$file") if move_file "$file" "docs/images/$filename"; then FILES_MOVED=true fi 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 "ci-bot@b4l.co.th" git config --local user.name "B4L CI Auto-Sort Bot" 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 Gitea Actions auto-sort workflow" - name: Push changes if: steps.sort_files.outputs.files_moved == 'true' run: | # Get the repository URL dynamically REPO_URL=$(git config --get remote.origin.url) # Extract the base URL and repository path if [[ $REPO_URL == https://* ]]; then # HTTPS URL format: https://git.b4l.co.th/B4L/repo-name.git DOMAIN=$(echo $REPO_URL | sed 's|https://\([^/]*\)/.*|\1|') REPO_PATH=$(echo $REPO_URL | sed 's|https://[^/]*/\(.*\)|\1|') PUSH_URL="https://ci-bot:${{ secrets.CI_BOT_TOKEN }}@${DOMAIN}/${REPO_PATH}" else # SSH URL format: git@git.b4l.co.th:B4L/repo-name.git DOMAIN=$(echo $REPO_URL | sed 's|git@\([^:]*\):.*|\1|') REPO_PATH=$(echo $REPO_URL | sed 's|git@[^:]*:\(.*\)|\1|') PUSH_URL="https://ci-bot:${{ secrets.CI_BOT_TOKEN }}@${DOMAIN}/${REPO_PATH}" fi echo "Repository URL: $REPO_URL" echo "Domain: $DOMAIN" echo "Repository Path: $REPO_PATH" echo "Pushing to: https://${DOMAIN}/${REPO_PATH} (with authentication)" git push $PUSH_URL HEAD:${{ github.ref_name }} - 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