#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Update the common kernel git sha and the GKI kernel prebuilts build ID.

# Tracking bug of aosp update event
GKI_UPDATE_BUG=${GKI_UPDATE_BUG:-"NA"}

# GKI boot image build-id
BOOT_IMAGE_BUILDID=${BOOT_IMAGE_BUILDID:-}

# GKI Kernel Branch (on aosp gerrit)
AOSP_BRANCH=${AOSP_BRANCH:-"android14-5.15"}

# Kernel Manifest
KERNEL_MANIFEST_BRANCH=${KERNEL_MANIFEST:-"android14-5.15-kirkwood-sdk"}
KERNEL_MANIFEST_URL="https://eureka-partner.googlesource.com/kirkwood/manifest"

# Whether or not to push commits to gerrit
PUSH=${PUSH:-0}

# Gerrit Topic
TOPIC=${TOPIC:-WK`date +%U`_AOSP_UPDATE_${KERNEL_MANIFEST_BRANCH}_TO_${AOSP_BRANCH}}

DEVICE_MODULES_DIR=${DEVICE_KERNEL_DIR:-"kernel_device_modules-5.15"}
DEVICE_MODULES_BRANCH="android14-5.15-kirkwood-sdk"

GKI_KERNEL_DIR=${GKI_KERNEL_DIR:-"kernel-5.15"}

CUR_DIR=$(pwd)

KERNEL_VERSION=""
KERNEL_PATCHLEVEL=""
KERNEL_SUBLEVEL=""
AOSP_COMMIT_INFO=""
KERNEL_HASH=""
KERNEL_VERSION_LABEL=""

MANIFEST_DIR="../.repo/manifests"
SDK_MANIFEST="sdk_only.xml"

#-----------------------------------------------------------------------
# Reset color
Color_Off='\033[0m'       # Text Reset
# Regular Colors
Green='\033[0;32m'        # Green
Yellow='\033[0;33m'       # Yellow

function exit_if_error() {
  if [ $1 -ne 0 ]; then
    echo "ERROR: $2: retval=$1" >&2
    cd ${CUR_DIR}
    exit $1
  fi
}

function usage() {
  cat <<- EOF
    Usage:

    BOOT_IMAGE_BUILDID:     The build ID of the prebuilt boot image to download.
    AOSP_BRANCH:            The GKI branch that the boot image is from.
    KERNEL_MANIFEST_BRANCH: The kernel manifest branch to use for syncing the kernel repos.
    PUSH:                   Optional: Whether or not to automatically push generated commits
                            to gerrit for review. This is set to 0 by default.
    GKI_UPDATE_BUG:         Optional: The bug number associated with this update.

   Sample invocation:

   GKI_UPDATE_BUG=308444147 BOOT_IMAGE_BUILDID=11010967 \\
   AOSP_BRANCH=android14-5.15-2023-08 \\
   KERNEL_MANIFEST_BRANCH=android14-5.15-kirkwood-sdk $0

   Note:
     You can set PUSH=1 when invoking $0 to automatically push the generated commits
     to gerrit for review.
EOF
}

function sanitize_args() {
  if [[ -z "${BOOT_IMAGE_BUILDID}" ]]; then
    usage
    exit 1
  elif [[ ! -d "${CUR_DIR}/${GKI_KERNEL_DIR}" ]]; then
    echo "Cannot find GKI kernel directory ${GKI_KERNEL_DIR}/" >&2
    exit 1
  elif [[ ! -d "${CUR_DIR}/${DEVICE_MODULES_DIR}" ]]; then
    echo "Cannot find device kernel directory ${DEVICE_MODULES_DIR}/" >&2
    exit 1
  fi
}

function sync_kernel_repos() {
  echo -e "\n${Yellow}Running repo init and syncing ${KERNEL_MANIFEST_BRANCH}${Color_Off}"

  repo init -q -u "${KERNEL_MANIFEST_URL}" -b "${KERNEL_MANIFEST_BRANCH}" -m "${SDK_MANIFEST}"
  exit_if_error $? "Failed to initialize kernel repo branch ${KERNEL_MANIFEST_BRANCH}"

  repo sync -q -cd -j$(nproc)
  exit_if_error $? "Failed to sync kernel repos"
}

function get_gki_kernel_info() {
  pushd ${CUR_DIR}/${GKI_KERNEL_DIR} > /dev/null

  KERNEL_VERSION=$(grep -r -m 1 "VERSION =" Makefile | sed 's/.*VERSION = //g')
  KERNEL_PATCHLEVEL=$(grep -r -m 1 "PATCHLEVEL =" Makefile | \
                      sed 's/.*PATCHLEVEL = //g')
  KERNEL_SUBLEVEL=$(grep -r -m 1 "SUBLEVEL =" Makefile | \
                    sed 's/.*SUBLEVEL = //g')
  AOSP_COMMIT_INFO=$(git log --pretty=format:'%h %s' -1)
  KERNEL_HASH=$(git log --pretty=format:'%h' -1)
  KERNEL_VERSION_LABEL=$(git tag --contains ${KERNEL_HASH})

  popd > /dev/null
}

function update_manifest_and_sync_gki_kernel() {
  local rev_current_aosp
  local ci_url="https://ci.android.com/builds/submitted/${BOOT_IMAGE_BUILDID}/kernel_aarch64/latest/raw/manifest_${BOOT_IMAGE_BUILDID}.xml"

  wget ${ci_url}
  exit_if_error $? "Unable to download manifest_${BOOT_IMAGE_BUILDID}.xml"

  REV_NEW_AOSP=$(grep -r "=\"kernel/common\""\
                 manifest_${BOOT_IMAGE_BUILDID}.xml | \
                 sed 's/.*revision="//g'| sed 's/".*//g')
  rm manifest_${BOOT_IMAGE_BUILDID}.xml

  rev_current_aosp=$(repo info kernel/common | grep "Current revision" | \
                     sed 's/Current revision: //g')

  pushd ${MANIFEST_DIR} > /dev/null

  sed -i "s/${rev_current_aosp}/${REV_NEW_AOSP}/" ${SDK_MANIFEST}

  popd > /dev/null

  echo -e "\n${Yellow}Syncing the GKI kernel to new revision: ${REV_NEW_AOSP}${Color_Off}"
  repo sync -q -cd -j$(nproc) kernel/common
  exit_if_error $? "Unable to sync ${GKI_KERNEL_DIR}/"
}

function commit_and_push_manifest_update() {
  local merge_msg=$(printf "%s\n%s\n%s\n%s\n%s\n%s"\
  "Update sync point to ${KERNEL_VERSION_LABEL}(${KERNEL_VERSION}.${KERNEL_PATCHLEVEL}.${KERNEL_SUBLEVEL})"\
  ""\
  "Sync LOG:"\
  "${AOSP_COMMIT_INFO}"\
  ""\
  "Bug: ${GKI_UPDATE_BUG}"\
  )

  pushd ${MANIFEST_DIR} > /dev/null

  git add ${SDK_MANIFEST}
  git commit --quiet -s -m "${merge_msg}"

  if [[ $PUSH -eq 1 ]]; then
    echo -e "\n${Yellow}Pushing manifest updates...${Color_Off}"
    git push origin HEAD:refs/for/${KERNEL_MANIFEST_BRANCH} -o topic=${TOPIC}
  fi

  popd > /dev/null
}

function update_gki_kernel() {
  get_gki_kernel_info

  echo -e "\n${Green}Current GKI Kernel Info${Color_Off}"
  echo -e "KERNEL_VERSION = [${Green}${KERNEL_VERSION}${Color_Off}]"
  echo -e "KERNEL_PATCHLEVEL = [${Green}${KERNEL_PATCHLEVEL}${Color_Off}]"
  echo -e "KERNEL_SUBLEVEL = [${Green}${KERNEL_SUBLEVEL}${Color_Off}]"
  echo -e "AOSP_COMMIT_INFO = [${Green}${AOSP_COMMIT_INFO}${Color_Off}]"
  echo -e "KERNEL_HASH = [${Green}${KERNEL_HASH}${Color_Off}]"
  echo -e "KERNEL_VERSION_LABEL = [${Green}${KERNEL_VERSION_LABEL}${Color_Off}]\n"

  update_manifest_and_sync_gki_kernel

  get_gki_kernel_info
  echo -e "\n${Green}New GKI Kernel Info:${Color_Off}"
  echo -e "KERNEL_VERSION = [${Green}${KERNEL_VERSION}${Color_Off}]"
  echo -e "KERNEL_PATCHLEVEL = [${Green}${KERNEL_PATCHLEVEL}${Color_Off}]"
  echo -e "KERNEL_SUBLEVEL = [${Green}${KERNEL_SUBLEVEL}${Color_Off}]"
  echo -e "AOSP_COMMIT_INFO = [${Green}${AOSP_COMMIT_INFO}${Color_Off}]"
  echo -e "KERNEL_HASH = [${Green}${KERNEL_HASH}${Color_Off}]"
  echo -e "KERNEL_VERSION_LABEL = [${Green}${KERNEL_VERSION_LABEL}${Color_Off}]\n"

  commit_and_push_manifest_update
}

function get_boot_image_build_time_info() {
  local ci_url="https://ci.android.com/builds/submitted/${BOOT_IMAGE_BUILDID}/kernel_aarch64/latest/raw/COPIED"
  wget ${ci_url}
  exit_if_error $? "Unable to download COPIED"

  local date_regex="([0-9]{4})-([0-9]{2})-([0-9]{2})"

  local raw_content=$(grep -E "$date_regex" "COPIED" | head -n 1)
  exit_if_error $? "Date information not found in the file."

  rm COPIED

  # --- Search for the date using regex ---
  if [[ "$raw_content" =~ $date_regex ]]; then
      local extracted_year="${BASH_REMATCH[1]}"
      local extracted_month="${BASH_REMATCH[2]}"
      local extracted_day="${BASH_REMATCH[3]}"
      echo "${extracted_year}-${extracted_month}-${extracted_day}"
  else
      echo "NA"
  fi
}

function update_gki_prebuilts_id() {
  local current_build_id
  local boot_image_build_date=$(get_boot_image_build_time_info)
  local merge_msg=$(printf "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s" \
    "Update the GKI prebuilt build ID to ${AOSP_BRANCH}-ab/${BOOT_IMAGE_BUILDID}" \
    "" \
    "Use GKI prebuilt binaries from ab/${BOOT_IMAGE_BUILDID}" \
    "" \
    "AOSP branch name: ${AOSP_BRANCH}" \
    "Build ID: ab/${BOOT_IMAGE_BUILDID}" \
    "Boot image build date: ${boot_image_build_date}" \
    "" \
    "Bug: ${GKI_UPDATE_BUG}" \
  )

  echo -e "\n${Yellow}Updating GKI prebuilts build ID to: ${BOOT_IMAGE_BUILDID} with SHA: ${REV_NEW_AOSP} ...${Color_Off}"

  pushd ${CUR_DIR}/${DEVICE_MODULES_DIR} > /dev/null

  current_build_id=$(grep -e "gki_prebuilts=[0-9]*" ./device.bazelrc | grep -oe "[0-9]*")

  sed -i "s/${current_build_id}/${BOOT_IMAGE_BUILDID}/" ./device.bazelrc

  git add device.bazelrc
  git commit --quiet -s -m "${merge_msg}"

  if [[ $PUSH -eq 1 ]]; then
    echo -e "\n${Yellow}Pushing updates to GKI build ID${Color_Off}"
    git push eureka-partner HEAD:refs/for/${DEVICE_MODULES_BRANCH} -o topic=${TOPIC}
  fi

  popd > /dev/null
}

function log_push_disabled_notice() {
  cat <<- EOF
    Commits have been generated for integrating ACK SHA ${REV_NEW_AOSP}
    but have not been pushed to gerrit.

    To ensure that the commits are pushed to gerrit, rerun the script with
    PUSH=1 or push each commit to gerrit manually with the following
    commands:

    # Manifest update
    cd ${MANIFEST_DIR}
    git push origin HEAD:refs/for/${KERNEL_MANIFEST_BRANCH}
    cd ..

    # Device modules update
    cd ${DEVICE_MODULES_DIR}
    git push eureka-partner HEAD:refs/for/${DEVICE_MODULES_BRANCH}
    cd ..
EOF
}

sanitize_args

echo -e "\nBegin.\n"
echo -e "TOPIC = [${Green}${TOPIC}${Color_Off}]"

sync_kernel_repos

update_gki_kernel

update_gki_prebuilts_id

echo -e "\nDone.\n"

if [[ $PUSH -ne 1 ]]; then
  log_push_disabled_notice
fi
