mirror of
https://github.com/status-im/realm-js.git
synced 2025-02-01 17:25:36 +00:00
01f92ed72f
fixes enumeration test and test setup add async store api tests Log benchmark test errors and some other minor edits Only delete .realm* files for tests sql lite tests run all the tests worthless Make SQLite benchmarks work Make Realm insertion benchmark work like SQLite run each test in release multiple times Open each database once per benchmark test Use same AppDelegate for benchmarks as the example This will load the non-dev JS from the packager. Make the benchmarks actually match their labels Delete benchmark databases during setup phase Some minor code style updates to benchmarks query tests make query test mostly work bug fix and improved logging remove double insertions improved logging and bugfix better logging batch insersions more reasonable counts android
97 lines
4.1 KiB
Groovy
97 lines
4.1 KiB
Groovy
import org.apache.tools.ant.taskdefs.condition.Os
|
|
|
|
def config = project.hasProperty("react") ? project.react : [];
|
|
|
|
def bundleAssetName = config.bundleAssetName ?: "index.android.bundle"
|
|
def entryFile = config.entryFile ?: "index.android.js"
|
|
|
|
// because elvis operator
|
|
def elvisFile(thing) {
|
|
return thing ? file(thing) : null;
|
|
}
|
|
|
|
def reactRoot = elvisFile(config.root) ?: file("../../")
|
|
def inputExcludes = config.inputExcludes ?: ["android/**", "ios/**"]
|
|
|
|
void runBefore(String dependentTaskName, Task task) {
|
|
Task dependentTask = tasks.findByPath(dependentTaskName);
|
|
if (dependentTask != null) {
|
|
dependentTask.dependsOn task
|
|
}
|
|
}
|
|
|
|
gradle.projectsEvaluated {
|
|
// Grab all build types and product flavors
|
|
def buildTypes = android.buildTypes.collect { type -> type.name }
|
|
def productFlavors = android.productFlavors.collect { flavor -> flavor.name }
|
|
|
|
// When no product flavors defined, use empty
|
|
if (!productFlavors) productFlavors.add('')
|
|
|
|
productFlavors.each { productFlavorName ->
|
|
buildTypes.each { buildTypeName ->
|
|
// Create variant and source names
|
|
def sourceName = "${buildTypeName}"
|
|
def targetName = "${sourceName.capitalize()}"
|
|
if (productFlavorName) {
|
|
sourceName = "${productFlavorName}${targetName}"
|
|
}
|
|
|
|
// React js bundle directories
|
|
def jsBundleDirConfigName = "jsBundleDir${targetName}"
|
|
def jsBundleDir = elvisFile(config."$jsBundleDirConfigName") ?:
|
|
file("$buildDir/intermediates/assets/${sourceName}")
|
|
|
|
def resourcesDirConfigName = "jsBundleDir${targetName}"
|
|
def resourcesDir = elvisFile(config."${resourcesDirConfigName}") ?:
|
|
file("$buildDir/intermediates/res/merged/${sourceName}")
|
|
def jsBundleFile = file("$jsBundleDir/$bundleAssetName")
|
|
|
|
// Bundle task name for variant
|
|
def bundleJsAndAssetsTaskName = "bundle${targetName}JsAndAssets"
|
|
|
|
def currentBundleTask = tasks.create(
|
|
name: bundleJsAndAssetsTaskName,
|
|
type: Exec) {
|
|
group = "react"
|
|
description = "bundle JS and assets for ${targetName}."
|
|
|
|
// Create dirs if they are not there (e.g. the "clean" task just ran)
|
|
doFirst {
|
|
jsBundleDir.mkdirs()
|
|
resourcesDir.mkdirs()
|
|
}
|
|
|
|
// Set up inputs and outputs so gradle can cache the result
|
|
inputs.files fileTree(dir: reactRoot, excludes: inputExcludes)
|
|
outputs.dir jsBundleDir
|
|
outputs.dir resourcesDir
|
|
|
|
// Set up the call to the react-native cli
|
|
workingDir reactRoot
|
|
|
|
// Set up dev mode
|
|
def devEnabled = !targetName.toLowerCase().contains("release")
|
|
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
|
commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}",
|
|
"--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir
|
|
} else {
|
|
commandLine "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}",
|
|
"--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir
|
|
}
|
|
|
|
enabled config."bundleIn${targetName}" ?: targetName.toLowerCase().contains("release")
|
|
}
|
|
|
|
// Hook bundle${productFlavor}${buildType}JsAndAssets into the android build process
|
|
currentBundleTask.dependsOn("merge${targetName}Resources")
|
|
currentBundleTask.dependsOn("merge${targetName}Assets")
|
|
|
|
runBefore("processArmeabi-v7a${targetName}Resources", currentBundleTask)
|
|
runBefore("processX86${targetName}Resources", currentBundleTask)
|
|
runBefore("processUniversal${targetName}Resources", currentBundleTask)
|
|
runBefore("process${targetName}Resources", currentBundleTask)
|
|
}
|
|
}
|
|
}
|