#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2026 Bryan Joshua Pedini

# fake apt-cache (unit tests): show / rdepends / policy from data/apt/
# shellcheck source=../fakelib.bash
. "${BASH_SOURCE[0]%/*}/../fakelib.bash"
fake_log "$@"
pkgs=()
for a in "$@"; do case $a in -*) ;; *) pkgs+=("$a") ;; esac; done
verb=${pkgs[0]}
pkgs=("${pkgs[@]:1}")
case $verb in
show)
	f=$FAKE_DATA/apt/show/${pkgs[0]}
	if [[ ! -f $f ]] || fake_purged "${pkgs[0]}"; then
		echo "E: No packages found" >&2
		exit 100
	fi
	cat "$f"
	;;
rdepends)
	f=$FAKE_DATA/apt/rdepends/${pkgs[0]}
	if [[ -f $f ]]; then cat "$f"; else printf '%s\nReverse Depends:\n' "${pkgs[0]}"; fi
	;;
policy)
	# print the stanzas of the requested packages
	want=" ${pkgs[*]} "
	show=0
	while IFS= read -r line; do
		if [[ $line =~ ^([^ ].*):$ ]]; then
			if [[ $want == *" ${BASH_REMATCH[1]} "* ]]; then show=1; else show=0; fi
		fi
		((show)) && printf '%s\n' "$line"
	done <"$FAKE_DATA/apt/policy.txt"
	exit 0
	;;
*)
	echo "fake apt-cache: unhandled: $*" >&2
	exit 99
	;;
esac
