56 lines
1.8 KiB
Bash
56 lines
1.8 KiB
Bash
#!/bin/sh
|
|
# Shared POSIX shell helpers. Must be sourced from the project directory.
|
|
|
|
xbox_host_directory() {
|
|
if [ -n "${XBOX_HOST_DIR:-}" ]; then
|
|
root=$XBOX_HOST_DIR
|
|
elif [ -f .env ]; then
|
|
root=$(sed -n 's/^XBOX_HOST_DIR=//p' .env | tail -n 1)
|
|
# Handle normal quoted .env values without executing file contents.
|
|
case "$root" in
|
|
'"'*'"') root=${root#\"}; root=${root%\"} ;;
|
|
"'"*"'") root=${root#\'}; root=${root%\'} ;;
|
|
esac
|
|
root=${root:-/xbox}
|
|
else
|
|
root=/xbox
|
|
fi
|
|
case "$root" in
|
|
/*) ;;
|
|
*) echo "XBOX_HOST_DIR musi byc sciezka bezwzgledna: $root" >&2; return 1 ;;
|
|
esac
|
|
if [ ! -d "$root" ]; then
|
|
echo "Nie znaleziono $root na hoscie Linux." >&2
|
|
echo "Utworz go przed uruchomieniem, np.: sudo mkdir -p '$root'" >&2
|
|
echo "Jesli to montowany dysk, upewnij sie, ze jest zamontowany." >&2
|
|
return 1
|
|
fi
|
|
root=$(cd "$root" && pwd -P) || return 1
|
|
if [ "$root" = / ]; then
|
|
echo 'Odmowa uzycia / jako katalogu danych.' >&2
|
|
return 1
|
|
fi
|
|
printf '%s\n' "$root"
|
|
}
|
|
|
|
xbox_prepare_directories() {
|
|
root=$1
|
|
for rel in downloads work work/tmp work/cache ready imports logs metadata torrents bt aria2; do
|
|
if [ -L "$root/$rel" ]; then
|
|
echo "Odmowa uzycia dowiazania symbolicznego: $root/$rel" >&2
|
|
return 1
|
|
fi
|
|
if ! mkdir -p "$root/$rel"; then
|
|
echo "Brak uprawnien zapisu w $root. Ustaw prawa katalogu na hoscie." >&2
|
|
return 1
|
|
fi
|
|
done
|
|
if [ -L "$root/private" ]; then
|
|
echo "Odmowa uzycia dowiazania symbolicznego: $root/private" >&2
|
|
return 1
|
|
fi
|
|
if [ ! -d "$root/private" ]; then
|
|
mkdir -m 700 "$root/private" || return 1
|
|
fi
|
|
}
|