#!/bin/bash
. /home/jenkins/ci_check/src/lib/lib.sh

# 64k variant support
variant="${variant:-""}"
if [[ -n "$variant" ]]; then
    variant_suffix="_${variant}"
else
    variant_suffix=""
fi

# debug测试变量
function config_debug_variable() {
  repo_server_test_tail=""
}
config_debug_variable

# 启动ipv6 loopback
function config_ipv6() {
  log_info "***** Start to config ipv6 *****"
  sudo sysctl net.ipv6.conf.lo.disable_ipv6=0 &>/dev/null
  log_info "***** End to config ipv6 *****"
}

function save_build_result() {
  log_info "***** Start to save build result *****"
  committer_pr_x86_64_dir="/repo/openeuler/src-openeuler${repo_server_test_tail}/${gitcodeTargetBranch}/${gitcodeCommitter}/${gitcodeRepoName}/x86_64/${gitcodePullRequestId}/"
  committer_pr_aarch64_dir="/repo/openeuler/src-openeuler${repo_server_test_tail}/${gitcodeTargetBranch}/${gitcodeCommitter}/${gitcodeRepoName}/aarch64/${gitcodePullRequestId}/"
  committer_pr_riscv64_dir="/repo/openeuler/src-openeuler${repo_server_test_tail}/${gitcodeTargetBranch}/${gitcodeCommitter}/${gitcodeRepoName}/riscv64/${gitcodePullRequestId}/"
  global_x86_64_dir="/repo/openeuler/src-openeuler${repo_server_test_tail}/${gitcodeTargetBranch}/0X080480000XC0000000/${gitcodeRepoName}/x86_64/"
  global_aarch64_dir="/repo/openeuler/src-openeuler${repo_server_test_tail}/${gitcodeTargetBranch}/0X080480000XC0000000/${gitcodeRepoName}/aarch64/"
  global_riscv64_dir="/repo/openeuler/src-openeuler${repo_server_test_tail}/${gitcodeTargetBranch}/0X080480000XC0000000/${gitcodeRepoName}/riscv64/"

  # variant dirs
  variant_dir_cmds=""
  if [[ -n "${variant_suffix}" ]]; then
    committer_pr_aarch64_variant_dir="/repo/openeuler/src-openeuler${repo_server_test_tail}/${gitcodeTargetBranch}/${gitcodeCommitter}/${gitcodeRepoName}/aarch64${variant_suffix}/${gitcodePullRequestId}/"
    global_aarch64_variant_dir="/repo/openeuler/src-openeuler${repo_server_test_tail}/${gitcodeTargetBranch}/0X080480000XC0000000/${gitcodeRepoName}/aarch64${variant_suffix}/"
    variant_dir_cmds="
if [[ -d \"$committer_pr_aarch64_variant_dir\" && (\"\$(ls -A $committer_pr_aarch64_variant_dir | grep '\\.rpm\$')\" || \"\$(ls -A $committer_pr_aarch64_variant_dir | grep '\\.json\$')\") ]]; then
	if [[ ! -d \"$global_aarch64_variant_dir/report\" ]]; then
		mkdir -p $global_aarch64_variant_dir/report
	fi
	if [[ -d \"$global_aarch64_variant_dir\" && \"\$(ls -A $global_aarch64_variant_dir | grep '\\.rpm\$')\" ]]; then
		rm $global_aarch64_variant_dir/*.rpm
	fi

    if [[ -d \"$committer_pr_aarch64_variant_dir\" && \"\$(ls -A $committer_pr_aarch64_variant_dir | grep '\\.rpm\$')\" ]]; then
		cp $committer_pr_aarch64_variant_dir/*.rpm $global_aarch64_variant_dir/
	fi
	if [[ -d \"$committer_pr_aarch64_variant_dir\" && \"\$(ls -A $committer_pr_aarch64_variant_dir | grep '\\.json\$')\" ]]; then
		cp $committer_pr_aarch64_variant_dir/*.json $global_aarch64_variant_dir/report/
	fi
fi"
  fi

  log_info "***** Start to config remote shell *****"
  remote_place_cmd=$(
    cat <<EOF

if [[ -d "$committer_pr_x86_64_dir" && ("\$(ls -A $committer_pr_x86_64_dir | grep '\.rpm$')" || "\$(ls -A $committer_pr_x86_64_dir | grep '\.json$')") ]]; then
	if [[ ! -d "$global_x86_64_dir/report" ]]; then
		mkdir -p $global_x86_64_dir/report
	fi
	if [[ -d "$global_x86_64_dir" && "\$(ls -A $global_x86_64_dir | grep '\.rpm$')" ]]; then
		rm $global_x86_64_dir/*.rpm
	fi

    if [[ -d "$committer_pr_x86_64_dir" && "\$(ls -A $committer_pr_x86_64_dir | grep '\.rpm$')" ]]; then
		cp $committer_pr_x86_64_dir/*.rpm $global_x86_64_dir/
	fi
	if [[ -d "$committer_pr_x86_64_dir" && "\$(ls -A $committer_pr_x86_64_dir | grep '\.json$')" ]]; then
		cp $committer_pr_x86_64_dir/*.json $global_x86_64_dir/report/
	fi
fi
if [[ -d "$committer_pr_aarch64_dir" && ("\$(ls -A $committer_pr_aarch64_dir | grep '\.rpm$')" || "\$(ls -A $committer_pr_aarch64_dir | grep '\.json$')") ]]; then
	if [[ ! -d "$global_aarch64_dir/report" ]]; then
		mkdir -p $global_aarch64_dir/report
	fi
	if [[ -d "$global_aarch64_dir" && "\$(ls -A $global_aarch64_dir | grep '\.rpm$')" ]]; then
		rm $global_aarch64_dir/*.rpm
	fi

    if [[ -d "$committer_pr_aarch64_dir" && "\$(ls -A $committer_pr_aarch64_dir | grep '\.rpm$')" ]]; then
		cp $committer_pr_aarch64_dir/*.rpm $global_aarch64_dir/
	fi
	if [[ -d "$committer_pr_aarch64_dir" && "\$(ls -A $committer_pr_aarch64_dir | grep '\.json$')" ]]; then
		cp $committer_pr_aarch64_dir/*.json $global_aarch64_dir/report/
	fi
fi
if [[ -d "$committer_pr_riscv64_dir" && ("\$(ls -A $committer_pr_riscv64_dir | grep '\.rpm$')" || "\$(ls -A $committer_pr_riscv64_dir | grep '\.json$')") ]]; then
	if [[ ! -d "$global_riscv64_dir/report" ]]; then
		mkdir -p $global_riscv64_dir/report
	fi
	if [[ -d "$global_riscv64_dir" && "\$(ls -A $global_riscv64_dir | grep '\.rpm$')" ]]; then
		rm $global_riscv64_dir/*.rpm
	fi

    if [[ -d "$committer_pr_riscv64_dir" && "\$(ls -A $committer_pr_riscv64_dir | grep '\.rpm$')" ]]; then
		cp $committer_pr_riscv64_dir/*.rpm $global_riscv64_dir/
	fi
	if [[ -d "$committer_pr_riscv64_dir" && "\$(ls -A $committer_pr_riscv64_dir | grep '\.json$')" ]]; then
		cp $committer_pr_riscv64_dir/*.json $global_riscv64_dir/report/
	fi
fi
${variant_dir_cmds}

EOF
  )
  echo "$remote_place_cmd"
  echo "https://gitcode.com/src-openeuler/${gitcodeRepoName}/pull/${gitcodePullRequestId}"
  ssh -i ${SaveBuildRPM2Repo} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR root@${repo_server} "$remote_place_cmd"

  sed -i "s/dbhost=127.0.0.1/dbhost=${MysqldbHost}/g" ${JENKINS_HOME}/oecp/oecp/conf/oecp.conf
  sed -i "s/dbport=3306/dbport=${MysqldbPort}/g" ${JENKINS_HOME}/oecp/oecp/conf/oecp.conf
  python3 ${JENKINS_HOME}/oecp/cli.py -s ${gitcodeTargetBranch} --db-password ${MysqlUserPasswd:5} --pull-request-id ${gitcodeRepoName}-${gitcodePullRequestId} --submit-symbol

  log_info "***** End to save build result *****"
}

# 执行入口
function main() {
  config_ipv6
  save_build_result
}