# vim: set filetype=yaml.ansible : # ## Package: cargo ## Description: the Rust package manager ## Version: system ## Methods: system ## Helpers: - --- - name: Set default cargo values # {{{ ansible.builtin.set_fact: cargo: methods: default: [system] pkgname: default: cargo Archlinux: rust pkg_deps: default: - rust Archlinux: [] - name: Finalise cargo default facts ansible.builtin.set_fact: cargo: methods: "{{ cargo.methods[os_family] | default(cargo.methods.default) }}" pkgname: "{{ cargo.pkgname[os_family] | default(cargo.pkgname.default) }}" pkg_deps: "{{ cargo.pkg_deps[os_family] | default(cargo.pkg_deps.default) }}" # }}} - name: Configure cargo when: - "'cargo' not in __configured" block: - name: Set cargo install method when: - cargo_imethod is undefined ansible.builtin.set_fact: cargo_imethod: "{{ imethod if imethod in cargo.methods else cargo.methods[0] }}" - name: Append cargo to install list when: - cargo_imethod == "system" block: - name: Add dependencies when: - cargo.pkg_deps is defined loop: "{{ cargo.pkg_deps }}" loop_control: loop_var: dep ansible.builtin.include_tasks: "pkgs/{{ dep }}.yml" - name: Queue cargo install ansible.builtin.set_fact: pkg_sys: "{{ pkg_sys + [cargo.pkgname] }}" - name: Finalise cargo system install ansible.builtin.set_fact: cargo_install: "{{ cargo_imethod }}={{ cargo.pkgname }}" - name: Finalize cargo configuration ansible.builtin.set_fact: __configured: "{{ __configured | combine ( { 'cargo': cargo_install } ) }}"