name: SonarCloud Static Analysis

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest
    container: symless/synergy-core:debian10

    env:
      SONAR_SCANNER_VERSION: 4.4.0.2170
      SONAR_SCANNER_OPTS: -server

    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0

    - name: Installing gcovr
      run: |
        apt-get update
        apt-get install -y python python-pip
        pip install gcovr
    - name: Installing Sonar Scanner
      run: |
        export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-4.4.0.2170-linux
        curl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip
        unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/

    - name: Installing buildWrapper
      run: |
        curl --create-dirs -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip
        unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/

    - name: Build
      run: |
        export PATH=$HOME/.sonar/build-wrapper-linux-x86:$PATH
        mkdir build-release
        cd build-release
        cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=ON ..
        . ./version
        build-wrapper-linux-x86-64 --out-dir bw-output make -j

    - name: Running coverage
      run: |
        cd build-release
        make coverage

    - name: Run Sonar
      run: |
        export PATH=$HOME/.sonar/sonar-scanner-${SONAR_SCANNER_VERSION}-linux/bin:$PATH
        cd build-release
        sonar-scanner \
          -Dsonar.organization=symless \
          -Dsonar.projectKey=symless_synergy-core \
          -Dsonar.sources=. \
          -Dsonar.projectBaseDir=../ \
          -Dsonar.exclusions=./ext/**,**/build-release/** \
          -Dsonar.cfamily.build-wrapper-output=bw-output \
          -Dsonar.host.url=https://sonarcloud.io \
          -Dsonar.coverageReportPaths=build-release/coverage.xml \
          -Dsonar.cfamily.threads=2
      env:
        SONAR_TOKEN: ${{secrets.SONAR_TOKEN}}
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
