// Household assembly inputs remain mandatory even through aggregate Gradle tasks. val tvVersion = providers.gradleProperty("tvVersion").orElse("1.1.1") val tvVersionCode = providers.gradleProperty("tvVersionCode") fun requireHouseholdVersion() { require(tvVersionCode.isPresent) { "Household builds require -PtvVersionCode=" } require(tvVersionCode.get().toInt() in 1..2100000000) { "Invalid household versionCode" } require(Regex("""\d+\.\d+\.\d+""").matches(tvVersion.get())) { "Household versionName must be plain major.minor.patch" } } if (gradle.startParameter.taskNames.any { it.contains("Optimized", ignoreCase = true) }) { requireHouseholdVersion() } tasks.configureEach { if (name.contains("DefaultOptimized", ignoreCase = true)) { doFirst { requireHouseholdVersion() } } }