--- - name: Install language servers on debian hosts become: true community.general.npm: name: "{{ item }}" global: true loop: '{{ language_servers | map(attribute="package") | list }}' - name: Create neovim install directory become: true ansible.builtin.file: state: directory path: "{{ neovim.install_path }}" owner: "{{ ansible_user_id }}" group: "{{ ansible_user_gid }}" mode: "0755" - name: Register the current neovim version ansible.builtin.command: argv: - "{{ neovim.install_path }}/bin/nvim" - "--version" register: neovim_stats changed_when: false ignore_errors: true - name: Parse the current neovim version ansible.builtin.set_fact: neovim_installed_version: neovim_stats.stdout_lines[0] | regex_search('(v\d+\.\d+\.\d+)') when: neovim_stats.rc == 0 - name: Download neovim {{ neovim.version }} ansible.builtin.get_url: url: "https://github.com/neovim/neovim/releases/download/{{ neovim.version }}/nvim-linux-x86_64.tar.gz" dest: /tmp/nvim-linux64.tar.gz mode: "0755" checksum: "{{ neovim.download_checksum }}" when: neovim_stats.rc > 0 or neovim_installed_version != neovim.version register: neovim_download - name: Extract downloaded neovim version ansible.builtin.unarchive: src: /tmp/nvim-linux64.tar.gz dest: "{{ neovim.install_path }}" extra_opts: - "--strip-components=1" - "--show-stored-names" - "--overwrite" when: | neovim_download.state == 'file' and (neovim_installed_version is undefined or neovim_installed_version != neovim.version) - name: Add neovim to PATH become: true ansible.builtin.template: src: "templates/debian/nvim.profile.j2" dest: "/etc/profile.d/neovim.sh" mode: "0755"