#!/usr/bin/env groovy
//-------------------------------------------------------------------------------
// Copyright (c) 2020-2024, Arm Limited and Contributors. All rights reserved.
//
// SPDX-License-Identifier: BSD-3-Clause
//
//-------------------------------------------------------------------------------

@Library('trustedfirmware') _
import org.trustedfirmware.Gerrit

timestamps {
  node("docker-amd64-tf-m-jammy") {
    // Clone TF-M repositories so share folder can be reused by downstream jobs
    stage("Init") {
      cleanWs()
      dir("tf-m-ci-scripts") {
        tfgit.checkout_ci_scripts()
        sh "./clone.sh"
      }
    }
    stage("Check") {
      def verify = 1
      try {
        sh """
           cd trusted-firmware-m
           export GIT_REF_ARG=""
           if [ ! -z "\$GERRIT_PATCHSET_REVISION" ] ; then
             export GIT_REF_ARG="HEAD"
           fi
           ../tf-m-ci-scripts/run-cppcheck.sh -r \$GIT_REF_ARG
           """
      } catch (Exception e) {
        manager.buildFailure()
        verify = -1
      } finally {
        g = new Gerrit()
        g.verifyStatusInWorkspace(verify, 'cppcheck', 'static')
        def buildStatus = (verify == 1) ? 'Successful' : 'Failed'
        //g.commentInWorkspace("Build cppcheck ${buildStatus}: ${env.RUN_DISPLAY_URL}")
        cleanWs()
      }
    }
  }
}
