linux-config/roles/gh_release_bin/tasks/main.yml

74 lines
2.2 KiB
YAML

---
- 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