name: libnetconf2 devel push
on:
  push:
    branches:
      - devel

env:
  DEFAULT_PACKAGES: libcmocka-dev zlib1g-dev libssh-dev libssl-dev libpam0g-dev libcurl4-openssl-dev
  COVERITY_PROJECT: CESNET%2Flibnetconf2

jobs:
  git-branch:
    name: Get git branch
    runs-on: ubuntu-latest
    outputs:
      branch-name: ${{ steps.get-git-branch.outputs.branch-name }}
    steps:
      - id: get-git-branch
        run: |
          if ${{ github.event_name == 'push' }}
            then export GIT_BRANCH=`echo ${{ github.ref }} | cut -d'/' -f 3`
          else
            export GIT_BRANCH=${{ github.base_ref }}
          fi
          echo "branch-name=$GIT_BRANCH" >> $GITHUB_OUTPUT

  build:
    name: ${{ matrix.config.name }}
    runs-on: ${{ matrix.config.os }}
    needs: git-branch
    strategy:
      fail-fast: false
      matrix:
        config:
          - {
            name: "Coverity",
            os: "ubuntu-latest",
            build-type: "Debug",
            dep-build-type: "Debug",
            cc: "clang",
            options: "-DENABLE_DNSSEC=ON",
            packages: "",
            snaps: "",
            make-prepend: "cov-build --dir cov-int",
            make-target: ""
          }
          - {
            name: "Codecov",
            os: "ubuntu-latest",
            build-type: "Debug",
            dep-build-type: "Debug",
            cc: "gcc",
            options: "-DENABLE_COVERAGE=ON -DENABLE_DNSSEC=ON",
            packages: "lcov",
            snaps: "",
            make-prepend: "",
            make-target: ""
          }

    steps:
      - uses: actions/checkout@main

      - name: Deps-packages
        shell: bash
        run: |
          sudo add-apt-repository ppa:kedazo/libssh-0.7.x -y
          sudo apt-get update
          sudo apt-get install $DEFAULT_PACKAGES ${{ matrix.config.packages }}
          if ${{ matrix.config.snaps != '' }}
            then sudo snap install ${{ matrix.config.snaps }}
          fi

      - name: Deps-coverity
        shell: bash
        working-directory: ${{ github.workspace }}
        run: |
          wget -q https://scan.coverity.com/download/linux64 --post-data "token=$TOKEN&project=$COVERITY_PROJECT" -O coverity-tools.tar.gz
          mkdir coverity-tools
          tar xzf coverity-tools.tar.gz --strip 1 -C coverity-tools
        env:
          TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
        if: ${{ matrix.config.name == 'Coverity' }}

      - name: Deps-libyang
        shell: bash
        run: |
          git clone -b ${{ needs.git-branch.outputs.branch-name }} https://github.com/CESNET/libyang.git
          cd libyang
          mkdir build
          cd build
          CC=${{ matrix.config.cc }} cmake -DCMAKE_BUILD_TYPE=${{ matrix.config.dep-build-type }} -DENABLE_TESTS=OFF ..
          make -j2
          sudo make install

      - name: Deps-libval
        shell: bash
        run: |
          git clone https://github.com/DNSSEC-Tools/DNSSEC-Tools.git dnssec-tools
          cd dnssec-tools/dnssec-tools/validator
          ./configure
          make -j2
          sudo make install

      - name: Configure
        shell: bash
        working-directory: ${{ github.workspace }}
        run: |
          mkdir build
          cd build
          CC=${{ matrix.config.cc }} cmake -DCMAKE_BUILD_TYPE=${{ matrix.config.build-type }} ${{ matrix.config.options }} ..

      - name: Build
        shell: bash
        working-directory: ${{ github.workspace }}/build
        run: |
          export LC_ALL=C.UTF-8
          export PATH=/snap/bin:${{ github.workspace }}/coverity-tools/bin:$PATH
          ${{ matrix.config.make-prepend }} make ${{ matrix.config.make-target }}

      - name: Test
        shell: bash
        working-directory: ${{ github.workspace }}/build
        run: ctest --output-on-failure

      - name: Upload to Coverity.com
        shell: bash
        working-directory: ${{ github.workspace }}/build
        run: |
          tar czvf libnetconf2.tgz cov-int
          curl \
            --form token=$TOKEN \
            --form email=mvasko@cesnet.cz \
            --form file=@libnetconf2.tgz \
            --form version="`grep Version ./libnetconf2.pc | cut -d' ' -f 2`" \
            --form description="libnetconf2 NETCONF library" \
            https://scan.coverity.com/builds?project=$COVERITY_PROJECT
        env:
          TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
        if: ${{ matrix.config.name == 'Coverity' }}

      - name: Upload to Codecov.io
        shell: bash
        working-directory: ${{ github.workspace }}/build
        run: bash <(curl -s https://codecov.io/bash)
        if: ${{ matrix.config.name == 'Codecov' }}
