#!/hint/bash
# SPDX-FileCopyrightText: 2024-2025 Eli Schwartz <eschwartz@gentoo.org>
# SPDX-License-Identifier: GPL-2.0-or-later

missingdeps() {
    local ninjadir=()
    mapfile -d "" ninjadir < <(find "${WORKDIR}" -name build.ninja -printf '%h\0')
    [[ ${#ninjadir[@]} = 0 ]] && return

    local dir missingdeps
    for dir in "${ninjadir[@]}"; do
        missingdeps=$(ninja -C "${dir}" -t missingdeps)
        if [[ $? != 3 ]]; then
            continue
        fi

        local line= genuine=
        while read -r line; do
            # phony rules are FP.
            if  [[ ${line} = "Missing dep:"* && ${line} != *"(generated by phony)" ]]; then
                genuine=1
                break
            fi
        done <<< "${missingdeps}"

        if [[ ${genuine} = 1 ]]; then
            eqawarn "QA Notice: missing ninja dependencies in ${dir}:"
            eqawarn
            eqawarn "${missingdeps}"
            echo
        fi
    done
}

missingdeps
: # guarantee successful exit
