#!/bin/bash

borgInitLocation()
{
    local idx="$1"

    if ! resticLocationEnabled "$idx"; then
        isNotice "Location $(resticLocationName "$idx") disabled — skipping init"
        return 0
    fi

    borgEnvExport "$idx" || return 1

    if [[ "$(resticLocationType "$idx")" == "local" ]]; then
        runFileOp mkdir -p "$BORG_REPO"
        runFileOp chown -R "$docker_install_user":"$docker_install_user" "$BORG_REPO"
    fi

    if runBackupOp borg info "$BORG_REPO" >/dev/null 2>&1; then
        isNotice "$(resticLocationName "$idx") already initialized at $BORG_REPO"
        borgEnvUnset
        return 0
    fi

    isNotice "Initializing $(resticLocationName "$idx") at $BORG_REPO"
    if runBackupOp borg init --encryption=repokey-blake2 "$BORG_REPO"; then
        isSuccessful "$(resticLocationName "$idx") initialized"
    else
        isError "Failed to initialize $(resticLocationName "$idx")"
        borgEnvUnset
        return 1
    fi

    borgEnvUnset
}

borgEnsureLocationReady()
{
    local idx="$1"
    [[ -z "$idx" ]] && return 1

    if ! resticLocationEnabled "$idx"; then
        return 1
    fi

    if ! command -v borg >/dev/null 2>&1; then
        borgInstall || return 1
    fi
    borgInitLocation "$idx"
}
