local/roles/glab/tasks/Debian.yaml

69 lines
1.8 KiB
YAML

---
- set_fact:
glab: /usr/bin/glab
- name: stat the executable
stat:
path: '{{glab}}'
register: stat_glab
- name: get instlal version
when: stat_glab.stat.exists
command: '{{glab}} --version'
register: glab_version_output
changed_when: false
- when: stat_glab.stat.exists
set_fact:
glab_version: '{{glab_version_output.stdout | replace("glab version ", "v")}}'
- set_fact:
gitlab_api: 'https://gitlab.com/api/v4'
project_id: 'gitlab-org%2Fcli'
- name: get list of gitlab releases
uri:
url:
'{{gitlab_api}}/projects/{{project_id}}/releases'
register: releases
- set_fact:
latest: '{{releases.json[0]}}'
latest_version: '{{releases.json[0].tag_name}}'
query: >
[?contains(name, `glab`)] |
[?contains(name, `Linux`)] |
[?contains(name, `{{ansible_machine}}.deb`)] | [0]
- set_fact:
asset: '{{latest.assets.links|json_query(query)}}'
- name: create download directory
when: glab_version is not defined or glab_version != latest_version
tempfile:
state: directory
suffix: glab
register: tempdir
- name: download .deb file
when: glab_version is not defined or glab_version != latest_version
get_url:
url: '{{asset.url}}'
dest: '{{tempdir.path}}/glab.deb'
environment: '{{proxy_environment}}'
- name: install .deb file
when: glab_version is not defined or glab_version != latest_version
become: true
apt:
deb: '{{tempdir.path}}/glab.deb'
- name: remove download directory
when: glab_version is not defined or glab_version != latest_version
file:
state: absent
path: '{{tempdir.path}}'
- name: install zsh completions
when: glab_version is not defined or glab_version != latest_version
command:
glab completion -s zsh > ~/.local/share/zsh/site-functions/_glab