forked from qt-creator/qt-creator
88 lines
1.8 KiB
Bash
Executable File
88 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
## Open script-dir-homed subshell
|
|
(
|
|
ABS_SCRIPT_DIR=$(cd $(dirname $(which "$0")) && pwd)
|
|
cd "${ABS_SCRIPT_DIR}" || exit 1
|
|
|
|
|
|
## Internal config
|
|
KEEP_COUNT=7
|
|
|
|
## External config
|
|
DRY=0
|
|
case "$1" in
|
|
-n)
|
|
DRY=1
|
|
;;
|
|
--just-print)
|
|
DRY=1
|
|
;;
|
|
--dry-run)
|
|
DRY=1
|
|
;;
|
|
esac
|
|
|
|
if [[ "$DRY" -eq 1 ]]; then
|
|
echo 'NOTE: Running in simulation mode'
|
|
echo
|
|
fi
|
|
|
|
|
|
function cleanup_snapshots {
|
|
## Harvest days
|
|
LIST_OF_DAYS=
|
|
for i in ????-??-?? ; do
|
|
LIST_OF_DAYS="$LIST_OF_DAYS $i";
|
|
done
|
|
SORTED_DAYS=`echo ${LIST_OF_DAYS} | sed -r 's/ /\n/g' | sort | uniq`
|
|
DAY_COUNT=`echo $SORTED_DAYS | wc -w`
|
|
if [[ $DAY_COUNT < 1 ]]; then
|
|
echo "No files deleted"
|
|
exit 0
|
|
fi
|
|
|
|
## Select days to delete
|
|
DELETE_COUNT=$((DAY_COUNT - KEEP_COUNT))
|
|
if [[ "${DELETE_COUNT}" -lt 1 ]]; then
|
|
echo "No files deleted"
|
|
return
|
|
fi
|
|
if [[ "${DELETE_COUNT}" -gt "${DAY_COUNT}" ]]; then
|
|
DELETE_COUNT="${DAY_COUNT}"
|
|
fi
|
|
DELETE_DAYS=`echo ${SORTED_DAYS} | sed -r 's/ /\n/g' | head -n $DELETE_COUNT`
|
|
echo "Deleting ${DELETE_COUNT} of ${DAY_COUNT} days"
|
|
|
|
## Delete days
|
|
COUNTER=1
|
|
for PRETTY_DAY in ${DELETE_DAYS} ; do
|
|
echo "Day ${PRETTY_DAY} [${COUNTER}/${DELETE_COUNT}]"
|
|
for j in ${PRETTY_DAY}/qtcreator-*-????????????-* ; do
|
|
if [[ ! -f ${j} ]]; then
|
|
continue
|
|
fi
|
|
|
|
echo " ${j}"
|
|
if [[ "$DRY" -eq 0 ]]; then
|
|
## Note: prefix for extra safety
|
|
rm "../snapshots/${j}"
|
|
fi
|
|
done
|
|
if [[ "$DRY" -eq 0 ]]; then
|
|
## Note: prefix for extra safety
|
|
rmdir "../snapshots/${PRETTY_DAY}"
|
|
fi
|
|
COUNTER=$((COUNTER + 1))
|
|
done
|
|
}
|
|
|
|
|
|
cleanup_snapshots
|
|
exit 0
|
|
|
|
|
|
## Properly close subshell
|
|
)
|
|
exit $?
|