Skip to content

Instantly share code, notes, and snippets.

@db48x
Last active November 19, 2016 21:06
Show Gist options
  • Save db48x/b079eaf83d33361d28c8115e8e5352da to your computer and use it in GitHub Desktop.
Save db48x/b079eaf83d33361d28c8115e8e5352da to your computer and use it in GitHub Desktop.
#/bin/bash -x
GIT=git
pow () {
local x=${1:-1} y=${2:-0} result=${3:-1}
if [ ${y} -gt 0 ]; then
echo "$(pow "${x}" "$((y-1))" "$((result*x))")"
else
echo "${result}"
fi
}
bytesFromSize () {
if [[ -z "$1" ]]; then
echo "0"
fi
if which numfmt >/dev/null 2>&1; then
echo "$1" | numfmt --from=si
else
declare -a size
size=($(echo ${1} | tr 'a-z' 'A-Z' | sed -e 's/\([.0-9]\)\([A-Z]\)/\1 \2/'))
count="$(echo ${size[0]} | cut -f 1 -d '.')"
unit="${size[1]}"
exponent=1
case ${unit} in
B) exponent=0;;
K) exponent=3;;
M) exponent=6;;
G) exponent=9;;
T) exponent=12;;
*) exponent=15;;
esac
echo $((${count} * $(pow 10 ${exponent})))
fi
}
annexreserved () {
prevshard="${1}"
if [[ -z "${prevshard}" ]]; then
prevshard="$(echo shard* 2>/dev/null | cut -d ' ' -f 1)"
if [[ -n "${prevshard}" ]]; then
(cd "${prevshard}" && ${GIT} config annex.diskreserve) || echo "0"
fi
else
${GIT} config annex.diskreserve || echo "0"
fi
}
diskfree () {
df -Ph . | tail -1 | awk '{print $4}'
}
outofspace () {
reserve="$1"
[[ -n "${reserve}" && $(bytesFromSize $(diskfree)) -lt $(bytesFromSize "${reserve}") ]]
}
stillhavespace () {
prevshard=${1}
if [[ -z "${prevshard}" ]]; then
prevshard="$(echo shard* 2>/dev/null | cut -d ' ' -f 1)"
if [[ -n "${prevshard}" ]]; then
outofspace "$(cd "${prevshard}" && ${GIT} config annex.diskreserve || echo "0")"
fi
else
outofspace "$(${GIT} config annex.diskreserve || echo "0")"
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment