---

# We generally support Ansible 2.7.0 and above.
- name: Fail if running on Ansible < 2.7
  fail:
    msg: "You are running on Ansible {{ ansible_version.string }}, which is not supported. See our guide about Ansible: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/ansible.md"
  when: "(ansible_version.major < 2) or (ansible_version.major <= 2 and ansible_version.minor < 7)"

- name: (Deprecation) Catch and report renamed settings
  fail:
    msg: >-
      Your configuration contains a variable, which now has a different name.
      Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`).
  when: "item.old in vars"
  with_items:
    - {'old': 'host_specific_hostname_identity', 'new': 'matrix_domain'}
    - {'old': 'hostname_identity', 'new': 'matrix_domain'}
    - {'old': 'hostname_matrix', 'new': 'matrix_server_fqn_matrix'}
    - {'old': 'hostname_riot', 'new': 'matrix_server_fqn_element'}
    - {'old': 'matrix_server_fqn_riot', 'new': 'matrix_server_fqn_element'}

- name: Fail if required variables are undefined
  fail:
    msg: "The `{{ item }}` variable must be defined and have a non-null value"
  with_items:
    - matrix_domain
    - matrix_server_fqn_matrix
    - matrix_server_fqn_element
  when: "item not in vars or vars[item] is none"

- name: Fail if uppercase domain used
  fail:
    msg: "Detected that you're using an uppercase domain name - `{{ item }}`. This will cause trouble. Please use all-lowercase!"
  with_items:
    - "{{ matrix_domain }}"
    - "{{ matrix_server_fqn_matrix }}"
    - "{{ matrix_server_fqn_element }}"
  when: "item != item|lower"

- name: Fail if using python2 on Archlinux
  fail:
    msg: "Detected that you're using python2 when installing onto Archlinux. Archlinux by default only supports python3."
  when:
    - ansible_distribution == 'Archlinux'
    - ansible_python.version.major != 3