name: coverity-scan
on:
  push:
    branches:
      - coverity
jobs:

  build-deps:

    runs-on: ubuntu-latest
    
    strategy:
      matrix:
        compiler: [ gnu ]
        hdf5: [ V110 ]
        netcdf: [ 4.8.0 ]
        cgns: [ 4.2.0 ]
    steps:

      - uses: actions/checkout@v2

      - name: Install System dependencies
        shell: bash -l {0}
        run: sudo apt update && sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev openmpi-bin libopenmpi-dev

        ###
        # Installing TPL
        ###
      - name: Cache TPL-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
        id: cache-TPL
        uses: actions/cache@v2
        with:
          path: ~/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
          key: TPL-v3-${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}

      - name: Build TPL-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
        if: steps.cache-TPL.outputs.cache-hit != 'true'
        run: |
          echo $HOME
          set -x
          COMPILER=${{ matrix.compiler }} H5VERSION=${{ matrix.hdf5}} GNU_PARALLEL=OFF INSTALL_PATH=${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} ./install-tpl.sh
          ls ${HOME} && ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}/lib

###
# Fetch Cache
###

  seacas-build:
  
    needs: build-deps
    runs-on: ubuntu-latest

    strategy:
      matrix:
        compiler: [ gnu ]
        hdf5: [ V110 ]
        netcdf: [ 4.8.0 ]
        cgns: [ 4.2.0 ]
    steps:

      - uses: actions/checkout@v2

      - name: Install System dependencies
        shell: bash -l {0}
        run: sudo apt update && sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev openmpi-bin libopenmpi-dev

      - name: Fetch TPL Cache
        id: cache-TPL
        uses: actions/cache@v2
        with:
          path: ~/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
          key: TPL-v3-${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}

      - name: Check Cache
        shell: bash -l {0}
        run: ls ${HOME} && ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}/lib

###
# Configure and build
###
      - name: Download Coverity Build Tool
        run: |
          wget -q https://scan.coverity.com/download/linux64 --post-data "token=$TOKEN&project=gsjaardema%2Fseacas" -O coverity_tool.tgz
          mkdir cov-analysis-linux64
          tar xzf coverity_tool.tgz --strip 1 -C cov-analysis-linux64
        env:
          TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}

      - name: Run cmake
        shell: bash -l {0}
        run: |
          echo $HOME
          mkdir build
          cd build
          ZOLTAN=NO INSTALL_PATH=${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} bash ../cmake-config coverity

      - name: Build 
        shell: bash -l {0}
        run: |
          cd build 
          mkdir cov-int
          ../cov-analysis-linux64/bin/cov-build --dir cov-int make -j 4
        if: ${{ success() }}

      - name: Submit the result to Coverity Scan
        run: |
          cd build
          tail cov-int/build-log.txt
          tar czf seacas.tgz cov-int
          curl \
             --form token="$TOKEN" \
             --form email=gsjaardema@gmail.com \
             --form file=@seacas.tgz \
             --form version="master" \
             --form description="SEACAS Github Actions Coverity Scan" \
               https://scan.coverity.com/builds?project=gsjaardema%2Fseacas
        env:
          TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
        if: ${{ success() }}
