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 }}