only download db if newer, -U to force (#15)

This commit is contained in:
Lucy Phipps 2021-02-09 11:40:00 +00:00 committed by GitHub
parent 83d3c35496
commit 5e163c1518
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 33 additions and 12 deletions

View File

@ -8,8 +8,8 @@ DB_UPDATES_URL="https://dl.bintray.com/termux/metadata/whatprovides-db/whatprovi
show_usage () { show_usage () {
{ {
echo echo
echo "Usage: $SCRIPT_NAME [-u] path/to/file" echo "Usage: $SCRIPT_NAME [-u|-U] path/to/file"
echo " $SCRIPT_NAME -p [-u] package" echo " $SCRIPT_NAME -p [-u|-U] package"
echo echo
echo "Find out packages using specific files." echo "Find out packages using specific files."
echo echo
@ -22,6 +22,8 @@ show_usage () {
echo echo
echo " -u Update the database." echo " -u Update the database."
echo echo
echo " -U Redownload the database even if it's not updated."
echo
echo " -q Quiet mode. Suppress informational messages." echo " -q Quiet mode. Suppress informational messages."
echo echo
} >&2 } >&2
@ -35,26 +37,36 @@ update_database() {
rm -f "${DB_PATH}.gz" rm -f "${DB_PATH}.gz"
fi fi
if ! ${FORCE_UPDATE} && [ -e "${DB_PATH}" ]; then
NEWER=(--time-cond "${DB_PATH}")
else
NEWER=()
fi
if ! ${QUIET}; then if ! ${QUIET}; then
echo "[*] Downloading the new database..." >&2 echo "[*] Downloading the new database..." >&2
echo >&2 echo >&2
curl --fail --retry 3 --retry-connrefused --retry-delay 1 --location \ curl --fail --retry 3 --retry-connrefused --retry-delay 1 --location \
--output "${DB_PATH}.gz" "${DB_UPDATES_URL}" "${NEWER[@]}" --output "${DB_PATH}.gz" "${DB_UPDATES_URL}"
echo >&2 echo >&2
echo "[*] Installing..." >&2
else else
curl --silent --fail --retry 3 --retry-connrefused --retry-delay 1 \ curl --silent --fail --retry 3 --retry-connrefused --retry-delay 1 \
--location --output "${DB_PATH}.gz" "${DB_UPDATES_URL}" --location "${NEWER[@]}" --output "${DB_PATH}.gz" "${DB_UPDATES_URL}"
fi fi
rm -f "${DB_PATH}" if [ -e "${DB_PATH}.gz" ]; then
zcat "${DB_PATH}.gz" > "${DB_PATH}" if ! ${QUIET}; then
rm -f "${DB_PATH}.gz" echo "[*] Installing..." >&2
fi
if ! ${QUIET}; then zcat "${DB_PATH}.gz" > "${DB_PATH}"
echo "[*] Finished." >&2 rm -f "${DB_PATH}.gz"
if ! ${QUIET}; then
echo "[*] Finished." >&2
fi
elif ! ${QUIET}; then
echo "[*] No update done." >&2
fi fi
} }
@ -70,13 +82,22 @@ check_database() {
REVERSE_MODE=false REVERSE_MODE=false
DO_UPDATE=false DO_UPDATE=false
FORCE_UPDATE=false
QUIET=false QUIET=false
while (($# > 0)); do while (($# > 0)); do
case "$1" in case "$1" in
-h) show_usage; exit 0;; -h) show_usage; exit 0;;
-p) REVERSE_MODE=true;; -p) REVERSE_MODE=true;;
-q) QUIET=true;; -q) QUIET=true;;
-u) DO_UPDATE=true;; -U) FORCE_UPDATE=true;& # fall-through
-u)
if ${DO_UPDATE}; then
echo "-u and -U are mutually exclusive." >&2
show_usage
exit 1
fi
DO_UPDATE=true
;;
-*) -*)
echo >&2 echo >&2
echo "Unknown option '$1'." >&2 echo "Unknown option '$1'." >&2