# Copyright © SixtyFPS GmbH <info@slint.dev>
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.1 OR LicenseRef-Slint-commercial

name: Rust Demos built for Torizon

on:
  workflow_dispatch:
    inputs:
      push:
        type: boolean
        description: "Push the built images"
  workflow_call:
    inputs:
      push:
        type: boolean
        description: "Push the built images"

jobs:
  build_containers:
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        include:
          - target: armhf
            image_arch: linux/arm/v7
            rust_toolchain_arch: armv7-unknown-linux-gnueabihf
            base_image_suffix: ""
          - target: arm64
            image_arch: linux/arm64
            rust_toolchain_arch: aarch64-unknown-linux-gnu
            base_image_suffix: ""
          - target: armhf
            image_arch: linux/arm/v7
            rust_toolchain_arch: armv7-unknown-linux-gnueabihf
            base_image_suffix: "-vivante"
          - target: arm64
            image_arch: linux/arm64
            rust_toolchain_arch: aarch64-unknown-linux-gnu
            base_image_suffix: "-vivante"

    steps:
    - uses: actions/checkout@v3
    - name: Set up QEMU
      uses: docker/setup-qemu-action@v2
    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v2
    - name: Login to GitHub Container Registry
      uses: docker/login-action@v1
      with:
        registry: ghcr.io
        username: ${{ github.actor }}
        password: ${{ secrets.CR_PAT }}
    - name: Build and push
      uses: docker/build-push-action@v3
      with:
        context: .
        file: ./docker/Dockerfile.torizon-demos
        push: ${{ github.event.inputs.push || inputs.push }}
        tags: ghcr.io/slint-ui/slint/torizon-demos-${{matrix.target}}${{matrix.base_image_suffix}}:latest
        build-args: |
          TOOLCHAIN_ARCH=${{matrix.target}}
          IMAGE_ARCH=${{matrix.image_arch}}
          RUST_TOOLCHAIN_ARCH=${{matrix.rust_toolchain_arch}}
          BASE_NAME=wayland-base${{matrix.base_image_suffix}}
          WEATHER_API_KEY=${{secrets.WEATHER_API_KEY}}
