# Определяем операционную систему
ifeq ($(OS),Windows_NT)
    PLATFORM = Windows
    # На Windows используем WinSCP.com для SFTP
    WINSCP_PATH = "C:\Program Files (x86)\WinSCP\WinSCP.com"
    DEPLOY_CMD = $(WINSCP_PATH) /script=winscp_script.txt
    DRYRUN_CMD = echo "Windows: проверка SFTP-соединения..."
else
    PLATFORM = Unix
    # На Unix используем paramiko (SFTP). Аккаунт Jino — SFTP-only: rsync/ssh-exec
    # запрещены ("exec request failed on channel 0"), поэтому deploy через
    # tools/deploy_sftp.py (рекурсивный mirror + удаление лишнего).
    # Венв .venv создаётся автоматически таргетом venv (нужен paramiko).
    DEPLOY_CMD = .venv/bin/python tools/deploy_sftp.py
    DRYRUN_CMD = .venv/bin/python tools/deploy_sftp.py --dry-run
    # Пароль берётся из переменной окружения SSHPASS (см. README.md / DEPLOY_INSTRUCTIONS.md)
endif
.PHONY: build deploy deploy-dry-run clean rebuild help venv

build:
	hugo --minify
	@echo "Сайт успешно собран в папку public/"

# ЕДИНСТВЕННЫЙ способ деплоя — через make deploy.
# Никогда не заменять на rsync/ssh-exec напрямую: на Jino аккаунт SFTP-only.
deploy: build venv
ifeq ($(PLATFORM),Windows)
	$(DEPLOY_CMD)
else
	@test -n "$$SSHPASS" || (echo "ОШИБКА: переменная SSHPASS (пароль SFTP) не задана. См. README.md / DEPLOY_INSTRUCTIONS.md"; exit 1)
	$(DEPLOY_CMD)
endif

deploy-dry-run: build venv
ifeq ($(PLATFORM),Windows)
	@echo "Выполняем проверку соединения с сервером..."
	$(DRYRUN_CMD)
else
	@test -n "$$SSHPASS" || (echo "ОШИБКА: переменная SSHPASS (пароль SFTP) не задана. См. README.md / DEPLOY_INSTRUCTIONS.md"; exit 1)
	$(DRYRUN_CMD)
endif

# Создаёт venv с paramiko для Unix-деплоя (единожды)
venv:
	@if [ ! -x .venv/bin/python ]; then \
		echo "Создаю .venv и ставлю paramiko..."; \
		python3 -m venv .venv && .venv/bin/pip install -q paramiko; \
	fi
clean:
ifeq ($(OS),Windows_NT)
	del /q /s public\/
else
	rm -rf public/
endif
	@echo "Папка public удалена"

rebuild: clean deploy

help:
	@echo "Доступные команды:"
	@echo "  make build           - собрать сайт"
	@echo "  make deploy          - собрать и задеплоить сайт (SFTP через lftp, требуется SSHPASS)"
	@echo "  make deploy-dry-run  - симуляция деплоя (требуется SSHPASS)"
	@echo "  make clean           - удалить папку public"
	@echo "  make rebuild         - полная пересборка сайта"
	@echo "  make help            - показать это сообщение"
	@echo ""
	@echo "Деплой: export SSHPASS='<пароль SFTP>'; make deploy"
	@echo "Пароль хранится в DEPLOY_INSTRUCTIONS.md (winscp_script.txt для Windows)."