Dot_Files/roles/nvim/tasks/install-nvim.yml

99 lines
3.2 KiB
YAML
Raw Normal View History

2022-08-01 21:03:44 -05:00
---
2022-08-01 23:41:47 -05:00
- name: Check if nvim is installed
ansible.builtin.command: which nvim
changed_when: false
register: nvim_installed
failed_when: nvim_installed.rc > 1
- name: Request nvim install if nvim missing
ansible.builtin.set_fact:
nvim_install_needed: "{{ nvim_install_needed | default(true) }}"
when: nvim_installed.rc == 1
- name: Check if nvim needs update
# noqa risky-shell-pipe
ansible.builtin.shell: |
set pipefail
nvim --version | head -n 1 | awk -F '-' '{ print $NF }' | cut -c2-
changed_when: false
register: nvim_installed_version
when: nvim_installed.rc == 0
- name: Get nvim remote version
# noqa risky-shell-pipe
ansible.builtin.shell: |
set pipefail
# yamllint disable-line rule:line-length
NVIM_HEAD_VER="$(git ls-remote --tags https://github.com/neovim/neovim.git nightly \
| awk '{ print $1 }' \
| head -c 9)"
echo $NVIM_HEAD_VER >&2
printf "%s\n" "${NVIM_HEAD_VER}"
changed_when: false
register: nvim_remote_version
when: nvim_installed.rc == 0
- name: Request nvim install if nvim update needed
ansible.builtin.set_fact:
nvim_install_needed: "{{ nvim_install_needed | default(true) }}"
when: nvim_installed.rc == 0 and nvim_remote_version.stdout | default() != nvim_installed_version.stdout | default()
2022-08-01 21:03:44 -05:00
- name: Create working directory
ansible.builtin.tempfile:
state: directory
register: nvim_work_dir
2022-08-01 23:41:47 -05:00
when: nvim_install_needed is defined and nvim_install_needed is true
2022-08-01 21:03:44 -05:00
2022-08-01 23:41:47 -05:00
- name: Set nvim url
2022-08-01 21:03:44 -05:00
ansible.builtin.set_fact:
# yamllint disable-line rule:line-length
2022-08-01 23:41:47 -05:00
nvim_url: "{{ 'https://github.com/neovim/neovim/releases/download/nightly/nvim-' + nvim_platform | default('linux64') + '.tar.gz' }}"
when: nvim_install_needed is defined and nvim_install_needed is true
- name: Set nvim archive variables
ansible.builtin.set_fact:
2022-08-01 21:03:44 -05:00
nvim_checksum: "{{ 'sha256:' + nvim_url + '.sha256sum' }}"
nvim_archive_dest: "{{ nvim_work_dir.path + '/nvim.tar.gz' }}"
nvim_unpacked_dest: "{{ nvim_work_dir.path + '/nvim-unpacked' }}"
2022-08-01 23:41:47 -05:00
when: nvim_install_needed is defined and nvim_install_needed is true
2022-08-01 21:03:44 -05:00
- name: Download neovim archive from releases
become: true
ansible.builtin.get_url:
url: "{{ nvim_url }}"
checksum: "{{ nvim_checksum }}"
dest: "{{ nvim_archive_dest }}"
mode: 0644
2022-08-01 23:41:47 -05:00
when: nvim_install_needed is defined and nvim_install_needed is true
- name: Create unpack directory
ansible.builtin.file:
state: directory
mode: 0644
path: "{{ nvim_unpacked_dest }}"
when: nvim_install_needed is defined and nvim_install_needed is true
2022-08-01 21:03:44 -05:00
- name: Extract neovim archive
become: true
ansible.builtin.unarchive:
src: "{{ nvim_archive_dest }}"
dest: "{{ nvim_unpacked_dest }}"
2022-08-01 23:41:47 -05:00
remote_src: true
when: nvim_install_needed is defined and nvim_install_needed is true
2022-08-01 21:03:44 -05:00
- name: Copy neovim files into place
become: true
2022-08-01 23:41:47 -05:00
# noqa command-instead-of-module
ansible.builtin.command:
argv:
- rsync
- -avPr
- "{{ nvim_unpacked_dest }}/nvim-{{ nvim_platform | default('linux64') }}/{{ item }}"
- "{{ nvim_sync_dest_dir | default('/usr/') }}"
changed_when: true
when: nvim_install_needed is defined and nvim_install_needed is true
loop:
- bin
- lib
- share