#!/bin/sh -efu

. shell-error

### hasher environment support

# global variables: can be overrided by .alterator-rules
HASHER_INIT_PROG="hsh --initroot"
HASHER_CLEAN_PROG="hsh --clean"
HASHER_INSTALL_PROG="hsh-install"
HASHER_EXEC_PROG="hsh-run --rooter"
HASHER_WORKDIR="$TMPDIR"

hsh_env_setup()
{
    local work_dir="$1";shift
    local project_dir="$1";shift
    local rpm_arch="$(rpm --eval '%_host_cpu')"

    $HASHER_INIT_PROG --target="$rpm_arch" "$work_dir"

    for i in "$@";do
	$HASHER_INSTALL_PROG "$work_dir" "$i"
    done

    local out_dir="$work_dir/chroot/.in"
    mkdir -p "$out_dir"
    cp -a "$project_dir" "$out_dir"
}

hsh_env_teardown()
{
    local work_dir="$1";shift

    $HASHER_CLEAN_PROG "$work_dir"
    rm -rf -- "$work_dir"
}

hsh_env_run()
{
    local work_dir="$1";shift
    $HASHER_EXEC_PROG "$work_dir" -- "$@"
}

### main

TEST_REQUIRES="alterator alterator-sh-functions ${TEST_REQUIRES}"

case "${TEST_ENVIRONMENT}" in
    hasher)
	hsh_env_setup "$HASHER_WORKDIR" "${TEST_PROJECT_DIR:-.}" $TEST_REQUIRES
	hsh_env_run "$HASHER_WORKDIR" "${TEST_PROGRAM:-./runtests}"
	;;
    *)
	fatal "unknown test environment:$TEST_ENVIRONMENT"
	;;
esac
