--- - name: Check if paru is already installed ansible.builtin.stat: path: /usr/bin/paru register: paru - name: Install paru when: not paru.stat.exists block: - name: Get the last github release ansible.builtin.uri: url: "https://api.github.com/repos/{{ paru_git_repo }}/releases/latest" return_content: true register: paru_release - name: Get the binary URL ({{ os_arch }}) ansible.builtin.set_fact: paru_url: "{{ item.browser_download_url }}" loop: "{{ paru_release.json.assets }}" when: "(os_arch + '.tar.zst') in item.name" - name: Download ansible.builtin.get_url: url: "{{ paru_url }}" dest: "/tmp/paru-{{ os_arch }}.tar.zst" mode: "0644" - name: Extract paru ansible.builtin.unarchive: src: "/tmp/paru-{{ os_arch }}.tar.zst" dest: /tmp remote_src: true extra_opts: - paru - name: Install paru binary ansible.builtin.copy: src: /tmp/paru dest: /usr/bin/paru remote_src: true mode: "0755" - name: Cleanup ansible.builtin.file: path: "{{ item }}" state: absent loop: - "/tmp/paru-{{ os_arch }}.tar.zst" - /tmp/paru