From e95758333783300361a7ea6b5a50f633a17effbc Mon Sep 17 00:00:00 2001 From: linsui <2873532-linsui@users.noreply.gitlab.com> Date: Sat, 26 Apr 2025 01:50:08 +0800 Subject: [PATCH] common: add calculate_gradle_flavor_combination --- fdroidserver/common.py | 15 +++++++++++++++ tests/test_common.py | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 9acfcf2e..9b395ad6 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -58,6 +58,7 @@ from typing import List import git import glob import io +import itertools import os import sys import re @@ -4823,6 +4824,20 @@ def calculate_archive_policy(app, default): return archive_policy +def calculate_gradle_flavor_combination(flavors): + """Calculate all combinations of gradle flavors.""" + combination_lists = itertools.product(*[[flavor, ''] for flavor in flavors]) + combinations = [ + re.sub( + r' +\w', + lambda pat: pat.group(0)[-1].upper(), + ' '.join(combination_list).strip(), + ) + for combination_list in combination_lists + ] + return combinations + + FDROIDORG_MIRRORS = [ { 'isPrimary': True, diff --git a/tests/test_common.py b/tests/test_common.py index 521905aa..c8d10045 100755 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -3040,6 +3040,11 @@ class CommonTest(SetUpTearDownMixin, unittest.TestCase): p = fdroidserver.common.FDroidPopen(['printenv', 'SOURCE_DATE_EPOCH']) self.assertEqual(int(p.output), int(now.timestamp())) + def test_calculate_gradle_flavor_combination(self): + flavors = ['aa', 'BB', 'δδ'] + combinations = ['aaBBΔδ', 'aaBB', 'aaΔδ', 'aa', 'BBΔδ', 'BB', 'δδ', ''] + self.assertEqual(fdroidserver.common.calculate_gradle_flavor_combination(flavors), combinations) + APKS_WITH_JAR_SIGNATURES = ( (