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

### Правильные разрешения для каталогов данных romm

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

DESIRED_OWNER="1000:1000"

CONFIG_DATA_DIR="${APP_DATA_DIR}/config"

romm_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
}

### Создайте файл конфигурации по умолчанию для romm, если он не существует.

ROMM_CONFIG_FILE="${CONFIG_DATA_DIR}/config.yml"

# Проверяем, не существует ли конфиг-файл ромма
if [[ ! -f "${ROMM_CONFIG_FILE}" ]]; then
  echo "Creating romm configuration file."
  # Создайте файл конфигурации romm.
  cat >"${ROMM_CONFIG_FILE}" <<'EOF'
exclude:
  # Исключить платформы для сканирования
  platforms: [] # ['my_excluded_platform_1', 'my_excluded_platform_2']

  # Исключить ромы или части ромов для сканирования
  roms:
    # Раздел однофайловых игр.
    # Не будет распространяться на файлы, находящиеся в подпапках (многодисковые ромы, игры с обновлениями, DLC, патчи и т.п.)
    single_file:
      # Исключить из сканирования все файлы с определенными расширениями
      extensions: [] # ['xml', 'txt']

      # Исключить совпадающие имена файлов для сканирования.
      # Поддерживает сопоставление шаблонов имен файлов Unix.
      # Также можно исключать файлы по расширению
      names: [] # ['info.txt', '._*', '*.nfo']

    # Раздел многофайловых игр
    # Применимо к файлам, находящимся в подпапках (многодисковые ромы, игры с обновлениями, DLC, патчи и т.д.)
    multi_file:
      # Исключить из сканирования совпадающие имена 'folder' (RomM идентифицирует папки как многофайловые игры)
      names: [] # ['my_multi_file_game', 'DLC']

      # Исключить файлы в подпапках.
      parts:
        # Исключить совпадающие имена файлов для сканирования из многофайловых дисков.
        # Имейте в виду, что RomM не сканирует папки внутри многофайловых игр.
        # поэтому нет необходимости исключать папки из многофайловых игр.
        names: [] # ['data.xml', '._*'] # Supports unix filename pattern matching

        # Исключить все файлы с определенными расширениями для сканирования из многофайловых дисков.
        extensions: [] # ['xml', 'txt']

system:
  # Свяжите различные имена платформ с именами платформ вашей текущей файловой системы.
  # [имя папки вашей пользовательской платформы]: [имя платформы RomM]
  # В этом примере, если у вас есть папка 'gc', RomM будет относиться к ней как к папке 'ngc', а если у вас есть папка 'psx', RomM будет относиться к ней как к папке 'ps'.
  platforms: {} # { gc: 'ngc', psx: 'ps' }

  # Свяжите одну платформу с ее основной версией
  versions: {} # { naomi: 'arcade' }

# Имя папки, в которой находятся ваши ромы
filesystem: {} # { roms_folder: 'roms' } For example if your folder structure is /home/user/library/roms_folder
EOF

echo "Created romm configuration file."

romm_correct_permission "${CONFIG_DATA_DIR}"

fi
