#!/bin/sh

set -eu

resolve_base_sha() {
    base_sha="${CI_MERGE_REQUEST_DIFF_BASE_SHA:-${CI_COMMIT_BEFORE_SHA:-}}"

    if [ -z "${base_sha}" ] || [ "${base_sha}" = "0000000000000000000000000000000000000000" ]; then
        base_sha="$(git rev-list --max-parents=0 HEAD)"
    fi

    printf '%s\n' "${base_sha}"
}

list_changed_files() {
    base_sha="$(resolve_base_sha)"
    git diff --name-only "${base_sha}" "${CI_COMMIT_SHA}" -- "$@"
}

list_new_files() {
    base_sha="$(resolve_base_sha)"
    git diff --diff-filter=A --name-only "${base_sha}" "${CI_COMMIT_SHA}" -- "$@"
}

list_modified_files() {
    base_sha="$(resolve_base_sha)"
    git diff --diff-filter=M --name-only "${base_sha}" "${CI_COMMIT_SHA}" -- "$@"
}
