name: CMake Build (AppImage x86-64)

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  build:

    runs-on: ubuntu-20.04

    steps:
    - uses: actions/checkout@v1
    - name: Install dependencies
      run: |
        sudo rm -f /etc/apt/sources.list.d/dotnetdev.list /etc/apt/sources.list.d/microsoft-prod.list
        sudo apt update
        sudo apt install cmake extra-cmake-modules libcurl4-gnutls-dev libpcap0.8-dev libsdl2-dev libqt5multimedia5-plugins qt5-default qtbase5-private-dev qtmultimedia5-dev libslirp0 libslirp-dev libarchive-dev zstd libzstd-dev --allow-downgrades
    - name: Create build environment
      run: mkdir ${{runner.workspace}}/build
    - name: Configure
      working-directory: ${{runner.workspace}}/build
      run: cmake $GITHUB_WORKSPACE
    - name: Make
      working-directory: ${{runner.workspace}}/build
      run: |
        make -j$(nproc --all)
    - name: Prepare AppDir for AppImage
      working-directory: ${{runner.workspace}}/build
      run: |
        make install DESTDIR=AppDir
        mv ./AppDir/usr/local/bin ./AppDir/usr/bin
        mv ./AppDir/usr/local/share ./AppDir/usr/share
        rm -rf ./AppDir/usr/local
    - name: Prepare necessary Tools for building the AppImage
      working-directory: ${{runner.workspace}}/build
      run: |
        wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
        wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
        chmod a+x linuxdeploy-x86_64.AppImage
        chmod a+x linuxdeploy-plugin-qt-x86_64.AppImage
    - name: Build the AppImage
      working-directory: ${{runner.workspace}}/build
      run: |
        ./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin qt --output appimage
        mkdir dist
        cp ./melonDS*.AppImage ./dist
    - uses: actions/upload-artifact@v1
      with:
        name: melonDS-appimage-x86_64
        path: ${{runner.workspace}}/build/dist
