Files

61 lines
1.8 KiB
YAML

# 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 } ) }}"