Use latest neovim from GitHub on Debian based distros
This commit is contained in:
parent
b63ff02e0c
commit
5126d06e1e
@ -1,26 +1,108 @@
|
||||
---
|
||||
- name: slurp /etc/os-release
|
||||
slurp:
|
||||
src: /etc/os-release
|
||||
register: os_release_slurp
|
||||
- set_fact:
|
||||
os_release: "{{ os_release_slurp.content |
|
||||
b64decode | trim() | replace('=', ': ') | from_yaml }}"
|
||||
# Don't neovim packages because they are all behind, even Debian unstable.
|
||||
# Instead use the latest pre-build Linux package from GitHub, then stow them
|
||||
# into /usr/local.
|
||||
|
||||
- name: add neovim stable ppa
|
||||
when: "'ID_LIKE' in os_release and os_release.ID_LIKE == 'ubuntu debian'"
|
||||
- name: remove apt package
|
||||
become: true
|
||||
apt_repository:
|
||||
repo: ppa:neovim-ppa/stable
|
||||
codename: '{{os_release.UBUNTU_CODENAME}}'
|
||||
update_cache: true
|
||||
apt:
|
||||
name: neovim
|
||||
state: absent
|
||||
|
||||
- name: install apt package
|
||||
- name: install python provider apt package
|
||||
become: true
|
||||
apt:
|
||||
name:
|
||||
- neovim
|
||||
- python3-neovim
|
||||
- stow
|
||||
state: latest
|
||||
|
||||
- name: stat installed executable
|
||||
stat:
|
||||
path: /usr/local/bin/nvim
|
||||
register: nvim
|
||||
|
||||
- name: get installed version
|
||||
when: nvim.stat.exists
|
||||
command: nvim --version
|
||||
register: nvim_version
|
||||
changed_when: false
|
||||
|
||||
- when: nvim.stat.exists
|
||||
set_fact:
|
||||
installed_version: '{{nvim_version.stdout_lines[0][5:]}}'
|
||||
|
||||
- name: get latest version
|
||||
uri:
|
||||
url: https://api.github.com/repos/neovim/neovim/releases/latest
|
||||
register: latest
|
||||
|
||||
- set_fact:
|
||||
install_required:
|
||||
'{{installed_version is not defined or
|
||||
installed_version != latest.json.tag_name}}'
|
||||
asset_query: '[?contains(name, `nvim-linux64.tar.gz`)]'
|
||||
package_dir: '/usr/local/lib/nvim'
|
||||
- set_fact:
|
||||
uninstall_required: '{{nvim.stat.exists and install_required}}'
|
||||
asset: '{{latest.json.assets | json_query(asset_query)}}'
|
||||
package_path: '{{package_dir}}/{{latest.json.name}}'
|
||||
|
||||
- name: uninstall old package from /usr/local
|
||||
when: uninstall_required
|
||||
become: true
|
||||
command:
|
||||
cmd: 'stow --delete --target /usr/local .'
|
||||
chdir: '{{package_dir}}/nvim-linux64'
|
||||
|
||||
- name: remove old package
|
||||
become: true
|
||||
when: uninstall_required
|
||||
file:
|
||||
path: '{{package_dir}}/nvim-linux64'
|
||||
state: absent
|
||||
|
||||
- name: create package directory
|
||||
become: true
|
||||
file:
|
||||
path: '{{package_dir}}'
|
||||
state: directory
|
||||
|
||||
- name: download package archive
|
||||
when: install_required
|
||||
become: true
|
||||
get_url:
|
||||
url: '{{asset[0].browser_download_url}}'
|
||||
dest: '{{package_path}}'
|
||||
|
||||
- name: extract package archive
|
||||
when: install_required
|
||||
become: true
|
||||
unarchive:
|
||||
src: '{{package_path}}'
|
||||
dest: '{{package_dir}}'
|
||||
|
||||
- name: remove downloaded archive
|
||||
when: install_required
|
||||
become: true
|
||||
file:
|
||||
path: '{{package_path}}'
|
||||
state: absent
|
||||
|
||||
- name: move man to share/man
|
||||
when: install_required
|
||||
become: true
|
||||
command:
|
||||
argv:
|
||||
- mv
|
||||
- '{{package_dir}}/nvim-linux64/man'
|
||||
- '{{package_dir}}/nvim-linux64/share'
|
||||
|
||||
- name: install package to /usr/local
|
||||
when: install_required
|
||||
become: true
|
||||
command:
|
||||
cmd: 'stow --target /usr/local .'
|
||||
chdir: '{{package_dir}}/nvim-linux64'
|
||||
|
||||
- include_tasks: Unix.yaml
|
||||
|
Loading…
x
Reference in New Issue
Block a user