ArchiveBox/archivebox/playbooks/install_pip.yml
2024-09-17 00:48:47 -07:00

75 lines
2.3 KiB
YAML
Executable file

#!/usr/bin/env ansible-playbook
---
- import_playbook: load_binaries.yml
vars:
load_binaries:
python: {bin_name: 'python3', version_cmd: 'python3 --version'}
pip: {bin_name: 'pip3', version_cmd: 'pip3 --version'}
- name: "Install python, pip, and pipx"
hosts: localhost
gather_facts: no
vars:
DATA_DIR: '/Volumes/NVME/Users/squash/Code/archiveboxes/archivebox7/data4'
LIB_DIR: '{{DATA_DIR}}/lib'
LIB_DIR_BIN: '{{LIB_DIR}}/bin'
LIB_DIR_PIP: '{{LIB_DIR}}/pip'
LIB_DIR_PIP_BIN: '{{LIB_DIR_PIP}}/venv/bin'
MIN_PYTHON_VERSION: '3.11.9'
MIN_PIP_VERSION: '24.2'
state: 'present'
install_pip:
pip:
bin_name: 'pip'
packages: ['pip', 'setuptools']
# ytdlp:
# bin_name: 'yt-dlp'
# packages: ['yt-dlp']
tasks:
- name: Make sure lib folders exist
file:
path: '{{item}}'
state: directory
recurse: true
loop:
- '{{LIB_DIR_PIP}}'
- '{{LIB_DIR_BIN}}'
when: BINPROVIDERS.pip is not defined
###################################################################################
- assert:
that:
- BINARIES.python.version is version(MIN_PYTHON_VERSION, '>=')
- BINARIES.pip.version is version(MIN_PIP_VERSION, '>=')
quiet: true
when: BINPROVIDERS.pip is not defined
- name: "Install pip packages: {{install_pip}}"
ansible.builtin.pip:
name: '{{item}}'
state: "{{state}}"
virtualenv: '{{LIB_DIR_PIP}}/venv'
virtualenv_python: "{{BINARIES.python.abspath}}"
virtualenv_site_packages: yes
loop: "{{install_pip|dictsort|map(attribute='1')|map(attribute='packages')|flatten}}"
###################################################################################
- set_fact:
PIP_BINPROVIDERS:
pip:
installer_abspath: "{{BINARIES.pip.abspath}}"
installer_version: "{{BINARIES.pip.version}}"
PATH: "{{LIB_DIR_PIP_BIN}}"
when: BINPROVIDERS.pip is not defined
- set_fact:
BINPROVIDERS: "{{ BINPROVIDERS | default({}) | combine(PIP_BINPROVIDERS) }}"
cacheable: true
when: BINPROVIDERS.pip is not defined
- debug:
msg: "{{ {'BINARIES': BINARIES, 'BINPROVIDERS': BINPROVIDERS} }}"