From eb2f5b44cdb18b2f751ad060c9a162e37441e2f7 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Wed, 14 Jan 2026 13:17:55 -0800 Subject: [PATCH] Fix kiwix plist to only include available ZIM archives The LaunchAgent plist now dynamically includes only ZIM files that actually exist in the kiwix directory, rather than all configured archives. This prevents kiwix-serve from crashing when torrents are still downloading. Co-Authored-By: Claude Opus 4.5 --- ansible/roles/kiwix/tasks/main.yml | 12 ++++++++++++ ansible/roles/kiwix/templates/kiwix-serve.plist.j2 | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kiwix/tasks/main.yml b/ansible/roles/kiwix/tasks/main.yml index b1637f4..39794d3 100644 --- a/ansible/roles/kiwix/tasks/main.yml +++ b/ansible/roles/kiwix/tasks/main.yml @@ -158,6 +158,18 @@ - not item.stat.exists notify: restart kiwix-serve +# --- Determine which archives are available --- +- name: Find available ZIM archives in kiwix directory + ansible.builtin.find: + paths: "{{ kiwix_zim_dir }}" + patterns: "*.zim" + file_type: any # includes symlinks + register: available_zim_files + +- name: Build list of available archive filenames + ansible.builtin.set_fact: + kiwix_available_archives: "{{ available_zim_files.files | map(attribute='path') | map('basename') | list }}" + # --- LaunchAgent deployment --- - name: Deploy kiwix-serve LaunchAgent plist ansible.builtin.template: diff --git a/ansible/roles/kiwix/templates/kiwix-serve.plist.j2 b/ansible/roles/kiwix/templates/kiwix-serve.plist.j2 index 5d84916..26a61d1 100644 --- a/ansible/roles/kiwix/templates/kiwix-serve.plist.j2 +++ b/ansible/roles/kiwix/templates/kiwix-serve.plist.j2 @@ -11,8 +11,8 @@ {{ kiwix_serve_bin }} --port={{ kiwix_port }} -{% for archive in kiwix_zim_archives %} - {{ kiwix_zim_dir }}/{{ archive.filename }} +{% for filename in kiwix_available_archives %} + {{ kiwix_zim_dir }}/{{ filename }} {% endfor %} RunAtLoad