[project]
name = "aero"
version = "0.1.0"
description = "Ansible-провижининг docker-хостов (docker, docker-compose, containerd)"
requires-python = ">=3.11"
dependencies = [
    "ansible-core>=2.17",
]

[dependency-groups]
dev = [
    "ansible-lint>=24.0",
    "poethepoet>=0.29",
]

[tool.uv]
package = false

# Общее окружение для всех poe-задач.
# ANSIBLE_CONFIG задаётся явно: на /mnt/c (диск Windows) права 0777, и ansible
# из соображений безопасности игнорирует ansible.cfg в world-writable каталоге.
[tool.poe.env]
ANSIBLE_CONFIG = "${POE_ROOT}/ansible.cfg"
UV_LINK_MODE = "copy"

# Таск-раннер poethepoet. Запуск: uv run poe <task>
[tool.poe.tasks]
sync = "uv sync"
galaxy = "ansible-galaxy collection install -r requirements.yml"
ping = "ansible docker_hosts -m ping"
# Провижининг хоста: базовые пакеты + docker/containerd + запуск службы
provision = "ansible-playbook site.yml"
check = "ansible-playbook site.yml --check --diff"
# Деплой конфигурации: файлы, .env с паролями, сертификаты, docker login
deploy = "ansible-playbook deploy.yml"
deploy-check = "ansible-playbook deploy.yml --check --diff"
# Деплой + поднять стек приложения (docker compose up -d)
stack = "ansible-playbook deploy.yml -e sarex_compose_up=true"
# Только генерация паролей и рендер .env на хосте (без копирования/сертификатов)
gen-env = "ansible-playbook deploy.yml --tags env"
# docker login в приватный реестр по ключу json_key
login = "ansible-playbook deploy.yml --tags login"
# Сгенерировать логин+пароль и создать Django-суперпользователя в backend
superuser = "ansible-playbook deploy.yml -e sarex_create_superuser=true --tags superuser"
lint = "ansible-lint"

# Подготовка окружения: uv sync + установка коллекций
[tool.poe.tasks.setup]
sequence = ["sync", "galaxy"]

# Установка с чистого листа: окружение → docker → деплой+стек → суперпользователь
[tool.poe.tasks.install]
sequence = ["sync", "galaxy", "provision", "stack", "superuser"]
