#!/bin/bash

. arch-arm-cross-config.sh
arm_arch=$(determine_arch_name "$0") || {
    echo "Cannot determine ARM arch name" >&2
    exit 1
}
case ${arm_arch} in
    armv7)
        arch_name=arm
        ;;
    armv8)
        arch_name=aarch64
        ;;
    *)
        echo "Unsupported ARM arch name: $arm_arch" >&2
        ;;
esac

export ARCH_ARM_CROSS_SYSROOT="${ARCH_ARM_CROSS_PKG_ROOT}/${arm_arch}/"

[[ -z $PACMAN_ARM_CROSS_CONFIG ]] || set -- --config "$PACMAN_ARM_CROSS_CONFIG"
[[ -z $PACMAN_ARM_CROSS_ROOT ]] || set -- -r "$PACMAN_ARM_CROSS_ROOT"
[[ -z $PACMAN_ARM_CROSS_DBPATH ]] || set -- -b "$PACMAN_ARM_CROSS_DBPATH"
[[ -z $PACMAN_ARM_CROSS_CACHEDIR ]] ||
    set -- --cachedir "$PACMAN_ARM_CROSS_CACHEDIR"
[[ -z $PACMAN_ARM_CROSS_LOGFILE ]] ||
    set -- --logfile "$PACMAN_ARM_CROSS_LOGFILE"
[[ -z $PACMAN_ARM_CROSS_GPGDIR ]] ||
    set -- --gpgdir "$PACMAN_ARM_CROSS_GPGDIR"

dbpath_set=0
cachedir_set=0
logfile_set=0
gpgdir_set=0
config_set=0

for ((i = 1;i <= $#;i++)); do
    arg=${!i}
    case "${arg}" in
        --config)
            ((i++))
            config_set=1
            ;;
        -r|--root)
            ((i++))
            export ARCH_ARM_CROSS_SYSROOT="${!i}"
            ;;
        -b|--dbpath)
            ((i++))
            dbpath_set=1
            DBPATH=${!i}
            ;;
        --cachedir)
            ((i++))
            cachedir_set=1
            ;;
        --logfile)
            ((i++))
            logfile_set=1
            ;;
        --gpgdir)
            ((i++))
            gpgdir_set=1
            ;;
    esac
done

((config_set)) || set -- --config "${DATA_DIR}/pacman-${arm_arch}.conf" "$@"
((dbpath_set)) || {
    DBPATH=${ARCH_ARM_CROSS_SYSROOT}/var/lib/pacman
    set -- --dbpath "${DBPATH}" "$@"
}
((cachedir_set)) ||
    set -- --cachedir "${ARCH_ARM_CROSS_SYSROOT}/var/cache/pacman/pkg/" "$@"
((logfile_set)) ||
    set -- --logfile "${ARCH_ARM_CROSS_SYSROOT}/var/log/pacman.log" "$@"
((gpgdir_set)) ||
    set -- --gpgdir "${ARCH_ARM_CROSS_SYSROOT}/etc/pacman.d/gnupg/" "$@"

# Suppress error messages for directory preparation since certain operations
# does not require them and pacman will generate error message when necessary
{
    mkdir -p "${DBPATH}"
    "${EXEC_DIR}/prepare-chroot" "${arch_name}" "${ARCH_ARM_CROSS_SYSROOT}"
} &> /dev/null

exec pacman "$@"
