From 056ae6e1695ad5ea6e6dc8b1cb2881c3cc257e39 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 | 105 +++++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 2 deletions(-) diff --git a/roles/kitty/tasks/Debian.yaml b/roles/kitty/tasks/Debian.yaml index d4982e7..158ed14 100644 --- a/roles/kitty/tasks/Debian.yaml +++ b/roles/kitty/tasks/Debian.yaml @@ -1,6 +1,107 @@ --- -- 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}}' + +# FIXME: This is bound to break something somewhere but on Ubuntu 22.04 this +# file breaks a bunch of other stuff when the kitty package in installed in +# /usr/local with stow so we delete it before stowing. +- name: remove conflicting library + when: kitty_install_required + file: + state: absent + path: '{{kitty_package_dir}}/lib/libglib-2.0.so.0' + +- name: install package + when: kitty_install_required + become: true + command: + cmd: 'stow --no-folding --target /usr/local .' + chdir: '{{kitty_package_dir}}'