From 5effc3f0aa45d234caf33caed171222ac64a3554 Mon Sep 17 00:00:00 2001
From: moson <moson@archlinux.org>
Date: Mon, 21 Aug 2023 09:25:55 +0200
Subject: [PATCH] aurweb: Refactor tasks for services/timers

Use variables to define our systemd unit files.

Signed-off-by: moson <moson@archlinux.org>
---
 roles/aurweb/defaults/main.yml | 24 ++++++++++++++
 roles/aurweb/tasks/main.yml    | 59 +++++++---------------------------
 2 files changed, 36 insertions(+), 47 deletions(-)

diff --git a/roles/aurweb/defaults/main.yml b/roles/aurweb/defaults/main.yml
index 35c1715d5..f0d8955fb 100644
--- a/roles/aurweb/defaults/main.yml
+++ b/roles/aurweb/defaults/main.yml
@@ -26,3 +26,27 @@ aurweb_window_length: '86400'
 aurweb_memcached_memory: 2048
 
 aurweb_workers: 4
+
+# aurweb timers and services are installed and restarted by default,
+# unless .install and .restart are explicitly set to "false"
+aurweb_timers:
+  - { name: "aurweb-git.timer" }
+  - { name: "aurweb-aurblup.timer" }
+  - { name: "aurweb-mkpkglists.timer" }
+  - { name: "aurweb-pkgmaint.timer" }
+  - { name: "aurweb-popupdate.timer" }
+  - { name: "aurweb-tuvotereminder.timer" }
+  - { name: "aurweb-usermaint.timer" }
+  - { name: "aurweb-github-mirror.timer" }
+
+aurweb_services:
+  - { name: "aurweb-git.service", restart: false }
+  - { name: "aurweb-aurblup.service", restart: false }
+  - { name: "aurweb-mkpkglists.service", restart: false }
+  - { name: "aurweb-pkgmaint.service", restart: false }
+  - { name: "aurweb-popupdate.service", restart: false }
+  - { name: "aurweb-tuvotereminder.service", restart: false }
+  - { name: "aurweb-usermaint.service", restart: false }
+  - { name: "aurweb-github-mirror.service", restart: false }
+  - { name: "aurweb.service" }
+  - { name: "goaurrpc.service", install: false }
diff --git a/roles/aurweb/tasks/main.yml b/roles/aurweb/tasks/main.yml
index fa9a50c28..7a0336c0e 100644
--- a/roles/aurweb/tasks/main.yml
+++ b/roles/aurweb/tasks/main.yml
@@ -71,44 +71,18 @@
   check_mode: true
 
 - name: Install AUR systemd service and timers
-  template: src={{ item }}.j2 dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644
+  template: src={{ item.name }}.j2 dest=/etc/systemd/system/{{ item.name }} owner=root group=root mode=0644
   with_items:
-    - aurweb-git.service
-    - aurweb-git.timer
-    - aurweb-git-archive.service
-    - aurweb-git-archive.timer
-    - aurweb-aurblup.service
-    - aurweb-aurblup.timer
-    - aurweb-mkpkglists.service
-    - aurweb-mkpkglists.timer
-    - aurweb-pkgmaint.service
-    - aurweb-pkgmaint.timer
-    - aurweb-popupdate.service
-    - aurweb-popupdate.timer
-    - aurweb-tuvotereminder.service
-    - aurweb-tuvotereminder.timer
-    - aurweb-usermaint.service
-    - aurweb-usermaint.timer
-    - aurweb.service
-    - aurweb-github-mirror.service
-    - aurweb-github-mirror.timer
-  when: release.changed
+    - "{{ aurweb_services }}"
+    - "{{ aurweb_timers }}"
+  when: release.changed and (item.install is not defined or item.install)
 
 - name: Stop AUR systemd services and timers
-  service: name={{ item }} enabled=yes state=stopped
+  service: name={{ item.name }} enabled=yes state=stopped
   with_items:
-    - aurweb-git.timer
-    - aurweb-git-archive.timer
-    - aurweb-aurblup.timer
-    - aurweb-mkpkglists.timer
-    - aurweb-pkgmaint.timer
-    - aurweb-popupdate.timer
-    - aurweb-tuvotereminder.timer
-    - aurweb-usermaint.timer
-    - aurweb.service
-    - goaurrpc.service
-    - aurweb-github-mirror.timer
-  when: release.changed
+    - "{{ aurweb_services }}"
+    - "{{ aurweb_timers }}"
+  when: release.changed and (item.restart is not defined or item.restart)
 
 - name: Clone aurweb repo
   git: >
@@ -312,17 +286,8 @@
     - Restart sshd
 
 - name: Start and enable AUR systemd services and timers
-  systemd: name={{ item }} enabled=yes state=started daemon_reload=yes
+  systemd: name={{ item.name }} enabled=yes state=started daemon_reload=yes
   with_items:
-    - aurweb-git.timer
-    - aurweb-git-archive.timer
-    - aurweb-aurblup.timer
-    - aurweb-mkpkglists.timer
-    - aurweb-pkgmaint.timer
-    - aurweb-popupdate.timer
-    - aurweb-tuvotereminder.timer
-    - aurweb-usermaint.timer
-    - aurweb.service
-    - goaurrpc.service
-    - aurweb-github-mirror.timer
-  when: release.changed
+    - "{{ aurweb_services }}"
+    - "{{ aurweb_timers }}"
+  when: release.changed and (item.restart is not defined or item.restart)
-- 
GitLab