aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/update-min-supported-desktop.yml
blob: 7cd644714274034efda8c2640101e42e23abb973 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Update min supported desktop version

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

jobs:
  update-minimum-supported-desktop-version:
    runs-on: ubuntu-latest-low

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
        with:
          submodules: true

      - name: Download desktop client version file from 5 years ago
        id: download
        run: |
          # Create a temporary directory for the downloaded file
          mkdir -p tmp

          # Download the version file from the provided URL
          VERSION_FILE_URL="https://github.com/nextcloud/desktop/raw/@%7B5.years.ago%7D/VERSION.cmake"

          # Download the file using curl
          curl -s -L "$VERSION_FILE_URL" -o tmp/VERSION.cmake

          if [ ! -f "tmp/VERSION.cmake" ]; then
            echo "Failed to download VERSION.cmake file"
            exit 1
          fi

          echo "VERSION_FILE=tmp/VERSION.cmake" >> $GITHUB_OUTPUT
          echo "Downloaded version file to tmp/VERSION.cmake"

      - name: Extract version info
        id: extract-version
        run: |
          # Path to the downloaded version file
          VERSION_FILE="${{ steps.download.outputs.VERSION_FILE }}"

          # Extract major, minor, patch versions
          MAJOR=$(grep "VERSION_MAJOR" $VERSION_FILE | grep -o '[0-9]\+')
          MINOR=$(grep "VERSION_MINOR" $VERSION_FILE | grep -o '[0-9]\+')
          PATCH=$(grep "VERSION_PATCH" $VERSION_FILE | grep -o '[0-9]\+')

          # Construct the version string
          VERSION="$MAJOR.$MINOR.$PATCH"

          # Validate format: xx.xx.xx where each x is a digit
          if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
            echo "Error: Extracted version '$VERSION' does not match required format (xx.xx.xx)"
            exit 1
          fi

          rm -rf tmp

          echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
          echo "Extracted Version: $VERSION"

      - name: Update files with new version ${{ steps.extract-version.outputs.VERSION }}
        id: update-files
        run: |
          VERSION="${{ steps.extract-version.outputs.VERSION }}"

          # Define the files to update
          DAV_FILE="apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php"
          CONFIG_FILE="config/config.sample.php"

          # Check if files exist
          if [ ! -f "$DAV_FILE" ]; then
            echo "Error: DAV file not found at $DAV_FILE"
            exit 1
          fi

          if [ ! -f "$CONFIG_FILE" ]; then
            echo "Error: Config file not found at $CONFIG_FILE"
            exit 1
          fi

          # Update the DAV file - replace the version in the specific line
          sed -i "s/\('minimum\.supported\.desktop\.version', '\)[0-9]\+\.[0-9]\+\.[0-9]\+'/\1$VERSION'/g" "$DAV_FILE"
          echo "Updated $DAV_FILE"

          # Update the config sample file
          PREV_VERSION=$(grep "'minimum.supported.desktop.version'" "$CONFIG_FILE" | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
          sed -i "s/Defaults to \`\`$PREV_VERSION\`\`/Defaults to \`\`$VERSION\`\`/" "$CONFIG_FILE"
          sed -i "s/'minimum\.supported\.desktop\.version' => '[0-9]\+\.[0-9]\+\.[0-9]\+'/'minimum.supported.desktop.version' => '$VERSION'/g" "$CONFIG_FILE"
          echo "Updated $CONFIG_FILE"

          # Check if any changes were made
          if [ -n "$(git diff "$DAV_FILE" "$CONFIG_FILE")" ]; then
            echo "CHANGES_MADE=true" >> $GITHUB_OUTPUT
            echo "Changes were made to the files"
            git diff "$DAV_FILE" "$CONFIG_FILE"
          else
            echo "CHANGES_MADE=false" >> $GITHUB_OUTPUT
            echo "No changes were needed (versions might already be up to date)"
          fi

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@dd2324fc52d5d43c699a5636bcf19fceaa70c284
        if: steps.update-files.outputs.CHANGES_MADE == 'true'
        with:
          token: ${{ secrets.COMMAND_BOT_PAT }}
          commit-message: "chore: Update minimum supported desktop version"
          committer: GitHub <noreply@github.com>
          author: nextcloud-command <nextcloud-command@users.noreply.github.com>
          signoff: true
          branch: "automated/noid/${{ matrix.branches }}-update-min-supported-desktop-version"
          title: "chore: Update minimum supported desktop version to ${{ steps.extract-version.outputs.VERSION }}"
          base: "master"
          body: |
            Auto-generated update of the minimum supported desktop version using last supported version.
            https://github.com/nextcloud/desktop/blob/@%7B5.years.ago%7D/VERSION.cmake
          labels: |
            client: 💻 desktop
            automated
            3. to review
          reviewers: tobiasKaminsky, camilasan, claucambra