name: Build

on:
  push:
    branches: [master]
    tags:
      - '*'
  pull_request:
    branches: [master]

jobs:
  windows:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: |
        cmake -B ${{github.workspace}}/build -A x64
        cmake --build ${{github.workspace}}/build --config Release
    - name: Upload windows build
      uses: actions/upload-artifact@v2
      with:
        name: windows
        path: ${{github.workspace}}/build/Analyzers/Release/*.dll
  macos:
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: |
        cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=Release
        cmake --build ${{github.workspace}}/build
    - name: Upload MacOS build
      uses: actions/upload-artifact@v2
      with:
        name: macos
        path: ${{github.workspace}}/build/Analyzers/*.so
  linux:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: |
        cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=Release
        cmake --build ${{github.workspace}}/build
    - name: Upload Linux build
      uses: actions/upload-artifact@v2
      with:
        name: linux
        path: ${{github.workspace}}/build/Analyzers/*.so
  publish:
    needs: [windows, macos, linux]
    runs-on: ubuntu-latest
    steps:
    - name: download individual builds
      uses: actions/download-artifact@v2
      with:
        path: ${{github.workspace}}/artifacts
    - name: zip
      run: |
        cd ${{github.workspace}}/artifacts
        zip -r ${{github.workspace}}/analyzer.zip .
    - uses: actions/upload-artifact@v2
      with:
        name: all-platforms
        path: ${{github.workspace}}/artifacts/**
    - name: create release
      uses: softprops/action-gh-release@v1
      if: startsWith(github.ref, 'refs/tags/')
      with:
          files: ${{github.workspace}}/analyzer.zip