diff options
Diffstat (limited to 'roles/pacman/tasks')
-rw-r--r-- | roles/pacman/tasks/main.yml | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/roles/pacman/tasks/main.yml b/roles/pacman/tasks/main.yml new file mode 100644 index 0000000..8e20aa5 --- /dev/null +++ b/roles/pacman/tasks/main.yml @@ -0,0 +1,48 @@ +- name: Check if pacman is installed + command: pacman --version + register: pacman_version + changed_when: no + ignore_errors: yes + +- when: pacman_version.rc == 0 + become: yes + block: + - name: Upgrade packages + community.general.pacman: + update_cache: yes + upgrade: yes + notify: + - Reboot + - Wait for connectivity + rescue: + - fail: + msg: Upgrading packages failed for an unknown reason! + when: not etc_versioned + + - name: There are uncommitted changes + shell: cd /etc && git status --porcelain=v1 + register: git_status + changed_when: no + + - fail: + msg: Upgrading packages failed for an unknown reason! + when: not git_status.stdout + + - name: All changes are pacman.d/gnupg + shell: cd /etc && git status --porcelain=v1 | cut -c 4- | grep -G -v '^pacman.d/gnupg/' + register: only_gnupg + changed_when: no + ignore_errors: yes + + - name: Commit pacman.d/gnupg + command: | + etckeeper commit 'pacman: GPG keys' + when: git_status.stdout and only_gnupg.rc != 0 + + - name: Upgrade packages after GPG keys + community.general.pacman: + update_cache: yes + upgrade: yes + notify: + - Reboot + - Wait for connectivity |