64 lines
1.5 KiB
Bash
Executable File
64 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SCRIPT_PATH=$(realpath "$0")
|
|
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
|
|
|
|
DEEP=false
|
|
PKGS=()
|
|
|
|
while getopts "d" flag; do
|
|
case "$flag" in
|
|
d) DEEP=true
|
|
shopt -s globstar;;
|
|
*) echo "Unknown flag ${flag}"
|
|
exit 2;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "${@:$OPTIND:1}" ]; then
|
|
echo "You have not specified a repository"
|
|
exit 1
|
|
fi
|
|
if ! [ -d "${@:$OPTIND:1}" ]; then
|
|
echo "The given path is not a directory"
|
|
exit 1
|
|
fi
|
|
|
|
if realpath "${@:$OPTIND:1}" &> /dev/null; then
|
|
REPO=$(realpath "${@:$OPTIND:1}")
|
|
fi
|
|
|
|
shopt -s nullglob
|
|
|
|
if ! $DEEP; then
|
|
for arch in "$REPO"/*/; do
|
|
for pkg in "$arch"/*.bpm; do
|
|
info=$(tar -xf "$pkg" pkg.info -O)
|
|
package=$(echo "$info" | grep 'name: ' | awk '{print $2}')
|
|
if [[ ${PKGS[@]} =~ "$package" ]]; then
|
|
echo "The following package was found in more than 1 package archives: ${package}"
|
|
fi
|
|
PKGS+=("$package")
|
|
file="$(realpath -s --relative-to="$REPO" "$pkg")"
|
|
info+=$'\n'"file: ${file}"
|
|
info+=$'\n---'
|
|
echo "$info"
|
|
done
|
|
done
|
|
else
|
|
for arch in "$REPO"/*/; do
|
|
for pkg in "$arch"/**/*.bpm; do
|
|
info=$(tar -xf "$pkg" pkg.info -O)
|
|
package=$(echo "$info" | grep 'name: ' | awk '{print $2}')
|
|
if [[ ${PKGS[@]} =~ "$package" ]]; then
|
|
echo "The following package was found in more than 1 package archives: ${package}"
|
|
fi
|
|
PKGS+=("$package")
|
|
file="$(realpath -s --relative-to="$REPO" "$pkg")"
|
|
info+=$'\n'"file: ${file}"
|
|
info+=$'\n---'
|
|
echo "$info"
|
|
done
|
|
done
|
|
fi
|