summaryrefslogtreecommitdiff
path: root/sogrep.in
diff options
context:
space:
mode:
Diffstat (limited to 'sogrep.in')
-rwxr-xr-xsogrep.in21
1 files changed, 20 insertions, 1 deletions
diff --git a/sogrep.in b/sogrep.in
index 19fe651..676d9df 100755
--- a/sogrep.in
+++ b/sogrep.in
@@ -54,6 +54,24 @@ recache() {
done
}
+is_outdated_cache() {
+ local repo arch
+
+ # links databases are generated at about the same time every day; we should
+ # attempt to check for new database files if any of them are over a day old
+
+ for repo in "${_repos[@]}"; do
+ for arch in "${arches[@]}"; do
+ local dbpath=${SOCACHE_DIR}/${arch}/${repo}.links.tar.gz
+ if [[ ! -f ${dbpath} ]] || [[ $(find "${dbpath}" -mtime +0) ]]; then
+ return 0
+ fi
+ done
+ done
+
+ return 1
+}
+
search() {
local repo=$1 arch lib=$2 srepos=("${_repos[@]}")
@@ -152,7 +170,8 @@ if ! (( ( REFRESH && $# == 0 ) || $# == 2 )); then
exit 1
fi
-if (( REFRESH )) || [[ ! -d ${SOCACHE_DIR} ]]; then
+# trigger a refresh if requested explicitly or the cached dbs might be outdated
+if (( REFRESH )) || [[ ! -d ${SOCACHE_DIR} ]] || is_outdated_cache; then
recache
(( $# == 2 )) || exit 0
fi