From b970cbc8cae38eb65181552d38ac9aeab906f093 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Fri, 19 Apr 2024 20:50:44 +0100 Subject: [PATCH] Update kitty to install from GitHub on Debian Older version of kitty have terrible font rendering on Linux, e.g. the one shipped with Ubuntu 22.04, so instead install the latest version from the provided GitHub packages. --- roles/kitty/tasks/Debian.yaml | 96 ++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 2 deletions(-) diff --git a/roles/kitty/tasks/Debian.yaml b/roles/kitty/tasks/Debian.yaml index d4982e7..753106d 100644 --- a/roles/kitty/tasks/Debian.yaml +++ b/roles/kitty/tasks/Debian.yaml @@ -1,6 +1,98 @@ --- -- name: install apt package +- name: remove apt package become: true apt: name: kitty - state: latest + state: absent + +- name: get latest version + uri: + url: https://api.github.com/repos/kovidgoyal/kitty/releases/latest + headers: '{{github_auth_headers}}' + register: latest + +- set_fact: + kitty_latest_version: '{{latest.json.tag_name[1:]}}' + kitty_exe: /usr/local/bin/kitty + kitty_package_dir: /usr/local/stow/kitty + +- name: check if already installed + stat: + path: '{{kitty_exe}}' + register: kitty + +- name: get installed version + when: kitty.stat.exists + command: '{{kitty_exe}} --version' + register: kitty_version + changed_when: false + +- when: kitty.stat.exists + set_fact: + kitty_install_version: + '{{kitty_version.stdout | regex_replace("^.*(\d+\.\d+\.\d+).*$", "\1")}}' + +- set_fact: + kitty_asset_query: > + [? contains(name, + `kitty-{{kitty_latest_version}}-{{ansible_architecture}}.txz`)] | [0] + +- set_fact: + kitty_install_required: > + {{ kitty_install_version is not defined or + kitty_latest_version != kitty_install_version }} + kitty_asset: "{{ latest.json.assets | json_query(kitty_asset_query) }}" + +- name: uninstall package + when: kitty_install_required and kitty.stat.exists + become: true + command: + cmd: 'stow --delete --target /usr/local .' + chdir: '{{kitty_package_dir}}' + +- name: remove outdated package + when: kitty_install_required and kitty.stat.exists + become: true + file: + state: absent + path: '{{kitty_package_dir}}' + +- set_fact: + kitty_package_archive: '{{kitty_package_dir}}/{{kitty_asset.name}}' + +- name: create package directory + become: true + file: + state: directory + path: '{{kitty_package_dir}}' + +- name: download package + when: kitty_install_required + become: true + get_url: + url: '{{kitty_asset.browser_download_url}}' + dest: '{{kitty_package_archive}}' + environment: '{{proxy_environment}}' + +- name: decompress package + when: kitty_install_required + become: true + unarchive: + src: '{{kitty_package_archive}}' + dest: '{{kitty_package_dir}}' + owner: root + group: staff + +- name: remove package archive + when: kitty_install_required + become: true + file: + state: absent + path: '{{kitty_package_archive}}' + +- name: install package + when: kitty_install_required + become: true + command: + cmd: 'stow --no-folding --target /usr/local .' + chdir: '{{kitty_package_dir}}'