43 lines
1.0 KiB
Bash
Executable File
43 lines
1.0 KiB
Bash
Executable File
#!/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
|