232 lines
8.1 KiB
Text
232 lines
8.1 KiB
Text
import java.io.ByteArrayOutputStream
|
|
import java.text.SimpleDateFormat
|
|
import java.util.Date
|
|
|
|
plugins {
|
|
id("com.android.application")
|
|
id("kotlin-android")
|
|
id("kotlin-kapt")
|
|
id("com.google.gms.google-services")
|
|
id("com.google.firebase.crashlytics")
|
|
id("android-app-dependencies")
|
|
id("test-app-dependencies")
|
|
id("jacoco-app-dependencies")
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
google()
|
|
}
|
|
|
|
fun generateGitBuild(): String {
|
|
val stringBuilder: StringBuilder = StringBuilder()
|
|
try {
|
|
val stdout = ByteArrayOutputStream()
|
|
exec {
|
|
commandLine("git", "describe", "--always")
|
|
standardOutput = stdout
|
|
}
|
|
val commitObject = stdout.toString().trim()
|
|
stringBuilder.append(commitObject)
|
|
} catch (ignored: Exception) {
|
|
stringBuilder.append("NoGitSystemAvailable")
|
|
}
|
|
return stringBuilder.toString()
|
|
}
|
|
|
|
fun generateGitRemote(): String {
|
|
val stringBuilder: StringBuilder = StringBuilder()
|
|
try {
|
|
val stdout = ByteArrayOutputStream()
|
|
exec {
|
|
commandLine("git", "remote", "get-url", "origin")
|
|
standardOutput = stdout
|
|
}
|
|
val commitObject: String = stdout.toString().trim()
|
|
stringBuilder.append(commitObject)
|
|
} catch (ignored: Exception) {
|
|
stringBuilder.append("NoGitSystemAvailable")
|
|
}
|
|
return stringBuilder.toString()
|
|
}
|
|
|
|
fun generateDate(): String {
|
|
val stringBuilder: StringBuilder = StringBuilder()
|
|
// showing only date prevents app to rebuild everytime
|
|
stringBuilder.append(SimpleDateFormat("yyyy.MM.dd").format(Date()))
|
|
return stringBuilder.toString()
|
|
}
|
|
|
|
fun isMaster(): Boolean = !Versions.appVersion.contains("-")
|
|
|
|
fun gitAvailable(): Boolean {
|
|
val stringBuilder: StringBuilder = StringBuilder()
|
|
try {
|
|
val stdout = ByteArrayOutputStream()
|
|
exec {
|
|
commandLine("git", "--version")
|
|
standardOutput = stdout
|
|
}
|
|
val commitObject = stdout.toString().trim()
|
|
stringBuilder.append(commitObject)
|
|
} catch (ignored: Exception) {
|
|
return false // NoGitSystemAvailable
|
|
}
|
|
return stringBuilder.toString().isNotEmpty()
|
|
|
|
}
|
|
|
|
fun allCommitted(): Boolean {
|
|
val stringBuilder: StringBuilder = StringBuilder()
|
|
try {
|
|
val stdout = ByteArrayOutputStream()
|
|
exec {
|
|
commandLine("git", "status", "-s")
|
|
standardOutput = stdout
|
|
}
|
|
// ignore all changes done in .idea/codeStyles
|
|
val cleanedList: String = stdout.toString().replace("/(?m)^\\s*(M|A|D|\\?\\?)\\s*.*?\\.idea\\/codeStyles\\/.*?\\s*\$/", "")
|
|
// ignore all files added to project dir but not staged/known to GIT
|
|
.replace("/(?m)^\\s*(\\?\\?)\\s*.*?\\s*\$/", "")
|
|
stringBuilder.append(cleanedList.trim())
|
|
} catch (ignored: Exception) {
|
|
return false // NoGitSystemAvailable
|
|
}
|
|
return stringBuilder.toString().isEmpty()
|
|
}
|
|
|
|
android {
|
|
|
|
namespace = "app.aaps"
|
|
ndkVersion = Versions.ndkVersion
|
|
|
|
defaultConfig {
|
|
minSdk = Versions.minSdk
|
|
targetSdk = Versions.targetSdk
|
|
|
|
buildConfigField("String", "VERSION", "\"$version\"")
|
|
buildConfigField("String", "BUILDVERSION", "\"${generateGitBuild()}-${generateDate()}\"")
|
|
buildConfigField("String", "REMOTE", "\"${generateGitRemote()}\"")
|
|
buildConfigField("String", "HEAD", "\"${generateGitBuild()}\"")
|
|
buildConfigField("String", "COMMITTED", "\"${allCommitted()}\"")
|
|
}
|
|
|
|
flavorDimensions.add("standard")
|
|
productFlavors {
|
|
create("full") {
|
|
isDefault = true
|
|
applicationId = "info.nightscout.androidaps"
|
|
dimension = "standard"
|
|
resValue("string", "app_name", "AAPS")
|
|
versionName = Versions.appVersion
|
|
manifestPlaceholders["appIcon"] = "@mipmap/ic_launcher"
|
|
manifestPlaceholders["appIconRound"] = "@mipmap/ic_launcher_round"
|
|
}
|
|
create("pumpcontrol") {
|
|
applicationId = "info.nightscout.aapspumpcontrol"
|
|
dimension = "standard"
|
|
resValue("string", "app_name", "Pumpcontrol")
|
|
versionName = Versions.appVersion + "-pumpcontrol"
|
|
manifestPlaceholders["appIcon"] = "@mipmap/ic_pumpcontrol"
|
|
manifestPlaceholders["appIconRound"] = "@null"
|
|
}
|
|
create("aapsclient") {
|
|
applicationId = "info.nightscout.aapsclient"
|
|
dimension = "standard"
|
|
resValue("string", "app_name", "AAPSClient")
|
|
versionName = Versions.appVersion + "-aapsclient"
|
|
manifestPlaceholders["appIcon"] = "@mipmap/ic_yellowowl"
|
|
manifestPlaceholders["appIconRound"] = "@mipmap/ic_yellowowl"
|
|
}
|
|
create("aapsclient2") {
|
|
applicationId = "info.nightscout.aapsclient2"
|
|
dimension = "standard"
|
|
resValue("string", "app_name", "AAPSClient2")
|
|
versionName = Versions.appVersion + "-aapsclient"
|
|
manifestPlaceholders["appIcon"] = "@mipmap/ic_blueowl"
|
|
manifestPlaceholders["appIconRound"] = "@mipmap/ic_blueowl"
|
|
}
|
|
}
|
|
|
|
useLibrary("org.apache.http.legacy")
|
|
|
|
//Deleting it causes a binding error
|
|
dataBinding { enable }
|
|
}
|
|
|
|
allprojects {
|
|
repositories {
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
wearApp(project(":wear"))
|
|
|
|
// in order to use internet"s versions you"d need to enable Jetifier again
|
|
// https://github.com/nightscout/graphview.git
|
|
// https://github.com/nightscout/iconify.git
|
|
implementation(project(":shared:impl"))
|
|
implementation(project(":core:main"))
|
|
implementation(project(":core:graphview"))
|
|
implementation(project(":core:interfaces"))
|
|
implementation(project(":core:libraries"))
|
|
implementation(project(":core:nssdk"))
|
|
implementation(project(":core:utils"))
|
|
implementation(project(":core:ui"))
|
|
implementation(project(":core:validators"))
|
|
implementation(project(":ui"))
|
|
implementation(project(":plugins:aps"))
|
|
implementation(project(":plugins:automation"))
|
|
implementation(project(":plugins:configuration"))
|
|
implementation(project(":plugins:constraints"))
|
|
implementation(project(":plugins:insulin"))
|
|
implementation(project(":plugins:main"))
|
|
implementation(project(":plugins:sensitivity"))
|
|
implementation(project(":plugins:smoothing"))
|
|
implementation(project(":plugins:source"))
|
|
implementation(project(":plugins:sync"))
|
|
implementation(project(":implementation"))
|
|
implementation(project(":database:entities"))
|
|
implementation(project(":database:impl"))
|
|
implementation(project(":pump:combo"))
|
|
implementation(project(":pump:combov2"))
|
|
implementation(project(":pump:dana"))
|
|
implementation(project(":pump:danars"))
|
|
implementation(project(":pump:danar"))
|
|
implementation(project(":pump:diaconn"))
|
|
implementation(project(":pump:eopatch"))
|
|
implementation(project(":pump:medtrum"))
|
|
implementation(project(":insight"))
|
|
implementation(project(":pump:medtronic"))
|
|
implementation(project(":pump:pump-common"))
|
|
implementation(project(":pump:omnipod-common"))
|
|
implementation(project(":pump:omnipod-eros"))
|
|
implementation(project(":pump:omnipod-dash"))
|
|
implementation(project(":pump:rileylink"))
|
|
implementation(project(":pump:virtual"))
|
|
implementation(project(":workflow"))
|
|
|
|
testImplementation(project(":shared:tests"))
|
|
|
|
/* Dagger2 - We are going to use dagger.android which includes
|
|
* support for Activity and fragment injection so we need to include
|
|
* the following dependencies */
|
|
kapt(Libs.Dagger.androidProcessor)
|
|
kapt(Libs.Dagger.compiler)
|
|
|
|
// MainApp
|
|
api(Libs.Rx.rxDogTag)
|
|
}
|
|
|
|
println("-------------------")
|
|
println("isMaster: ${isMaster()}")
|
|
println("gitAvailable: ${gitAvailable()}")
|
|
println("allCommitted: ${allCommitted()}")
|
|
println("-------------------")
|
|
if (isMaster() && !gitAvailable()) {
|
|
throw GradleException("GIT system is not available. On Windows try to run Android Studio as an Administrator. Check if GIT is installed and Studio have permissions to use it")
|
|
}
|
|
if (isMaster() && !allCommitted()) {
|
|
throw GradleException("There are uncommitted changes. Clone sources again as described in wiki and do not allow gradle update")
|
|
}
|
|
|