local/roles/kitty/tasks/Debian.yaml
Kenneth Benzie (Benie) 056ae6e169 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.
2024-04-19 21:51:58 +01:00

108 lines
2.7 KiB
YAML

---
- name: remove apt package
become: true
apt:
name: kitty
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}}'