1
0
Fork 0

taskgraph: Speed up gradle calls

master
Johan Lorenzo 2019-09-24 16:18:45 +02:00 committed by Jeff Boek
parent 41799dcec1
commit 7d3be2a509
2 changed files with 35 additions and 16 deletions

View File

@ -549,21 +549,20 @@ if (project.hasProperty("coverage")) {
// ------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------
// Task for printing APK information for the requested variant // Task for printing APK information for the requested variant
// Usage: "./gradlew printVariant -PvariantBuildType=nightly -PvariantEngine=geckoNightly" // Usage: "./gradlew printVariants
// ------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------
task printVariant { task printVariants {
doLast { doLast {
def rawVariant = android.applicationVariants.find { def variants = android.applicationVariants.collect {[
it.buildType.name == variantBuildType && apks: it.variantData.outputScope.apkDatas.collect {[
it.productFlavors.find { it.dimension == 'engine' }.name == variantEngine abi: it.filters.find { it.filterType == 'ABI' }.identifier,
} fileName: it.outputFileName,
println 'variant: ' + groovy.json.JsonOutput.toJson([ ]},
name: rawVariant.name, build_type: it.buildType.name,
apks: rawVariant.variantData.outputScope.apkDatas.collect { [ engine: it.productFlavors.find { it.dimension == 'engine' }.name,
abi: it.filters.find { it.filterType == 'ABI' }.identifier, name: it.name,
fileName: it.outputFileName, ]}
]} println 'variants: ' + groovy.json.JsonOutput.toJson(variants)
])
} }
} }

View File

@ -10,10 +10,30 @@ import subprocess
from taskgraph.util.memoize import memoize from taskgraph.util.memoize import memoize
@memoize
def get_variant(build_type, engine): def get_variant(build_type, engine):
output = _run_gradle_process('printVariant', variantBuildType=build_type, variantEngine=engine) all_variants = _fetch_all_variants()
content = _extract_content_from_command_output(output, prefix='variant: ') matching_variants = [
variant for variant in all_variants
if variant["build_type"] == build_type and variant["engine"] == engine
]
number_of_matching_variants = len(matching_variants)
if number_of_matching_variants == 0:
raise ValueError('No variant found for build type "{}" and engine "{}"'.format(
build_type, engine
))
elif number_of_matching_variants > 1:
raise ValueError('Too many variants found for build type "{}" and engine "{}": {}'.format(
build_type, engine, matching_variants
))
return matching_variants.pop()
@memoize
def _fetch_all_variants():
output = _run_gradle_process('printVariants')
content = _extract_content_from_command_output(output, prefix='variants: ')
return json.loads(content) return json.loads(content)