#!/bin/sh
#/ Usage: ghe-prune-snapshots
#/ Keep N latest backup snapshots.
set -e

# Bring in the backup configuration
cd $(dirname "$0")/../..
. share/github-backup-utils/ghe-backup-config

# First prune all incomplete / failed snapshot directories
prune_dirs="$(ls -1 "$GHE_DATA_DIR"/[0-9]*/incomplete 2>/dev/null || true)"
prune_num=$(echo "$prune_dirs" | grep -v '^$' | wc -l)

if [ $prune_num -gt 0 ]; then
    echo Pruning $prune_num "failed snapshot(s) ..."
    echo "$prune_dirs" | sed 's@/incomplete$@@' | xargs rm -rf
fi

# Now prune all expired snapshots. Keep GHE_NUM_SNAPSHOTS around.
snapshot_count=$(ls -1d "$GHE_DATA_DIR"/[0-9]* 2>/dev/null | wc -l)

if [ "$snapshot_count" -gt "$GHE_NUM_SNAPSHOTS" ]; then
    prune_dirs="$(ls -1d "$GHE_DATA_DIR"/[0-9]* | sort -r | awk "NR>$GHE_NUM_SNAPSHOTS")"
    prune_num=$(echo "$prune_dirs" | grep -v '^$' | wc -l)
    echo Pruning $prune_num "expired snapshot(s) ..."
    echo "$prune_dirs" | xargs rm -rf
fi
