--- - 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 become: true 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 --ignore='lib/.*$' ." chdir: '{{kitty_package_dir}}'