From ad9d1fbe4f45a18e44ec4b30cd180611ded95f16 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Sat, 29 Apr 2023 00:43:52 +0100 Subject: [PATCH] Add glab role for macOS, Debiam distros, and Windows --- roles/glab/tasks/Darwin.yaml | 5 +++ roles/glab/tasks/Debian.yaml | 64 +++++++++++++++++++++++++++++++++++ roles/glab/tasks/Windows.yaml | 5 +++ roles/glab/tasks/main.yaml | 2 ++ 4 files changed, 76 insertions(+) create mode 100644 roles/glab/tasks/Darwin.yaml create mode 100644 roles/glab/tasks/Debian.yaml create mode 100644 roles/glab/tasks/Windows.yaml create mode 100644 roles/glab/tasks/main.yaml diff --git a/roles/glab/tasks/Darwin.yaml b/roles/glab/tasks/Darwin.yaml new file mode 100644 index 0000000..d237a31 --- /dev/null +++ b/roles/glab/tasks/Darwin.yaml @@ -0,0 +1,5 @@ +--- +- name: install homebrew package + homebrew: + name: glab + state: latest diff --git a/roles/glab/tasks/Debian.yaml b/roles/glab/tasks/Debian.yaml new file mode 100644 index 0000000..86a8aaa --- /dev/null +++ b/roles/glab/tasks/Debian.yaml @@ -0,0 +1,64 @@ +--- +- 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 + +- set_fact: + glab_version: '{{glab_version_output.stdout | replace("glab version ", "v")}}' + 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' + +- 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 diff --git a/roles/glab/tasks/Windows.yaml b/roles/glab/tasks/Windows.yaml new file mode 100644 index 0000000..6c0116a --- /dev/null +++ b/roles/glab/tasks/Windows.yaml @@ -0,0 +1,5 @@ +--- +- name: install chocolatey package + win_chocolatey: + name: glab + state: latest diff --git a/roles/glab/tasks/main.yaml b/roles/glab/tasks/main.yaml new file mode 100644 index 0000000..6853678 --- /dev/null +++ b/roles/glab/tasks/main.yaml @@ -0,0 +1,2 @@ +--- +- include_tasks: '{{ansible_os_family}}.yaml'