72 lines
1.7 KiB
Bash
Executable File
72 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
SCRIPT_NAME=$(basename "$(realpath "$0")")
|
|
DB_PATH="/data/data/com.termux/files/usr/var/lib/whatprovides/whatprovides.db"
|
|
DB_UPDATES_URL="https://dl.bintray.com/termux/metadata/whatprovides-db/whatprovides.db.gz"
|
|
|
|
show_usage () {
|
|
echo
|
|
echo "Usage: $SCRIPT_NAME [options] path/to/file"
|
|
echo
|
|
echo "Find out packages using specific files."
|
|
echo
|
|
echo "Options:"
|
|
echo
|
|
echo " -h Show this help."
|
|
echo " -p [package] List files of package."
|
|
echo " -u Update the database."
|
|
echo
|
|
}
|
|
|
|
update_database() {
|
|
if [ -e "${DB_PATH}.gz" ]; then
|
|
echo "[*] Cleaning up the remaining temporary files..."
|
|
rm -f "${DB_PATH}.gz"
|
|
fi
|
|
|
|
echo "[*] Downloading the new database..."
|
|
echo
|
|
curl --fail --retry 3 --retry-connrefused --retry-delay 1 --location \
|
|
--output "${DB_PATH}.gz" "${DB_UPDATES_URL}"
|
|
echo
|
|
|
|
echo "[*] Installing..."
|
|
rm -f "${DB_PATH}"
|
|
zcat "${DB_PATH}.gz" > "${DB_PATH}"
|
|
rm -f "${DB_PATH}.gz"
|
|
|
|
echo "[*] Finished."
|
|
}
|
|
|
|
check_database() {
|
|
if [ ! -e "${DB_PATH}" ]; then
|
|
echo "Error: database is not available."
|
|
echo "Please run '${SCRIPT_NAME} -u' to create it."
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
while getopts :hp:u option; do
|
|
case "$option" in
|
|
p)
|
|
check_database
|
|
echo "SELECT owned_file FROM 'whatprovides' WHERE package_name == '${OPTARG}' ORDER BY owned_file;" | \
|
|
sqlite3 "${DB_PATH}" | awk "{ print \"${OPTARG}: \"\$0 }"
|
|
exit 0
|
|
;;
|
|
u) update_database; exit 0;;
|
|
h) show_usage; exit 0;;
|
|
*) show_usage; exit 1;;
|
|
esac
|
|
done
|
|
|
|
if [ $# -ge 1 ]; then
|
|
check_database
|
|
echo "SELECT package_name FROM 'whatprovides' WHERE owned_file == '${1}' ORDER BY package_name;" | \
|
|
sqlite3 "${DB_PATH}" | awk "{ print \$0\": ${1}\" }"
|
|
else
|
|
show_usage
|
|
exit 1
|
|
fi
|