# Inspired by https://github.com/nextcloud/docker/blob/master/.github/workflows/update-sh.yml
name: nextcloud-update

on:
  workflow_dispatch:
  schedule:
  - cron:  '00 12 * * *'

jobs:
  run_update_sh:
    name: Run nextcloud-update script
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Run nextcloud-update script
      run: |
        # Inspired by https://github.com/nextcloud/docker/blob/master/update.sh

        # APCU
        apcu_version="$(
          git ls-remote --tags https://github.com/krakjoe/apcu.git \
            | cut -d/ -f3 \
            | grep -viE -- 'rc|b' \
            | sed -E 's/^v//' \
            | sort -V \
            | tail -1
        )"
        sed -i "s|pecl install APCu.*\;|pecl install APCu-$apcu_version\;|" ./Containers/nextcloud/Dockerfile
        
        # Memcached
        memcached_version="$(
          git ls-remote --tags https://github.com/php-memcached-dev/php-memcached.git \
            | cut -d/ -f3 \
            | grep -viE -- 'rc|b' \
            | sed -E 's/^[rv]//' \
            | sort -V \
            | tail -1
        )"
        sed -i "s|pecl install memcached.* |pecl install memcached-$memcached_version |" ./Containers/nextcloud/Dockerfile
        
        # Redis
        redis_version="$(
          git ls-remote --tags https://github.com/phpredis/phpredis.git \
            | cut -d/ -f3 \
            | grep -viE '[a-z]' \
            | tr -d '^{}' \
            | sort -V \
            | tail -1
        )"
        sed -i "s|pecl install redis.* |pecl install redis-$redis_version |" ./Containers/nextcloud/Dockerfile
        
        # Imagick
        imagick_version="$(
          git ls-remote --tags https://github.com/mkoppanen/imagick.git \
            | cut -d/ -f3 \
            | grep -viE '[a-z]' \
            | tr -d '^{}' \
            | sort -V \
            | tail -1
        )"
        sed -i "s|pecl install imagick.*\;|pecl install imagick-$imagick_version\;|" ./Containers/nextcloud/Dockerfile

        # Igbinary
        igbinary_version="$(
          git ls-remote --tags https://github.com/igbinary/igbinary.git \
            | cut -d/ -f3 \
            | grep -viE '[a-z]' \
            | tr -d '^{}' \
            | sort -V \
            | tail -1
        )"
        sed -i "s|pecl install igbinary.*\;|pecl install igbinary-$igbinary_version\;|" ./Containers/nextcloud/Dockerfile

        # Nextcloud
        NC_MAJOR="$(grep "ENV NEXTCLOUD_VERSION" ./Containers/nextcloud/Dockerfile | grep -oP '[23][0-9]')"
        NCVERSION=$(curl -s -m 900 https://download.nextcloud.com/server/releases/ | sed --silent 's/.*href="nextcloud-\([^"]\+\).zip.asc".*/\1/p' | grep "$NC_MAJOR" | sort --version-sort | tail -1)
        if [ -n "$NCVERSION" ]; then
          sed -i "s|^ENV NEXTCLOUD_VERSION.*|ENV NEXTCLOUD_VERSION=$NCVERSION|" ./Containers/nextcloud/Dockerfile
        fi

    - name: Create Pull Request
      uses: peter-evans/create-pull-request@v6
      with:
        commit-message: nextcloud-update automated change
        signoff: true
        title: Nextcloud dependency update
        body: Automated Nextcloud container update
        labels: dependencies, 3. to review
        milestone: next
        branch: nextcloud-container-update
