diff options
| author | Ahmed AbdelHalim <[email protected]> | 2026-03-04 00:47:09 +0100 |
|---|---|---|
| committer | Ahmed AbdelHalim <[email protected]> | 2026-03-04 00:49:46 +0100 |
| commit | 87cf9ba56ebe545e0f60e1173e2abf435abf779d (patch) | |
| tree | 44f50edc747c8f84cba74a392df6110981789617 /roles/python | |
| parent | 7dac53e392e4226973846fe68ebe4a9828dc18ab (diff) | |
Refactor language roles to use mise and install multiple version support
Diffstat (limited to 'roles/python')
| -rw-r--r-- | roles/python/defaults/main.yml | 4 | ||||
| -rw-r--r-- | roles/python/meta/argument_specs.yml | 12 | ||||
| -rw-r--r-- | roles/python/meta/main.yml | 5 | ||||
| -rw-r--r-- | roles/python/tasks/main.yml | 64 | ||||
| -rw-r--r-- | roles/python/vars/archlinux.yml | 2 | ||||
| -rw-r--r-- | roles/python/vars/debian.yml | 2 |
6 files changed, 34 insertions, 55 deletions
diff --git a/roles/python/defaults/main.yml b/roles/python/defaults/main.yml index c6cfa5a4..2e43307e 100644 --- a/roles/python/defaults/main.yml +++ b/roles/python/defaults/main.yml @@ -1,2 +1,4 @@ --- -python_versions: [] +python_versions: + - "latest" +python_uv_version: "latest" diff --git a/roles/python/meta/argument_specs.yml b/roles/python/meta/argument_specs.yml index d0d29d41..f087f142 100644 --- a/roles/python/meta/argument_specs.yml +++ b/roles/python/meta/argument_specs.yml @@ -1,11 +1,15 @@ --- argument_specs: main: - short_description: "Install uv, pipx and python (versions) on Linux distributions" - description: "Install uv, pipx and python (versions) on Linux distributions" + short_description: "Install Python versions on Linux distributions" + description: "Install Python versions on Linux distributions" options: python_versions: type: "list" - description: "The extra python versions to install (system is used by default when available)" + description: "Python versions to install via mise (e.g. 'latest', '3.13')" elements: "str" - default: [] + default: ["latest"] + python_uv_version: + type: "str" + description: "uv version to install via mise" + default: "latest" diff --git a/roles/python/meta/main.yml b/roles/python/meta/main.yml index bdd71088..d90de25e 100644 --- a/roles/python/meta/main.yml +++ b/roles/python/meta/main.yml @@ -1,10 +1,9 @@ --- dependencies: - - role: "bash" - - role: "curl" + - role: "mise" galaxy_info: author: "a14m" - description: "Install uv and python (versions) on Linux distributions" + description: "Install uv and python (versions) via mise on Linux distributions" license: "MIT" min_ansible_version: "2.18" platforms: diff --git a/roles/python/tasks/main.yml b/roles/python/tasks/main.yml index e721e931..66cbda67 100644 --- a/roles/python/tasks/main.yml +++ b/roles/python/tasks/main.yml @@ -1,49 +1,27 @@ --- -- name: "Include OS-specific variables" - ansible.builtin.include_vars: "{{ ansible_facts['os_family'] | lower }}.yml" - -- name: "Check if uv binary exists" - ansible.builtin.stat: - path: "{{ ansible_facts['env']['HOME'] }}/.local/bin/uv" - register: python_uv_binary - -- name: "Download uv installer" - ansible.builtin.get_url: - url: "https://astral.sh/uv/install.sh" - dest: "/tmp/install_uv.sh" - mode: "0755" - when: not python_uv_binary.stat.exists - -- name: "Run uv installer" +- name: "Check installed python versions" ansible.builtin.command: - cmd: "/tmp/install_uv.sh" - args: - creates: "{{ ansible_facts['env']['HOME'] }}/.local/bin/uv" - when: not python_uv_binary.stat.exists + cmd: "mise ls python" + register: python_installed_versions + changed_when: false + failed_when: false -- name: "Symlink uv to /usr/local/bin" - become: true - ansible.builtin.file: - src: "{{ ansible_facts['env']['HOME'] }}/.local/bin/uv" - dest: "/usr/local/bin/uv" - state: "link" +- name: "Install python {{ item }}" + ansible.builtin.command: + cmd: "mise use --global python@{{ item }}" + changed_when: true + when: item not in python_installed_versions.stdout + loop: "{{ python_versions }}" -- name: "Add uv to shell profile" - ansible.builtin.blockinfile: - path: "{{ ansible_facts['env']['HOME'] }}/.bashrc" - state: "present" - prepend_newline: true - append_newline: true - marker: "# ==== {mark} ANSIBLE PATH CONFIG" - block: | - if [ -d "$HOME/.local/bin" ]; then - export PATH="$HOME/.local/bin:$PATH" - fi +- name: "Check installed uv version" + ansible.builtin.command: + cmd: "mise ls uv" + register: python_uv_installed_version + changed_when: false + failed_when: false -- name: "Install python versions" +- name: "Install uv {{ python_uv_version }}" ansible.builtin.command: - cmd: "uv python install {{ item }}" - register: python_install_result - changed_when: "'already installed' not in python_install_result.stderr" - loop: "{{ python_versions }}" - when: python_versions | length > 0 + cmd: "mise use --global uv@{{ python_uv_version }}" + changed_when: true + when: uv_version not in python_uv_installed_version.stdout diff --git a/roles/python/vars/archlinux.yml b/roles/python/vars/archlinux.yml deleted file mode 100644 index 49cedb43..00000000 --- a/roles/python/vars/archlinux.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -python_packaging: "python-packaging" diff --git a/roles/python/vars/debian.yml b/roles/python/vars/debian.yml deleted file mode 100644 index 2fb30364..00000000 --- a/roles/python/vars/debian.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -python_packaging: "python3-packaging" |
