name: Linux.

on:
  push:
    paths-ignore:
      - 'docs/**'
      - '**.md'
      - 'changelog.txt'
      - 'LEGAL'
      - 'LICENSE'
      - '.github/**'
      - '!.github/workflows/linux.yml'
      - 'snap/**'
      - 'Telegram/build/**'
      - 'Telegram/Resources/uwp/**'
      - 'Telegram/Resources/winrc/**'
      - 'Telegram/SourceFiles/platform/win/**'
      - 'Telegram/SourceFiles/platform/mac/**'
      - 'Telegram/Telegram/**'
      - 'Telegram/configure.bat'
      - 'Telegram/Telegram.plist'
  pull_request:
    paths-ignore:
      - 'docs/**'
      - '**.md'
      - 'changelog.txt'
      - 'LEGAL'
      - 'LICENSE'
      - '.github/**'
      - '!.github/workflows/linux.yml'
      - 'snap/**'
      - 'Telegram/build/**'
      - 'Telegram/Resources/uwp/**'
      - 'Telegram/Resources/winrc/**'
      - 'Telegram/SourceFiles/platform/win/**'
      - 'Telegram/SourceFiles/platform/mac/**'
      - 'Telegram/Telegram/**'
      - 'Telegram/configure.bat'
      - 'Telegram/Telegram.plist'

jobs:

  linux:
    name: Rocky Linux 8
    runs-on: ubuntu-latest

    strategy:
      matrix:
        defines:
          - ""
          - "DESKTOP_APP_DISABLE_X11_INTEGRATION"

    env:
      UPLOAD_ARTIFACT: "true"

    steps:
      - name: Get repository name.
        run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV

      - name: Clone.
        uses: actions/checkout@v4
        with:
          submodules: recursive
          path: ${{ env.REPO_NAME }}

      - name: First set up.
        run: |
          echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
          docker pull ghcr.io/$GITHUB_REPOSITORY/centos_env
          docker tag ghcr.io/$GITHUB_REPOSITORY/centos_env tdesktop:centos_env

      - name: Telegram Desktop build.
        run: |
          cd $REPO_NAME

          DEFINE=""
          if [ -n "${{ matrix.defines }}" ]; then
            DEFINE="-D ${{ matrix.defines }}=ON"
            echo Define from matrix: $DEFINE
            echo "ARTIFACT_NAME=Telegram_${{ matrix.defines }}" >> $GITHUB_ENV
          else
            echo "ARTIFACT_NAME=Telegram" >> $GITHUB_ENV
          fi

          docker run --rm \
          -v $PWD:/usr/src/tdesktop \
          -e CONFIG=Debug \
          tdesktop:centos_env \
          /usr/src/tdesktop/Telegram/build/docker/centos_env/build.sh \
          -D CMAKE_C_FLAGS_DEBUG="" \
          -D CMAKE_CXX_FLAGS_DEBUG="" \
          -D CMAKE_C_FLAGS="-Werror" \
          -D CMAKE_CXX_FLAGS="-Werror" \
          -D CMAKE_EXE_LINKER_FLAGS="-s" \
          -D TDESKTOP_API_TEST=ON \
          -D DESKTOP_APP_DISABLE_AUTOUPDATE=OFF \
          -D DESKTOP_APP_DISABLE_CRASH_REPORTS=OFF \
          $DEFINE

      - name: Check.
        run: |
          filePath="$REPO_NAME/out/Debug/Telegram"
          if test -f "$filePath"; then
            echo "Build successfully done! :)"

            size=$(stat -c %s "$filePath")
            echo "File size of ${filePath}: ${size} Bytes."
          else
            echo "Build error, output file does not exist."
            exit 1
          fi

      - name: Move artifact.
        if: env.UPLOAD_ARTIFACT == 'true'
        run: |
          cd $REPO_NAME/out/Debug
          sudo mkdir artifact
          sudo mv {Telegram,Updater} artifact/
      - uses: actions/upload-artifact@v4
        if: env.UPLOAD_ARTIFACT == 'true'
        name: Upload artifact.
        with:
          name: ${{ env.ARTIFACT_NAME }}
          path: ${{ env.REPO_NAME }}/out/Debug/artifact/
