name: CI

on:
  push:
    branches-ignore: [ gh-pages, master ]
    paths-ignore:
      - '.github/*'
      - '.github/*_TEMPLATE/**'
      - '*.md'
      - '*.yml'
      - 'docs/**'
      - 'LICENSE'
  pull_request:
    branches-ignore: [ gh-pages, master ]
    paths-ignore:
      - '.github/*'
      - '.github/*_TEMPLATE/**'
      - '*.md'
      - '*.yml'
      - 'docs/**'
      - 'LICENSE'
  workflow_dispatch:

jobs:
  build-windows:
    runs-on: windows-latest
    env:
      POWERSHELL_TELEMETRY_OPTOUT: 1
    strategy:
      fail-fast: false
      matrix:
        cpu_arch: [ AVX, AVX2, AVX512 ]
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    - name: Setup
      run: .\xb setup
    - name: Build
      run: .\xb build --cpu_arch=${{ matrix.cpu_arch }} --config=Release --target=src\xenia-app --target=src\xenia-vfs-dump
    - name: Prepare artifacts
      id: prepare_artifacts
      run: |
        robocopy . build\bin\${{ runner.os }}\Release                                                                LICENSE /r:0 /w:0
        robocopy   build\bin\${{ runner.os }}\Release artifacts\xenia_canary   xenia_canary.exe   xenia_canary.pdb   LICENSE /r:0 /w:0
        robocopy   build\bin\${{ runner.os }}\Release artifacts\xenia-vfs-dump xenia-vfs-dump.exe xenia-vfs-dump.pdb LICENSE /r:0 /w:0
        If ($LastExitCode -le 7) { echo "LastExitCode = $LastExitCode";$LastExitCode = 0 }
        7z a xenia_canary.zip                       .\artifacts\xenia_canary\*.exe                                   LICENSE
        echo "::set-output name=short_commit_sha::$(git rev-parse --short HEAD)"
    - name: Upload xenia-vfs-dump artifacts
      uses: actions/upload-artifact@v2
      if: matrix.cpu_arch == 'AVX'
      with:
        name: xenia-vfs-dump_canary
        path: artifacts\xenia-vfs-dump
        if-no-files-found: error
    - name: Upload xenia artifacts
      uses: actions/upload-artifact@v2
      with:
        name: xenia_canary_${{ matrix.cpu_arch }}
        path: artifacts\xenia_canary
        if-no-files-found: error
    - uses: softprops/action-gh-release@v1
      if: |
        github.repository == 'xenia-canary/xenia-canary' &&
        github.event.action != 'pull_request' &&
        contains(github.ref, 'refs/heads/canary') &&
        matrix.cpu_arch == 'AVX'
      with:
        files: '*.zip'
        tag_name: ${{ steps.prepare_artifacts.outputs.short_commit_sha }}
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
