sogrep: rename to sogrep.in so make clean works

make clean removes all .in converted files to a file without .in which
in the make clean step is removed. So running make clean will remove
sogrep since it's specified as BINPROGS. In the future this steps should
be removed for sogrep since it is a standalone script.

Signed-off-by: Jelle van der Waa <jelle@vdwaa.nl>
This commit is contained in:
Jelle van der Waa 2019-03-16 18:29:56 +01:00
parent 23f248ccfb
commit 90bb423304
2 changed files with 98 additions and 0 deletions

0
sogrep Normal file → Executable file
View File

98
sogrep.in Normal file
View File

@ -0,0 +1,98 @@
#!/bin/bash
# License: Unspecified
: ${SOLINKS_MIRROR:="https://mirror.pkgbuild.com"}
: ${SOCACHE_DIR:="${XDG_CACHE_HOME:-${HOME}/.cache}/sogrep"}
repos=('staging' 'testing' 'core' 'extra'
'community-staging' 'community-testing' 'community'
'multilib-staging' 'multilib-testing' 'multilib'
'gnome-unstable' 'kde-unstable')
arches=('x86_64')
source /usr/share/makepkg/util/util.sh
recache() {
local repo arch
for repo in "${repos[@]}"; do
for arch in "${arches[@]}"; do
rm -rf "${SOCACHE_DIR}/${arch}/${repo}"
mkdir -p "${SOCACHE_DIR}/${arch}/${repo}"
curl "${SOLINKS_MIRROR}/${repo}/os/${arch}/${repo}.links.tar.gz" | bsdtar -xf - -C "${SOCACHE_DIR}/${arch}/${repo}"
done
done
}
search() {
local repo=$1 arch lib=$2
if [[ $repo != all ]]; then
if ! in_array "$repo" "${repos[@]}"; then
echo "${BASH_SOURCE[0]##*/}: unrecognized repo '$repo'"
echo "Try '${BASH_SOURCE[0]##*/} --help' for more information."
exit 1
fi
local repos=("${repo}")
fi
if [[ ! -d ${SOCACHE_DIR} ]]; then
recache
fi
for arch in "${arches[@]}"; do
for repo in "${repos[@]}"; do
db=${SOCACHE_DIR}/${arch}/${repo}/
if [[ -d ${db} ]]; then
while read -rd '' pkg; do
pkg=${pkg#${db}}
printf '%s/%s\n' "${repo}" "${pkg%-*-*/links}"
done < <(grep -rlZ "${lib}" "${db}")
fi
done
done | sort -u
}
usage() {
cat <<- _EOF_
Usage: ${BASH_SOURCE[0]##*/} [OPTIONS] REPO LIBNAME
Check the soname links database for pacman repositories containing
packages linked to a given shared library. If the repository specified
is "all", then all repositories will be searched, otherwise only the
named repository will be searched.
If the links database does not exist, it will be downloaded first.
OPTIONS
-r, --refresh Refresh the links databases
-h, --help Show this help text
_EOF_
}
if (( $# == 0 )); then
echo "error: No arguments passed."
echo "Try '${BASH_SOURCE[0]##*/} --help' for more information."
exit 1
fi
while (( $# )); do
case $1 in
-r|--refresh)
recache
;;
-h|--help)
usage
exit 0
;;
*)
if (( $# < 2 )); then
echo "error: Not enough arguments passed."
echo "Try '${BASH_SOURCE[0]##*/} --help' for more information."
exit 1
fi
search "$@"
exit $?
;;
esac
shift
done