update purge script
authorMaksim Pechnikov <parallel588@gmail.com>
Wed, 20 May 2020 03:56:04 +0000 (06:56 +0300)
committerMaksim Pechnikov <parallel588@gmail.com>
Wed, 20 May 2020 03:56:04 +0000 (06:56 +0300)
installation/nginx-cache-purge.example [deleted file]
installation/nginx-cache-purge.sh.example [new file with mode: 0755]

diff --git a/installation/nginx-cache-purge.example b/installation/nginx-cache-purge.example
deleted file mode 100755 (executable)
index 12dfa73..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-
-# A simple Bash script to delete an media from the Nginx cache.
-
-SCRIPTNAME=${0##*/}
-
-# NGINX cache directory 
-CACHE_DIRECTORY="/tmp/pleroma-media-cache"
-
-function get_cache_files() {
-    local max_parallel=${3-16}
-    find $2 -maxdepth 1 -type d | xargs -P $max_parallel -n 1 grep -ERl "^KEY:.*$1" | sort -u
-}
-
-function purge_item() {
-  local cache_files
-  cache_files=$(get_cache_files "$1" "$2")
-
-  if [ -n "$cache_files" ]; then
-    for i in $cache_files; do
-      [ -f $i ] || continue
-      echo "Deleting $i from $2."
-      rm $i
-    done
-  else
-    echo "$1 is not cached."
-  fi  
-}
-
-function purge() {
-  for url in "$@"
-  do
-    echo "$SCRIPTNAME delete $url from cache ($CACHE_DIRECTORY)"
-    purge_item $url $CACHE_DIRECTORY
-  done
-
-}
-
-purge $1 
diff --git a/installation/nginx-cache-purge.sh.example b/installation/nginx-cache-purge.sh.example
new file mode 100755 (executable)
index 0000000..aaa1953
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# A simple shell script to delete a media from the Nginx cache.
+
+SCRIPTNAME=${0##*/}
+
+# NGINX cache directory
+CACHE_DIRECTORY="/tmp/pleroma-media-cache"
+
+## Return the files where the items are cached.
+## $1 - the filename, can be a pattern .
+## $2 - the cache directory.
+## $3 - (optional) the number of parallel processes to run for grep.
+get_cache_files() {
+    local max_parallel=${3-16}
+    find $2 -maxdepth 2 -type d | xargs -P $max_parallel -n 1 grep -ERl "^KEY:.*$1" | sort -u
+}
+
+## Removes an item from the given cache zone.
+## $1 - the filename, can be a pattern .
+## $2 - the cache directory.
+purge_item() {
+  for f in $(get_cache_files $1 $2); do
+      echo "found file: $f"
+      [ -f $f ] || continue
+      echo "Deleting $f from $2."
+      rm $f
+  done
+} # purge_item
+
+purge() {
+  for url in "$@"
+  do
+    echo "$SCRIPTNAME delete \`$url\` from cache ($CACHE_DIRECTORY)"
+    purge_item $url $CACHE_DIRECTORY
+  done
+
+}
+
+purge $1