From a92a94e9f87ad87947cd43d2ec8542caa2e297c6 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 | 104 +++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 2 deletions(-) diff --git a/roles/kitty/tasks/Debian.yaml b/roles/kitty/tasks/Debian.yaml index d4982e7..254bb98 100644 --- a/roles/kitty/tasks/Debian.yaml +++ b/roles/kitty/tasks/Debian.yaml @@ -1,6 +1,106 @@ --- -- 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 + 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}}'