41 lines
1.6 KiB
YAML
41 lines
1.6 KiB
YAML
---
|
|
# tasks file for eget
|
|
|
|
- name: "Validate eget_packages entries"
|
|
ansible.builtin.assert:
|
|
that:
|
|
- item.repo is defined and item.repo is string and item.repo | length > 0
|
|
- item.tag is defined and item.tag is string and item.tag | length > 0
|
|
- item.to is not defined or item.to is string
|
|
- item.file is not defined or item.file is string
|
|
- item.asset is not defined or item.asset is string
|
|
- item.assets is not defined or (item.assets is sequence and item.assets is not string)
|
|
fail_msg: >-
|
|
Некорректный элемент eget_packages (repo/tag — непустые строки;
|
|
asset/file/to — строки; assets — список строк): {{ item }}
|
|
quiet: true
|
|
loop: "{{ eget_packages }}"
|
|
loop_control:
|
|
label: "{{ item.repo | default('?') }}"
|
|
|
|
- name: "Ensure eget is installed"
|
|
ansible.builtin.import_tasks: install_eget.yml
|
|
|
|
- name: "Install pinned binaries with eget"
|
|
ansible.builtin.command:
|
|
argv: "{{ _eget_argv }}"
|
|
vars:
|
|
_eget_to: "{{ item.to | default(eget_packages_to) }}"
|
|
_eget_assets: >-
|
|
{{ item.assets | default([item.asset] if item.asset is defined else []) }}
|
|
_eget_argv: >-
|
|
{{ [eget_install_path, item.repo, '--upgrade-only',
|
|
'--to=' ~ _eget_to, '--tag=' ~ item.tag]
|
|
+ (['--file=' ~ item.file] if item.file is defined else [])
|
|
+ (['--asset'] | product(_eget_assets) | map('join', '=') | list) }}
|
|
register: eget_install
|
|
changed_when: eget_no_upgrade_marker not in eget_install.stderr
|
|
loop: "{{ eget_packages }}"
|
|
loop_control:
|
|
label: "{{ item.repo }} {{ item.tag }}"
|