taskgraph: Speed up gradle calls
parent
41799dcec1
commit
7d3be2a509
|
@ -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)
|
||||||
])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue