name: Coverity Scan
on:
  workflow_dispatch:
  schedule:
    - cron: '0 0 01 * *' # On the 1st every month at midnight UTC


# Automatically cancel any previous workflow on new push.
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
  cancel-in-progress: true

jobs:
  latest:
    runs-on: ubuntu-latest
    steps:
      - name: Determine current repository
        id: "determine-repo"
        run: echo "repo=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT

      - uses: actions/checkout@v4
      - name: Download Coverity Build Tool
        run: |
          wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=capstone-next" -O cov-analysis-linux64.tar.gz
          mkdir cov-analysis-linux64
          tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64
        env:
          TOKEN: ${{ secrets.COVERITY_TOKEN }}
        
      - name: Installing build dependencies
        run: |
           sudo apt-get --assume-yes install cmake

      - name: Setup
        run: |
          cmake . -B build -DCAPSTONE_BUILD_CSTEST=ON

      - name: Build with cov-build
        run: |
          export PATH=`pwd`/cov-analysis-linux64/bin:$PATH
          cov-build --dir cov-int cmake --build build
          tar czvf capstone.tgz cov-int


      - uses: actions/upload-artifact@v4
        with:
          path: capstone.tgz

      - name: Submit the result to Coverity Scan
        run: |
          curl \
            --form token=$TOKEN \
            --form email=capstone.engine@gmail.com \
            --form file=@capstone.tgz \
            --form version=trunk \
            --form description="capstone" \
            https://scan.coverity.com/builds?project=capstone-next
        env:
          TOKEN: ${{ secrets.COVERITY_TOKEN }}
        if: steps.determine-repo.outputs.repo == 'capstone-engine/capstone'
