commit f35b95c1bda06d8a72a19ed9df253f6461e1f131
parent dcd1e73e7863952f1ce9216c178b90a7b2b2ac9a
Author: Florian Dold <dold@taler.net>
Date: Fri, 31 Jul 2026 15:44:51 +0200
generate the legal documents from a loop
Six near-identical stat/build pairs covered terms of service and privacy
policy in en, fr and de, each with the author string spelled out again.
Adding a language now means adding it to the role defaults.
Diffstat:
2 files changed, 29 insertions(+), 57 deletions(-)
diff --git a/roles/exchange_tops/defaults/main.yml b/roles/exchange_tops/defaults/main.yml
@@ -0,0 +1,11 @@
+---
+# Languages the terms of service and privacy policy are generated for.
+# A document is only built if the corresponding .rst source ships with
+# the taler-exchange package.
+exchange_tops_terms_languages:
+ - en
+ - fr
+ - de
+
+# Author line printed on the generated documents.
+exchange_tops_terms_author: "Taler Operations AG, Biel/Bienne"
diff --git a/roles/exchange_tops/tasks/main.yml b/roles/exchange_tops/tasks/main.yml
@@ -39,62 +39,23 @@
group: root
mode: "0644"
-- name: Check if we have terms of service in English
+- name: Check which legal documents we have sources for
stat:
- path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_TERMS_ETAG }}.en.rst"
- register: have_terms_en
-
-- name: Build terms of service (EN)
- ansible.builtin.command:
- cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_TERMS_ETAG }} -l en
- when: have_terms_en.stat.exists
-
-- name: Check if we have privacy policy in English
- stat:
- path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_PP_ETAG }}.en.rst"
- register: have_pp_en
-
-- name: Build privacy policy (EN)
- ansible.builtin.command:
- cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_PP_ETAG }} -l en
- when: have_pp_en.stat.exists
-
-- name: Check if we have terms of service in French
- stat:
- path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_TERMS_ETAG }}.fr.rst"
- register: have_terms_fr
-
-- name: Build terms of service (FR)
- ansible.builtin.command:
- cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_TERMS_ETAG }} -l fr
- when: have_terms_fr.stat.exists
-
-- name: Check if we have privacy policy in French
- stat:
- path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_PP_ETAG }}.fr.rst"
- register: have_pp_fr
-
-- name: Build privacy policy (FR)
- ansible.builtin.command:
- cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_PP_ETAG }} -l fr
- when: have_pp_fr.stat.exists
-
-- name: Check if we have terms of service in German
- stat:
- path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_TERMS_ETAG }}.de.rst"
- register: have_terms_de
-
-- name: Build terms of service (DE)
- ansible.builtin.command:
- cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_TERMS_ETAG }} -l de
- when: have_terms_de.stat.exists
-
-- name: Check if we have privacy policy in German
- stat:
- path: "/usr/share/taler-exchange/terms/{{ EXCHANGE_PP_ETAG }}.de.rst"
- register: have_pp_de
-
-- name: Build privacy policy (DE)
+ path: "/usr/share/taler-exchange/terms/{{ item.0 }}.{{ item.1 }}.rst"
+ register: legal_sources
+ loop: "{{ [EXCHANGE_TERMS_ETAG, EXCHANGE_PP_ETAG]
+ | product(exchange_tops_terms_languages) | list }}"
+ loop_control:
+ label: "{{ item.0 }}.{{ item.1 }}"
+
+- name: Build legal documents
ansible.builtin.command:
- cmd: taler-terms-generator -a "Taler Operations AG, Biel/Bienne" -i {{ EXCHANGE_PP_ETAG }} -l de
- when: have_pp_de.stat.exists
+ cmd: >-
+ taler-terms-generator
+ -a "{{ exchange_tops_terms_author }}"
+ -i {{ item.item.0 }}
+ -l {{ item.item.1 }}
+ when: item.stat.exists
+ loop: "{{ legal_sources.results }}"
+ loop_control:
+ label: "{{ item.item.0 }}.{{ item.item.1 }}"