---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later

- hosts: localhost
  tasks:
    - name: Show Python info
      debug:
        var: ansible_python

    - name: Register cryptography version
      command: "{{ ansible_python.executable }} -c 'import cryptography; print(cryptography.__version__)'"
      register: cryptography_version

    - name: Register pyOpenSSL version
      command: "{{ ansible_python.executable }} -c 'import OpenSSL; print(OpenSSL.__version__)'"
      ignore_errors: true
      register: pyopenssl_version

    - name: Determine output directory
      set_fact:
        output_path: "{{ 'output-%0x' % ((2**32) | random) }}"

    - name: Find all roles
      ansible.builtin.find:
        paths:
          - "{{ (playbook_dir | default('.')) ~ '/roles' }}"
        file_type: directory
        depth: 1
      register: result

    - name: Create output directory
      ansible.builtin.file:
        path: "{{ output_path }}"
        state: directory

    - block:
      - name: Include all roles
        ansible.builtin.include_role:
          name: "{{ item }}"
        loop: "{{ result.files | map(attribute='path') | map('regex_replace', '.*/', '') | sort }}"

      always:
      - name: Remove output directory
        ansible.builtin.file:
          path: "{{ output_path }}"
          state: absent
