--- - name: Validate manual versioning folder ansible.builtin.file: state: directory path: ~/.ansible_gh_release_versions mode: '0755' - name: Setting local release file path set_fact: local_version_file: "~/.ansible_gh_release_versions/{{ name }}" - name: Fetch latest release tarball url shell: cmd: curl -s https://api.github.com/repos/{{ repo }}/releases/latest | jq -r '.assets[] | select(.browser_download_url|test("{{ filter }}")) | .browser_download_url' warn: false register: tar_url changed_when: false - name: Get latest version tag from github shell: cmd: 'echo {{ tar_url.stdout }} | grep -oP "(?<=download\/).*(?=\/)"' changed_when: false register: version - name: Get latest version from local entry set_fact: local_version: "{{ lookup('file', local_version_file, errors='ignore') | default(NOT_FOUND) }}" version: "{{ version.stdout }}" tar_url: "{{ tar_url.stdout }}" tar_download_location: "/tmp/{{ name }}.tar.gz" failed_when: false - name: Unarchive the release ansible.builtin.unarchive: src: "{{ tar_url }}" dest: /tmp/ remote_src: yes when: version != local_version - name: Unarchive release source ansible.builtin.unarchive: src: "https://github.com/{{ repo }}/archive/refs/tags/{{ version }}.tar.gz" dest: /tmp/ remote_src: yes when: version != local_version and (include_source is defined) - name: Moving bin to /usr/local/bin become: true shell: | cp /tmp{{ bin_path }} /usr/local/bin/ when: version != local_version - name: Adding man page if needed become: true shell: | cp /tmp{{ man_path }} /usr/share/man/man1/ register: added_man when: man_path is defined and (version != local_version) - name: Update mandb if needed become: true shell: mandb || true when: added_man is defined and (version != local_version) - name: Adding autocomplete if needed shell: | cp /tmp/{{ autocomplete_path }} ~/.shellconfig/autocomplete/{{ name }}.autocomplete when: autocomplete_path is defined and (version != local_version) - name: Updating local version entry shell: echo {{ version }} > {{ local_version_file }} when: version != local_version