#!/usr/bin/env groovy
// -----------------------------------------------------------------------
// Copyright 2021-2024 Open Networking Foundation (ONF) and the ONF Contributors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// -----------------------------------------------------------------------

// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
def getIam(String func)
{
    String src = 'vars/getVolthaCode.groovy'
    String iam = [src, func].join('::')
    return iam
}

// -----------------------------------------------------------------------
// Intent: Log progress message
// -----------------------------------------------------------------------
void enter(String name) {
    // Announce ourselves for log usability
    String iam = getIam(name)
    println("${iam}: ENTER")
    return
}

// -----------------------------------------------------------------------
// Intent: Log progress message
// -----------------------------------------------------------------------
void leave(String name) {
    // Announce ourselves for log usability
    String iam = getIam(name)
    println("${iam}: LEAVE")
    return
}

// TODO the 3 stages are very similar, most of the code can be shared

// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
def wrapped(Map config)
{
    def defaultConfig = [
        branch: "master",
        gerritProject: "",
        gerritRefspec: "",
        volthaSystemTestsChange: "",
        volthaHelmChartsChange: "",
    ]

    def cfg = defaultConfig + config

    println("""

** -----------------------------------------------------------------------
** Downloading VOLTHA code with the following parameters:
**   ${cfg}
** -----------------------------------------------------------------------
""")

    stage('Download Patch')
    {
        frequent_repos = [
            '',
            'voltha-system-tests',
            'voltha-helm-charts',
        ]

        // We are always downloading those repos, if the patch under test is in one of those
        // just checkout the patch, no need to clone it again
        if (cfg.gerritProject == '')
        {
            // Revisit:
            // gerritProject should be defined.  Ignore when empty was likely
            // added to support manually re-running a job when repo values
            // may not be defined.
            // Unfortunately the conditional can also inadvertently bypass
            // checkout during an error condition.
            // Case: when cfg= is invalid due to a jenkins hiccup.
        }
        else if (!(cfg.gerritProject in frequent_repos))
        {
            repo_project = "https://gerrit.opencord.org/${cfg.gerritProject}"

            checkout([
                $class: 'GitSCM',
                userRemoteConfigs: [[ url:repo_project ]],
                branches: [[ name: "${cfg.branch}", ]],
                extensions: [
                    [$class: 'WipeWorkspace'],
                    [$class: 'RelativeTargetDirectory', relativeTargetDir: "${cfg.gerritProject}"],
                    [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
                ],
            ])

            sh("""
        pushd $WORKSPACE/${cfg.gerritProject}
        git fetch "$repo_project" ${cfg.gerritRefspec} && git checkout FETCH_HEAD

        echo "Currently on commit: \n"
        git log -1 --oneline
        popd
      """)
        }
    }

    // -----------------------------------------------------------------------
    // -----------------------------------------------------------------------
    stage('Clone voltha-system-tests')
    {
        enter("Clone voltha-system-tests @ BRANCH=[${cfg.branch}]")
        println("""

** -----------------------------------------------------------------------
** Clone voltha-system-tests
** -----------------------------------------------------------------------
""")
        repo_vst = 'https://gerrit.opencord.org/voltha-system-tests'

        checkout([
            $class: 'GitSCM',
            userRemoteConfigs: [[ url:repo_vst ]],
            branches: [[ name: "${cfg.branch}", ]],
            extensions: [
                [$class: 'WipeWorkspace'],
                [$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-system-tests"],
                [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
            ],
        ])

        if (cfg.volthaSystemTestsChange != '' && cfg.gerritProject != 'voltha-system-tests')
            {
            enter("git fetch repo_vst=[${repo_vst}]")

            sh """
        cd "$WORKSPACE/voltha-system-tests"
        git fetch "${repo_vst}" ${cfg.volthaSystemTestsChange} && git checkout FETCH_HEAD
      """
            leave("git fetch repo_vst=[${repo_vst}]")
        }
        else if (cfg.gerritProject == 'voltha-system-tests') {
            enter("git fetch https://${cfg.gerritProject}")

            sh("""
        pushd "$WORKSPACE/${cfg.gerritProject}"
        git fetch https://gerrit.opencord.org/${cfg.gerritProject} ${cfg.gerritRefspec} && git checkout FETCH_HEAD

        echo "Currently on commit: \n"
        git log -1 --oneline
        popd
      """)
            leave("git fetch https://${cfg.gerritProject}")
        }

        leave("Clone voltha-system-tests @ BRANCH=[${cfg.branch}]")
    }

    // -----------------------------------------------------------------------
    // -----------------------------------------------------------------------
    stage('Clone voltha-helm-charts')
    {
        enter("Clone voltha-helm-charts @ BRANCH=[${cfg.branch}]")
        repo_vhc = 'https://gerrit.opencord.org/voltha-helm-charts'

        checkout([
            $class: 'GitSCM',
            userRemoteConfigs: [[ url:repo_vhc ]],
            branches: [[ name: "${cfg.branch}", ]],
            extensions: [
                [$class: 'WipeWorkspace'],
                [$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-helm-charts"],
                [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
            ],
        ])

        if (cfg.volthaHelmChartsChange != '' && cfg.gerritProject != 'voltha-helm-charts') {
            enter("git fetch repo_vhc=[$repo_vhc]")
            sh """
        cd "$WORKSPACE/voltha-helm-charts"
        git fetch "$repo_vhc" ${cfg.volthaHelmChartsChange} && git checkout FETCH_HEAD
      """ 
            leave("git fetch repo_vhc=[$repo_vhc]")
        }
        else if (cfg.gerritProject == 'voltha-helm-charts') {
            enter('cfg.gerritProject == voltha-helm-charts')
            sh """
        pushd "$WORKSPACE/${cfg.gerritProject}"
        git fetch "https://gerrit.opencord.org/${cfg.gerritProject}" ${cfg.gerritRefspec} && git checkout FETCH_HEAD

        echo "Currently on commit: \n"
        git log -1 --oneline
        popd
      """
            leave('cfg.gerritProject == voltha-helm-charts')
        }

        leave("Clone voltha-helm-charts @ BRANCH=[${cfg.branch}]")
    }
}

// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
def call(Map config)
{
    String iam = getIam('main')
    Boolean debug = true

    if (debug) {
        println("** ${iam}: ENTER")
    }

    config ?: [:]

    try
    {
        wrapped(config)
    }
    catch (Exception err)
    {
        println("** ${iam}: EXCEPTION ${err}")
        throw err
    }
    finally
    {
        if (debug)
            {
            println("** ${iam}: LEAVE")
        }
    }

    return
}

// [EOF]
