mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-27 21:24:16 -04:00
90 lines
3.2 KiB
YAML
Executable file
90 lines
3.2 KiB
YAML
Executable file
#!/usr/bin/env ansible-playbook
|
|
---
|
|
- name: Get binary abspaths and versions and add to BINARIES
|
|
hosts: localhost
|
|
gather_facts: false
|
|
vars:
|
|
DATA_DIR: '/Volumes/NVME/Users/squash/Code/archiveboxes/archivebox7/data4'
|
|
LIB_DIR: '{{DATA_DIR}}/lib'
|
|
LIB_DIR_BIN: '{{LIB_DIR}}/bin'
|
|
DEFAULT_PATH: '/bin'
|
|
load_binaries:
|
|
bash:
|
|
bin_name: bash
|
|
version_cmd: 'bash --version'
|
|
# ffmpeg:
|
|
# version_cmd: 'ffmpeg -version'
|
|
# PATH: '/opt/homebrew/bin:/usr/local/bin'
|
|
# ytdlp:
|
|
# bin_name: ytdlp
|
|
# curl:
|
|
# wget:
|
|
# bin_name: wget
|
|
# version_cmd: 'wget --version']
|
|
tasks:
|
|
- name: Make sure lib folders exist
|
|
file:
|
|
path: '{{LIB_DIR_BIN}}'
|
|
state: directory
|
|
recurse: true
|
|
|
|
###################################################################################
|
|
- name: Get installed binary abspath
|
|
command: 'env PATH="{{item.1.PATH|default(DEFAULT_PATH)}}:$PATH" which {{item.1.bin_name|default(item.0)}}'
|
|
register: ABSPATHS_FULL
|
|
changed_when: false
|
|
ignore_errors: true
|
|
loop: "{{load_binaries|dictsort}}"
|
|
|
|
- name: Get installed binary version
|
|
command: 'env PATH="{{item.1.PATH|default(DEFAULT_PATH)}}:$PATH" {{item.1.version_cmd|default((item.1.bin_name|default(item.0)) + " --version")}}'
|
|
register: VERSIONS_FULL
|
|
changed_when: false
|
|
ignore_errors: true
|
|
loop: "{{load_binaries|dictsort}}"
|
|
|
|
- name: Symlink installed binary into lib bin folder
|
|
file:
|
|
src: "{{ item }}"
|
|
dest: "{{ LIB_DIR_BIN }}/{{ item|basename }}"
|
|
state: link
|
|
loop: "{{ABSPATHS_FULL.results|map(attribute='stdout_lines')|map('first')}}"
|
|
|
|
- name: Collecting abspath results
|
|
set_fact:
|
|
BINARY_ABSPATHS: "{{ BINARY_ABSPATHS | default({}) | combine({item.0: item.1}) }}"
|
|
loop: "{{ keys | zip(values) }}"
|
|
vars:
|
|
keys: "{{load_binaries|dictsort|map(attribute='0')}}"
|
|
values: "{{ABSPATHS_FULL.results|map(attribute='stdout_lines')|map('first')}}"
|
|
|
|
- name: Collecting version results
|
|
set_fact:
|
|
BINARY_VERSIONS: "{{ BINARY_VERSIONS | default({}) | combine({item.0: item.1}) }}"
|
|
loop: "{{ keys | zip(values) }}"
|
|
vars:
|
|
keys: "{{load_binaries|dictsort|map(attribute='0')}}"
|
|
values: "{{VERSIONS_FULL.results|map(attribute='stdout_lines')|map('first')|map('regex_replace', '^.*?v?([\\d\\.]+).*$', '\\1')}}"
|
|
|
|
- name: Updating BINARIES with loaded abspaths & versions
|
|
set_fact:
|
|
BINARIES: "{{
|
|
BINARIES
|
|
| default({})
|
|
| combine({
|
|
item: load_binaries[item]|combine({
|
|
'bin_name': BINARY_ABSPATHS[item]|basename,
|
|
'abspath': BINARY_ABSPATHS[item],
|
|
'version': BINARY_VERSIONS[item],
|
|
'symlink': LIB_DIR_BIN + '/' + BINARY_ABSPATHS[item]|basename,
|
|
'version_cmd': load_binaries[item]['version_cmd']|default(item + ' --version'),
|
|
}),
|
|
})
|
|
}}"
|
|
cacheable: true
|
|
loop: "{{load_binaries|dictsort|map(attribute='0')}}"
|
|
|
|
###################################################################################
|
|
|
|
- debug:
|
|
msg: "{{ {'BINARIES': BINARIES} }}"
|