---
- name: Test for raspberry pi /proc/cpuinfo
  command: grep -E "Raspberry Pi|BCM2708|BCM2709|BCM2835|BCM2836" /proc/cpuinfo
  register: grep_cpuinfo_raspberrypi
  failed_when: false
  changed_when: false

- name: Test for raspberry pi /proc/device-tree/model
  command: grep -E "Raspberry Pi" /proc/device-tree/model
  register: grep_device_tree_model_raspberrypi
  failed_when: false
  changed_when: false

- name: Set raspberry_pi fact to true
  set_fact:
    raspberry_pi: true
  when:
    grep_cpuinfo_raspberrypi.rc == 0 or grep_device_tree_model_raspberrypi.rc == 0

- name: Set detected_distribution to Raspbian
  set_fact:
    detected_distribution: Raspbian
  when: >
    raspberry_pi|default(false) and
    ( ansible_facts.lsb.id|default("") == "Raspbian" or
      ansible_facts.lsb.description|default("") is match("[Rr]aspbian.*") )

- name: Set detected_distribution to Raspbian (ARM64 on Debian Buster)
  set_fact:
    detected_distribution: Raspbian
  when:
    - ansible_facts.architecture is search("aarch64")
    - raspberry_pi|default(false)
    - ansible_facts.lsb.description|default("") is match("Debian.*buster")

- name: Set detected_distribution_major_version
  set_fact:
    detected_distribution_major_version: "{{ ansible_facts.lsb.major_release }}"
  when:
    - detected_distribution | default("") == "Raspbian"

- name: execute OS related tasks on the Raspberry Pi
  include_tasks: "{{ item }}"
  with_first_found:
    - "prereq/{{ detected_distribution }}-{{ detected_distribution_major_version }}.yml"
    - "prereq/{{ detected_distribution }}.yml"
    - "prereq/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
    - "prereq/{{ ansible_distribution }}.yml"
    - "prereq/default.yml"
  when:
    - raspberry_pi|default(false)
