#!/usr/bin/env bash
set -euo pipefail

# Целью этого предстартового крючка является миграция
# локальная папка загрузок для существующих установок
# в общую папку загрузок DFWebOS

APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)"
DFWEBOS_ROOT="${APP_DATA_DIR}/../.."

# Нам необходимо обеспечить общую папку загрузки DFWebOS.
# существует и принадлежит правильному пользователю
DFWEBOS_DATA_DIR="${DFWEBOS_ROOT}/data"
DFWEBOS_DATA_STORAGE_DIR="${DFWEBOS_DATA_DIR}/storage"
DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR="${DFWEBOS_DATA_STORAGE_DIR}/downloads"
DESIRED_OWNER="1000:1000"

if [[ ! -d "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}" ]]; then
	mkdir -p "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}"
fi

simpletorrent_correct_permission() {
	local -r path="${1}"

	if [[ -d "${path}" ]]; then
		owner=$(stat -c "%u:%g" "${path}")

		if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then
			chown "${DESIRED_OWNER}" "${path}"
		fi
	fi
}

simpletorrent_correct_permission "${DFWEBOS_DATA_DIR}"
simpletorrent_correct_permission "${DFWEBOS_DATA_STORAGE_DIR}"
simpletorrent_correct_permission "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}"

# Перенесите существующие установки для использования общего каталога загрузок.
LOCAL_DOWNLOADS_DIR="${APP_DATA_DIR}/data/downloads"

if [[ ! -d "${LOCAL_DOWNLOADS_DIR}" ]]; then
	echo "No local downloads directory found. Skipping migration..."
	exit
fi

# Проверьте, не пуста ли локальная загрузка.
if [[ "$(ls -l "${LOCAL_DOWNLOADS_DIR}" | wc -l)" -gt "1" ]]; then
	# Переместите содержимое локальной папки загрузок в общую папку загрузок DFWebOS.
	mv --verbose "${LOCAL_DOWNLOADS_DIR}/"* "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}"
fi

# Проверьте, пуст ли теперь локальный каталог загрузок.
if [[ "$(ls -l "${LOCAL_DOWNLOADS_DIR}" | wc -l)" -gt "1" ]]; then
	echo "Failed to migrate local downloads directory: ${LOCAL_DOWNLOADS_DIR}"
	echo "This directory still contains files/folders..."
	exit
fi

rm -rf "${LOCAL_DOWNLOADS_DIR}"

echo "Local downloads directory successfully migrated"