From c4a3354c7537b61b3cca65932b5af3db79fe8cec Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 27 Feb 2019 16:40:47 +0100 Subject: [PATCH] update: support flavors and alternate project dirs for Triple-T closes #542 --- fdroidserver/update.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index d6e6ce35..0b41c44e 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -762,9 +762,32 @@ def copy_triple_t_store_metadata(apps): tt_graphic_names = ('feature-graphic', 'icon', 'promo-graphic', 'tv-banner') tt_screenshot_dirs = ('phone-screenshots', 'tablet-screenshots', 'large-tablet-screenshots', 'tv-screenshots', 'wear-screenshots') + setting_gradle_pattern = re.compile(r"""\s*include\s+["']:([^"']+)["'](?:,[\n\s]*["']:([^"']+)["'])*""") for packageName, app in apps.items(): - for d in glob.glob(os.path.join('build', packageName, '*', 'src', '*', 'play')): + settings_gradle = os.path.join('build', packageName, 'settings.gradle') + gradle_subdirs = set() + if os.path.exists(settings_gradle): + with open(settings_gradle) as fp: + data = fp.read() + for matches in setting_gradle_pattern.findall(data): + for m in matches: + if m: + gradle_path = m.replace(':', '/') + p = os.path.join('build', packageName, gradle_path, 'src', 'main', 'play') + if os.path.exists(p): + gradle_subdirs.add(p) + flavors = set() + if app.builds: + flavors = app.builds[0].gradle + for flavor in flavors: + if flavor not in ('yes', 'no'): + p = os.path.join('build', packageName, gradle_path, 'src', flavor, 'play') + gradle_subdirs.add(p) + if not gradle_subdirs: + gradle_subdirs.update(glob.glob(os.path.join('build', packageName, '*', 'src', '*', 'play'))) + + for d in gradle_subdirs: logging.debug('Triple-T Gradle Play Publisher: ' + d) for root, dirs, files in os.walk(d): segments = root.split('/')