#!/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 }