// This keyword will install the voltctl based on the branch (e.g.: voltha-2.8 or master)
def call(String branch) {

  def voltctlVersion = ""
  if (branch == "voltha-2.8") {
    voltctlVersion = "1.6.11"
  } else if (branch == "voltha-2.9") {
    voltctlVersion = "1.7.4"
  } else if (branch == "voltha-2.10") {
    voltctlVersion = "1.7.6"
  } else {
    voltctlVersion = sh (
      script: "curl -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g'",
      returnStdout: true
    ).trim()
  }

  println "Installing voltctl version ${voltctlVersion} on branch ${branch}"

  sh returnStdout: false, script: """

    mkdir -p $WORKSPACE/bin
    cd $WORKSPACE
    HOSTOS=\$(uname -s | tr "[:upper:]" "[:lower:"])
    HOSTARCH=\$(uname -m | tr "[:upper:]" "[:lower:"])
    if [ \$HOSTARCH == "x86_64" ]; then
       HOSTARCH="amd64"
    fi
    curl -o $WORKSPACE/bin/voltctl -sSL https://github.com/opencord/voltctl/releases/download/v${voltctlVersion}/voltctl-${voltctlVersion}-\${HOSTOS}-\${HOSTARCH}
    chmod 755 $WORKSPACE/bin/voltctl
    voltctl version --clientonly
  """
}
