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
|
||||
// Usage: "./gradlew printVariant -PvariantBuildType=nightly -PvariantEngine=geckoNightly"
|
||||
// Usage: "./gradlew printVariants
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
task printVariant {
|
||||
task printVariants {
|
||||
doLast {
|
||||
def rawVariant = android.applicationVariants.find {
|
||||
it.buildType.name == variantBuildType &&
|
||||
it.productFlavors.find { it.dimension == 'engine' }.name == variantEngine
|
||||
}
|
||||
println 'variant: ' + groovy.json.JsonOutput.toJson([
|
||||
name: rawVariant.name,
|
||||
apks: rawVariant.variantData.outputScope.apkDatas.collect { [
|
||||
abi: it.filters.find { it.filterType == 'ABI' }.identifier,
|
||||
fileName: it.outputFileName,
|
||||
]}
|
||||
])
|
||||
def variants = android.applicationVariants.collect {[
|
||||
apks: it.variantData.outputScope.apkDatas.collect {[
|
||||
abi: it.filters.find { it.filterType == 'ABI' }.identifier,
|
||||
fileName: it.outputFileName,
|
||||
]},
|
||||
build_type: it.buildType.name,
|
||||
engine: it.productFlavors.find { it.dimension == 'engine' }.name,
|
||||
name: it.name,
|
||||
]}
|
||||
println 'variants: ' + groovy.json.JsonOutput.toJson(variants)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,10 +10,30 @@ import subprocess
|
|||
from taskgraph.util.memoize import memoize
|
||||
|
||||
|
||||
@memoize
|
||||
|
||||
def get_variant(build_type, engine):
|
||||
output = _run_gradle_process('printVariant', variantBuildType=build_type, variantEngine=engine)
|
||||
content = _extract_content_from_command_output(output, prefix='variant: ')
|
||||
all_variants = _fetch_all_variants()
|
||||
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)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue