---
- name: "Configure gitea application"
  hosts: all

  vars_files:
    - vars/ports.yml
    - vars/vars.yml

  vars:
    app_name: "gitea"
    app_user: "{{ app_name }}"
    base_dir: "/home/{{ app_name }}"
    data_dir: "{{ (base_dir, 'data') | path_join }}"
    backups_dir: "{{ (base_dir, 'backups') | path_join }}"

  tasks:
    - name: "Create user and environment"
      ansible.builtin.import_role:
        name: owner
      vars:
        owner_name: "{{ app_user }}"
        owner_extra_groups:
          - "docker"
        owner_ssh_keys:
          - "{{ lookup('file', 'files/av_id_rsa.pub') }}"
        owner_env:
          PROJECT_NAME: "{{ app_name }}"
          DOCKER_PREFIX: "{{ app_name }}"
          IMAGE_PREFIX: "{{ app_name }}"
          CONTAINER_PREFIX: "{{ app_name }}"
          USER_UID: "{{ user_create_result.uid }}"
          USER_GID: "{{ user_create_result.group }}"

    - name: "Create internal application directories"
      ansible.builtin.file:
        path: "{{ item }}"
        state: "directory"
        owner: "{{ app_user }}"
        group: "{{ app_user }}"
        mode: "0770"
      loop:
        - "{{ data_dir }}"
        - "{{ backups_dir }}"

    - name: "Copy backup script"
      ansible.builtin.template:
        src: "files/{{ app_name }}/backup.sh.j2"
        dest: "{{ base_dir }}/backup.sh"
        owner: "{{ app_user }}"
        group: "{{ app_user }}"
        mode: "0750"

    - name: "Copy docker compose file"
      ansible.builtin.template:
        src: "./files/{{ app_name }}/docker-compose.yml.j2"
        dest: "{{ base_dir }}/docker-compose.yml"
        owner: "{{ app_user }}"
        group: "{{ app_user }}"
        mode: "0640"

    - name: "Run application with docker compose"
      community.docker.docker_compose_v2:
        project_src: "{{ base_dir }}"
        state: "present"
        remove_orphans: true