summaryrefslogtreecommitdiffstats
path: root/roles/python/tasks
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2026-03-04 00:47:09 +0100
committerAhmed Abdelhalim <[email protected]>2026-03-04 00:49:46 +0100
commit570555cf2d464078190240df724ca4f148c72b48 (patch)
tree44f50edc747c8f84cba74a392df6110981789617 /roles/python/tasks
parentcdbb782ab1aa2c337fcfeca0693ac8e22582d186 (diff)
Refactor language roles to use mise and install multiple version support
Diffstat (limited to 'roles/python/tasks')
-rw-r--r--roles/python/tasks/main.yml64
1 files changed, 21 insertions, 43 deletions
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