#!/bin/bash -ex
usage () {
    echo "Create a Mixed Build archive with the given system and device archives."
    echo
    echo "Usage: $0 [-v <vendor_version>] [-m <modify_system_image_path>]"
    echo "    [-t <prebuilt_otatools_path>] [-p <override_vbmeta_image_path>]"
    echo "    [-b <override_boot_image_path>]"
    echo "    [-s] system_build_dir device_build_dir out_dir [check_tool]"
    echo
    echo "Options -v, -m, -t, -p, -b, -s must precede positional arguments."
    echo
    echo "vendor_version is the version of the vendor image when Keymaster v3"
    echo "    related modifications to the system image is necessary. Optional."
    echo "    eg. 8.1.0 for a mixed build of GSI and O-MR1 vendor image."
    echo "modify_system_image_path is the path to the script that modifies the"
    echo "    system image, needed for Keymaster v3. Optional."
    echo "prebuilt_otatools_path is the path to otatools.zip file that has all"
    echo "    required host binaries to modify system image. Optional."
    echo "override_vbmeta_image_path is the path to a vbmeta.img to use"
    echo "    to override the existing vbmeta.img of device. Optional."
    echo "override_boot_image_path is the path to a boot imgage to use to"
    echo "    override the existing boot.img of device. Optional."
    echo "-s is used to fetch and flash both product.img and system.img from"
    echo "    the system_build_dir for devices with a product partition."
    echo "    product.img will be removed if system_build_dir does not have"
    echo "    product.img when -s option is declared."
    echo "    By default, only system.img is flashed to the target device for"
    echo "    independent system update. No parameter required. Optional"
    echo "system_build_dir is the path to the system build"
    echo "    eg. aosp_arm64_ab-userdebug."
    echo "device_build_dir is the path to the device build"
    echo "    eg. sailfish-user."
    echo "out_dir is the path to where the new build will be placed."
    echo "check_tool is the path to the checkvintf executable that will be"
    echo "    used to verify the compatibility of the given images. Optional."
}

# Print error message and exit.
# Usage: exit_badparam message
#
# message is a string to be displayed before exit.
exit_badparam () {
    echo "ERROR: $1" >&2
    usage
    exit 1
}

cleanup_and_exit () {
    readonly result="$?"
    rm -rf "$TEMP_DIR"
    exit "$result"
}

trap cleanup_and_exit EXIT

while getopts :v:m:p:b:t:s opt; do
    case "$opt" in
        v)
            readonly VENDOR_VERSION="$OPTARG"
            ;;
        m)
            readonly MODIFY_SYSTEM_SCRIPT="$OPTARG"
            ;;
        p)
            readonly OVERRIDE_VBMETA_IMAGE_PATH="$OPTARG"
            ;;
        b)
            readonly OVERRIDE_BOOT_IMAGE_PATH="$OPTARG"
            ;;
        t)
            readonly OTATOOLS_ZIP="$OPTARG"
            ;;
        s)
            readonly INCLUDE_PRODUCT=true
            ;;
        \?)
            exit_badparam "Invalid options: -"$OPTARG""
            ;;
        :)
            exit_badparam "Option -"$OPTARG" requires an argument."
            ;;
    esac
done

if [[ -z "${VENDOR_VERSION+x}" && ! -z "${MODIFY_SYSTEM_SCRIPT+x}" ]] || [[ ! -z "${VENDOR_VERSION+x}" && -z "${MODIFY_SYSTEM_SCRIPT+x}" ]]; then
    exit_badparam "Options -v and -m must be set together."
fi

shift "$((OPTIND-1))"

if [[ $# -lt 3 ]]; then
    exit_badparam "Unexpected number of arguments"
fi

readonly SYSTEM_DIR="$1"
readonly DEVICE_DIR="$2"
readonly DIST_DIR="$3"
readonly CHECK_TOOL="$4"
readonly TEMP_DIR="$(mktemp -d /tmp/"$(basename $0)"_XXXXXXXX)"

readonly SYSTEM_TARGET_FILES_ARCHIVE="$(find "$SYSTEM_DIR" -name "*-target_files-*.zip" -print)"
if [[ ! -f "$SYSTEM_TARGET_FILES_ARCHIVE" ]]; then
    exit_badparam "Could not find system target files archive in $SYSTEM_DIR."
fi

readonly DEVICE_ARCHIVE="$(find "$DEVICE_DIR" -name "*-img-*.zip" -print)"
if [[ ! -f "$DEVICE_ARCHIVE" ]]; then
    exit_badparam "Could not find device img archive in $DEVICE_DIR."
fi

readonly DEVICE_TARGET_FILES_ARCHIVE="$(find "$DEVICE_DIR" -name "*-target_files-*.zip" -print)"
if [[ ! -f "$DEVICE_TARGET_FILES_ARCHIVE" ]]; then
    exit_badparam "Could not find device target_files archive in $DEVICE_DIR."
fi

if [[ ! -z "${MODIFY_SYSTEM_SCRIPT+x}" && ! -f "$MODIFY_SYSTEM_SCRIPT" ]]; then
    exit_badparam "Script not found: "$MODIFY_SYSTEM_SCRIPT""
fi

if [[ ! -z "${OVERRIDE_VBMETA_IMAGE_PATH+x}" && ! -f "$OVERRIDE_VBMETA_IMAGE_PATH" ]]; then
    exit_badparam "Specified vbmeta.img not found: "$OVERRIDE_VBMETA_IMAGE_PATH""
fi

if [[ ! -z "${OVERRIDE_BOOT_IMAGE_PATH+x}" && ! -f "$OVERRIDE_BOOT_IMAGE_PATH" ]]; then
    exit_badparam "Specified boot image not found: "$OVERRIDE_BOOT_IMAGE_PATH""
fi

readonly DEVICE_ARTIFACTS_DIR="$TEMP_DIR"/device_archive_artifacts
readonly DEVICE_IMAGES_DIR="$DEVICE_ARTIFACTS_DIR"/IMAGES
readonly SYSTEM_ARTIFACTS_DIR="$TEMP_DIR"/system_artifacts
readonly SYSTEM_IMAGES_DIR="$SYSTEM_ARTIFACTS_DIR"/IMAGES
readonly OTATOOLS_DIR="$TEMP_DIR"/otatools

readonly SPL_PROPERTY_NAME="ro.build.version.security_patch"
readonly SYSTEM_BUILD_PROP="SYSTEM/build.prop"

###
# Uncompress the archives.
declare -a EXTRACT_FILE_LIST
EXTRACT_FILE_LIST=(
    IMAGES/system.img \
    IMAGES/vbmeta.img \
    META/system_matrix.xml \
    META/system_manifest.xml \
    "$SYSTEM_BUILD_PROP" \
)

if [[ "$INCLUDE_PRODUCT" == true ]]; then
  unzip -l "$SYSTEM_TARGET_FILES_ARCHIVE" | grep -q IMAGES/product.img &&
  EXTRACT_FILE_LIST+=(IMAGES/product.img)
fi

mkdir -p "$SYSTEM_ARTIFACTS_DIR"
# Get the system images and meta data.
# ${EXTRACT_FILE_LIST[*]} cannot be quoted to list each file for unzipping
unzip "$SYSTEM_TARGET_FILES_ARCHIVE" ${EXTRACT_FILE_LIST[*]} -d "$SYSTEM_ARTIFACTS_DIR"

mkdir -p "$DEVICE_IMAGES_DIR"
# Get the device images.
unzip "$DEVICE_ARCHIVE" -d "$DEVICE_IMAGES_DIR"
# Get the device meta data.
unzip "$DEVICE_TARGET_FILES_ARCHIVE" \
  META/vendor_matrix.xml META/vendor_manifest.xml "$SYSTEM_BUILD_PROP" \
  -d "$DEVICE_ARTIFACTS_DIR"

if [[ -f "$OTATOOLS_ZIP" ]]; then
    # Uncompress otatools
    mkdir -p "$OTATOOLS_DIR"
    unzip "$OTATOOLS_ZIP" bin/* lib64/* -d "$OTATOOLS_DIR"
    # Set paths for using prebuilt host binaries.
    export PATH="$OTATOOLS_DIR"/bin:"$PATH"
    export LD_LIBRARY_PATH="$OTATOOLS_DIR"/lib64:"$LD_LIBRARY_PATH"
fi

###
# Check compatibility between the system and device.
if [[ -f "$CHECK_TOOL" ]]; then
    chmod 755 "$CHECK_TOOL"
    "$CHECK_TOOL" \
        "$DEVICE_ARTIFACTS_DIR"/META/vendor_manifest.xml \
        "$SYSTEM_ARTIFACTS_DIR"/META/system_matrix.xml
    "$CHECK_TOOL" \
        "$SYSTEM_ARTIFACTS_DIR"/META/system_manifest.xml \
        "$DEVICE_ARTIFACTS_DIR"/META/vendor_matrix.xml
fi

###
# Modify system.img if vendor version is provided.
if [[ ! -z "${VENDOR_VERSION+x}" ]]; then
    # Create copy of system target files package that can be modified
    # since the original $SYSTEM_TARGET_FILES_ARCHIVE is a symlink to
    # prebuilt files in cache
    cp "$SYSTEM_TARGET_FILES_ARCHIVE" "$TEMP_DIR"
    readonly COPY_SYSTEM_TARGET_FILES_ARCHIVE="$TEMP_DIR"/"$(basename "$SYSTEM_TARGET_FILES_ARCHIVE")"

    # Check compatibility of security patch level
    readonly SYSTEM_SPL=$(sed -n -r "s/^"$SPL_PROPERTY_NAME"=(.*)$/\1/p" "$SYSTEM_ARTIFACTS_DIR"/"$SYSTEM_BUILD_PROP")
    readonly VENDOR_SPL=$(sed -n -r "s/^"$SPL_PROPERTY_NAME"=(.*)$/\1/p" "$DEVICE_ARTIFACTS_DIR"/"$SYSTEM_BUILD_PROP")
    declare -a args
    args=(-v "$VENDOR_VERSION" "$COPY_SYSTEM_TARGET_FILES_ARCHIVE")
    if [[ "$SYSTEM_SPL" != "$VENDOR_SPL" ]]; then
        echo "Security patch level mismatch detected..."
        echo "  SPL of system: "$SYSTEM_SPL""
        echo "  SPL of vendor: "$VENDOR_SPL""
        args+=("$VENDOR_SPL")
    fi
    "$MODIFY_SYSTEM_SCRIPT" "${args[@]}"
    # Replace system.img with newly modified system.img
    unzip -o "$COPY_SYSTEM_TARGET_FILES_ARCHIVE" IMAGES/system.img -d "$SYSTEM_ARTIFACTS_DIR"
fi

###
# Overwrite artifacts in the device archive to create the Mixed Build artifacts.
cp "$SYSTEM_IMAGES_DIR"/system.img "$DEVICE_IMAGES_DIR"/
if [[ "$INCLUDE_PRODUCT" == true ]]; then
  if [[ -f "$SYSTEM_IMAGES_DIR"/product.img ]]; then
    cp "$SYSTEM_IMAGES_DIR"/product.img "$DEVICE_IMAGES_DIR"/
  else
    rm -f "$DEVICE_IMAGES_DIR"/product.img
    # Removed product partition from required partition list
    sed -i "/partition-exists=product$/d" "$DEVICE_IMAGES_DIR"/android-info.txt
  fi
fi

# Only override vbmeta if it is already present since fastboot update will try
# to flash whatever is in the archive.
if [[ -f "$DEVICE_IMAGES_DIR"/vbmeta.img ]]; then
    readonly VBMETA_IMAGE_PATH="${OVERRIDE_VBMETA_IMAGE_PATH:-"$SYSTEM_IMAGES_DIR"/vbmeta.img}"
    cp "$VBMETA_IMAGE_PATH" "$DEVICE_IMAGES_DIR"/
fi

# Override boot.img with the provided boot image file since fastboot update cmd
# will try to flash boot.img in the archive.
if [[ ! -z "${OVERRIDE_BOOT_IMAGE_PATH+x}" && -f "$DEVICE_IMAGES_DIR"/boot.img ]]; then
    cp "$OVERRIDE_BOOT_IMAGE_PATH" "$DEVICE_IMAGES_DIR"/boot.img
fi

###
# Create the Mixed Build archive.
(
    cd "$DEVICE_IMAGES_DIR"
    zip -r mixed.zip ./*
)

###
# Archive the artifacts.
if [ -n "$DIST_DIR" ]; then
    mkdir -p "$DIST_DIR" || true
fi
# Archive all the device artifacts.
rsync --archive --verbose --copy-links --exclude='logs' \
  "$DEVICE_DIR"/* "$DIST_DIR"
# Overwrite the image archive with the Mixed Build archive.
OUT_ARCHIVE="$DIST_DIR"/"$(basename $DEVICE_ARCHIVE)"
cp "$DEVICE_IMAGES_DIR"/mixed.zip "$OUT_ARCHIVE"
# Overwrite android-info.txt with the updated one.
cp "$DEVICE_IMAGES_DIR"/android-info.txt "$DIST_DIR"/
