name: Build Tilde Friends
run-name: ${{ gitea.actor }} running 🚀
on: [push]

jobs:
  Build-All:
    runs-on: ubuntu-latest
    container:
      image: node:23-bookworm-slim
      valid_volumes:
        - '/opt/keys'
        - '/opt/deps'
      volumes:
        - /opt/keys:/opt/keys
        - /opt/deps:/opt/deps
    steps:
      - name: Install build dependencies
        run: >
          apt update && apt install -y \
            build-essential \
            clang-19 \
            cmake \
            curl \
            docker.io \
            doxygen \
            file \
            gcc-aarch64-linux-gnu \
            git \
            graphviz \
            libgpgme11 \
            libssl-dev \
            mingw-w64 \
            rsync \
            unzip \
            zip \
            zlib1g-dev
      - name: Get code
        uses: actions/checkout@v4
        with:
          submodules: true
      - name: Setup environment
        run: |
          update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 100
          update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 100
          ln -s /opt/keys .keys
          ln -sf /opt/deps/ios_toolchain deps/
          ln -sf /opt/deps/macos_toolchain deps/
      - name: Build documentation
        run: |
          mkdir -p out/html/ ~/.ssh/
          make docs
          echo 'pildefriends ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKD3Kde5vDO0TrMBDK0IGGeNGe/XinWAZkSQ/rXxwUjt' >> ~/.ssh/known_hosts
          rsync -avP --delete -e "ssh -i /opt/keys/ssh.ed25519" out/html/ tfdocs@pildefriends:docs/html/
      - name: Setup JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Setup Android SDK
        uses: android-actions/setup-android@v3
        with:
          packages: 'tools platform-tools build-tools;34.0.0 platforms;android-34 ndk;26.3.11579264'
      - name: Docker build
        run: DOCKER_BUILDKIT=1 docker build .
      - name: Build
        run: ANDROID_SDK=$HOME/.android/sdk make -j`nproc` all dist docs
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: dist
          path: dist/*