Support multiple flavours in parse_androidmanifests

Previously only the last flavour was checked.
This commit is contained in:
Jochen Sprickerhof 2021-07-24 20:28:50 +02:00
parent 1ad0e7689a
commit 331b4830dd
4 changed files with 135 additions and 4 deletions

View File

@ -746,6 +746,7 @@ include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata
include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/short_description.txt
include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/title.txt
include tests/source-files/com.seafile.seadroid2/app/build.gradle
include tests/source-files/de.varengold.activeTAN/build.gradle
include tests/source-files/dev.patrickgold.florisboard/app/build.gradle.kts
include tests/source-files/eu.siacs.conversations/build.gradle
include tests/source-files/eu.siacs.conversations/metadata/en-US/name.txt

View File

@ -1691,11 +1691,11 @@ def parse_androidmanifests(paths, app):
vercode = None
package = None
flavour = None
flavours = None
temp_app_id = None
temp_version_name = None
if len(app.get('Builds', [])) > 0 and 'gradle' in app['Builds'][-1] and app['Builds'][-1].gradle:
flavour = app['Builds'][-1].gradle[-1]
flavours = app['Builds'][-1].gradle
if path.endswith('.gradle') or path.endswith('.gradle.kts'):
with open(path, 'r', encoding='utf-8') as f:
@ -1753,12 +1753,14 @@ def parse_androidmanifests(paths, app):
inside_required_flavour -= 1
if inside_required_flavour == 1:
inside_required_flavour -= 1
else:
if flavour:
elif flavours:
for flavour in flavours:
if re.match(r'.*[\'"\s]{flavour}[\'"\s].*\{{.*'.format(flavour=flavour), line):
inside_required_flavour = 2
break
elif re.match(r'.*[\'"\s]{flavour}[\'"\s].*'.format(flavour=flavour), line):
inside_required_flavour = 1
break
if '{' in line:
inside_flavour_group += 1

View File

@ -1264,6 +1264,19 @@ class CommonTest(unittest.TestCase):
self.assertEqual(('1.6.34-fdroid', '105', 'com.jens.automation2'),
fdroidserver.common.parse_androidmanifests(paths, app))
app = fdroidserver.metadata.App()
build = fdroidserver.metadata.Build()
build.gradle = ['VAR', 'prod']
app['Builds'] = [build]
app.id = 'de.varengold.activeTAN'
paths = [
os.path.join('source-files', 'de.varengold.activeTAN', 'build.gradle'),
]
for path in paths:
self.assertTrue(os.path.isfile(path))
self.assertEqual(('2021-06-30', '34', 'de.varengold.activeTAN'),
fdroidserver.common.parse_androidmanifests(paths, app))
def test_get_all_gradle_and_manifests(self):
"""Test whether the function works with relative and absolute paths"""
a = fdroidserver.common.get_all_gradle_and_manifests(Path('source-files/cn.wildfirechat.chat'))

View File

@ -0,0 +1,115 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion versions.compileSdk
defaultConfig {
versionCode 34
versionName "2021-06-30"
// Requires API level 23 (Android 6.0) to use Android keystore system for cryptography.
minSdkVersion 23
targetSdkVersion versions.targetSdk
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
javaCompileOptions {
annotationProcessorOptions {
// Export database schema history as JSON files.
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
sourceSets {
// Include database schema history for migration testing.
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
}
}
buildFeatures {
viewBinding = true
}
buildTypes {
debug {
// Don't mess with the release versions during debugging, so use a different appId.
applicationIdSuffix ".debug"
debuggable true
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
flavorDimensions "client", "environment"
productFlavors {
prod {
dimension "environment"
}
qs {
dimension "environment"
// To be able to install a second app variant, we must change the applicationId.
// Otherwise it would not be possible to use the same device for testing and production.
applicationIdSuffix ".QS"
}
EFD {
// Demo portal efdis-online.de (extern) / dailybuild.efdis-online.de (intern)
dimension "client"
applicationId "de.efdis.activeTAN"
}
VAR {
dimension "client"
applicationId "de.varengold.activeTAN"
}
}
compileOptions {
// ZXing uses Java 8 language features from the core library
coreLibraryDesugaringEnabled true
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
}
tasks.withType(JavaCompile) {
options.deprecation = true
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':material-design-icons')
implementation project(":barcodescanner")
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.biometric:biometric:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
implementation 'com.google.zxing:core:' + versions.zxing
def room_version = '2.3.0'
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
androidTestImplementation "androidx.room:room-testing:$room_version"
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test:rules:1.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.3.0'
}