From 8555bc541dfef2c9f730de01def195df702e7af3 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Wed, 25 Mar 2026 00:02:57 +0100 Subject: [PATCH] Make GNOME extension installation idempotent --- .../profile_workstation_gnome/tasks/main.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ansible/roles/profile_workstation_gnome/tasks/main.yml b/ansible/roles/profile_workstation_gnome/tasks/main.yml index a09ca3e..845fb6f 100644 --- a/ansible/roles/profile_workstation_gnome/tasks/main.yml +++ b/ansible/roles/profile_workstation_gnome/tasks/main.yml @@ -153,6 +153,15 @@ loop_control: label: "{{ item.uuid }}" +- name: Check installed workstation GNOME extensions + tags: [packages, gnome] + ansible.builtin.stat: + path: "{{ user_home }}/.local/share/gnome-shell/extensions/{{ item.uuid }}/metadata.json" + loop: "{{ workstation_gnome_extensions | default([]) }}" + loop_control: + label: "{{ item.uuid }}" + register: workstation_gnome_extension_install_state + - name: Install workstation GNOME extensions from downloaded archives tags: [packages, gnome] ansible.builtin.command: @@ -162,6 +171,14 @@ loop: "{{ workstation_gnome_extensions | default([]) }}" loop_control: label: "{{ item.uuid }}" + when: >- + not ( + workstation_gnome_extension_install_state.results + | selectattr('item.uuid', 'equalto', item.uuid) + | map(attribute='stat.exists') + | first + | default(false) + ) - name: Read current workstation GNOME enabled extensions tags: [gnome]