43 lines
1.6 KiB
Bash
Executable File
43 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
[ "${EUID}" -eq 0 ] || { echo "Run as root." >&2; exit 1; }
|
|
ENV_FILE=${1:-.env}
|
|
[ -f "$ENV_FILE" ] || { echo "Missing $ENV_FILE" >&2; exit 1; }
|
|
set -a
|
|
. "$ENV_FILE"
|
|
set +a
|
|
|
|
: "${PRETRANSCODE_ROOT:?}"
|
|
: "${PRETRANSCODE_VIEW_PATH:?}"
|
|
: "${PRETRANSCODE_CACHE_PATH:?}"
|
|
: "${PRETRANSCODE_STATE_PATH:?}"
|
|
: "${PRETRANSCODE_CACHE_IMAGE:?}"
|
|
: "${CACHE_MAX_BYTES:?}"
|
|
: "${PRETRANSCODE_UID:?}"
|
|
: "${PRETRANSCODE_GID:?}"
|
|
|
|
mkdir -p "$PRETRANSCODE_ROOT" "$PRETRANSCODE_VIEW_PATH" \
|
|
"$PRETRANSCODE_CACHE_PATH" "$PRETRANSCODE_STATE_PATH"
|
|
|
|
if [ ! -f "$PRETRANSCODE_CACHE_IMAGE" ]; then
|
|
fallocate -l "$CACHE_MAX_BYTES" "$PRETRANSCODE_CACHE_IMAGE"
|
|
mkfs.ext4 -q -F -m 0 -L pretranscode "$PRETRANSCODE_CACHE_IMAGE"
|
|
# mkfs may discard unused extents; claim the configured allocation again.
|
|
fallocate -l "$CACHE_MAX_BYTES" "$PRETRANSCODE_CACHE_IMAGE"
|
|
elif [ "$(stat -c %s "$PRETRANSCODE_CACHE_IMAGE")" -ne "$CACHE_MAX_BYTES" ]; then
|
|
echo "Cache image exists with a different size; resize it explicitly before provisioning." >&2
|
|
exit 1
|
|
fi
|
|
|
|
FSTAB_LINE="$PRETRANSCODE_CACHE_IMAGE $PRETRANSCODE_CACHE_PATH ext4 loop,nofail,noatime 0 2"
|
|
grep -qF "$FSTAB_LINE" /etc/fstab || echo "$FSTAB_LINE" >> /etc/fstab
|
|
mountpoint -q "$PRETRANSCODE_CACHE_PATH" || mount "$PRETRANSCODE_CACHE_PATH"
|
|
touch "$PRETRANSCODE_CACHE_PATH/.pretranscode-cache"
|
|
chown -R "$PRETRANSCODE_UID:$PRETRANSCODE_GID" \
|
|
"$PRETRANSCODE_VIEW_PATH" "$PRETRANSCODE_STATE_PATH" "$PRETRANSCODE_CACHE_PATH"
|
|
chmod 0755 "$PRETRANSCODE_VIEW_PATH" "$PRETRANSCODE_STATE_PATH" "$PRETRANSCODE_CACHE_PATH"
|
|
|
|
echo "Cache provisioned at $PRETRANSCODE_CACHE_PATH"
|
|
df -h "$PRETRANSCODE_CACHE_PATH"
|