name: Compress Icons 🗜️

on:
  schedule:
    - cron: "0 0 * * 0"
  workflow_dispatch:

jobs:
  compress_icons:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
        with:
          ref: ${{ github.ref_name }}

      - name: Install Dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y zopfli webp npm
          npm install -g svgo

      - name: Create svgo.config.js if Missing
        run: |
          if [ ! -f "svgo.config.js" ]; then
            echo "Creating svgo.config.js..."
            echo "module.exports = { plugins: [{ removeViewBox: false }, { cleanupIDs: false }] };" > svgo.config.js
          else
            echo "svgo.config.js already exists."
          fi

      - name: Compress PNG Files
        run: |
          echo "Compressing PNGs..."
          find png/ -iname "*.png" -print0 | xargs -0 -P 4 -I{} zopflipng -y {} {}

      - name: Compress SVG Files
        run: |
          echo "Compressing SVGs..."
          svgo --config=svgo.config.js -f svg/

      - name: Compress WEBP Files
        run: |
          echo "Compressing WEBPs..."
          find webp/ -iname "*.webp" -print0 | xargs -0 -P 4 -I{} bash -c 'cwebp -quiet -lossless "$1" -o "$1"' _ {}

      - name: Commit and Push Changes
        run: |
          git config --global user.email "homarr-labs@proton.me"
          git config --global user.name "Dashboard Icons Bot"
          git add png/ svg/ webp/
          git commit -m "ci: github-actions: compress icons" || exit 0
          git pull --rebase origin ${{ github.ref_name }}
          git push origin HEAD:${{ github.ref_name }}