---
- name: "📁 Creating directory for {{ service_name }}"
  file:
    path: "/home/orangepi/{{ service_name }}"
    state: directory
    owner: orangepi
    group: orangepi

- name: "📋 Syncing {{ service_name }} files from dotfiles"
  synchronize:
    src: "{{ playbook_dir }}/../{{ service_name }}/"
    dest: "/home/orangepi/{{ service_name }}/"
    delete: false  # Never delete files not in source
    recursive: true
    checksum: true
    owner: false
    group: false
    rsync_opts:
      - "--exclude=.env*"          # Preserve environment files (will be templated)
      - "--exclude=*.log"          # Preserve log files  
      - "--exclude=data/"           # Preserve data directories
      - "--exclude=config/*.db"     # Preserve databases
      - "--exclude=additional_ansible_steps.yml"  # Skip Ansible files
  become: false
  register: sync_result

- name: "🔐 Check if {{ service_name }} has environment template"
  stat:
    path: "{{ playbook_dir }}/../{{ service_name }}/.env.j2"
  register: env_template_check

- name: "🔐 Templating {{ service_name }} environment file from vault"
  template:
    src: "{{ playbook_dir }}/../{{ service_name }}/.env.j2"
    dest: "/home/orangepi/{{ service_name }}/.env"
    owner: orangepi
    group: orangepi
    mode: '0600'
  when: env_template_check.stat.exists
  register: env_result
  ignore_errors: true

- name: "👤 Setting ownership of {{ service_name }} files"
  file:
    path: "/home/orangepi/{{ service_name }}"
    owner: orangepi
    group: orangepi
    recurse: true
  become: false  # Skip sudo for testing
  when: sync_result.changed

- name: "⚙️  Creating systemd service for {{ service_name }}"
  template:
    src: docker-service.j2
    dest: "/etc/systemd/system/{{ service_name }}-docker.service"
  become: false  # Skip sudo for testing  
  when: sync_result.changed
  register: systemd_service_result
  ignore_errors: true

- name: "🔄 Restarting {{ service_name }} service (existing service with file changes)"
  systemd:
    name: "{{ service_name }}-docker.service"
    state: restarted
  become: false  # Skip sudo for testing
  when: 
    - sync_result.changed or env_result.changed
    - not systemd_service_result.changed
  ignore_errors: yes
