diff --git a/.travis.yml b/.travis.yml index 8f4801c7..c8807427 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ branches: - develop script: - - ./gradlew build jacocoTestReport connectedCheck + - ./gradlew -PactiveProductFlavor="withoutApi" build jacocoTestReport connectedCheck after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/app/build.gradle b/app/build.gradle index 894c4d17..85441b3e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,6 +5,8 @@ apply plugin: 'kotlin-kapt' apply plugin: 'io.fabric' apply plugin: 'jacoco-android' +def apiLibrary = null + android { def globalConfiguration = rootProject.extensions.getByName("ext") @@ -23,6 +25,37 @@ android { multiDexEnabled true } + flavorDimensions "api" + + productFlavors { + withoutApi { + dimension "api" + } + shopifyApi { + dimension "api" + + def shopappShopifyVersion = project.getProperties().get("shopappShopifyVersion") + if (shopappShopifyVersion != null) { + apiLibrary = "com.github.rubygarage:shopapp-shopify-android:$shopappShopifyVersion" + } + + def appId = project.getProperties().get("appId") + applicationId = appId != null ? appId : applicationId + + def domain = project.getProperties().get("domain") + buildConfigField "String", "BASE_DOMAIN", "\"$domain\"" + + def accessToken = project.getProperties().get("token") + buildConfigField "String", "STOREFRONT_ACCESS_TOKEN", "\"$accessToken\"" + + def apiKey = project.getProperties().get("apiKey") + buildConfigField "String", "API_KEY", "\"$apiKey\"" + + def apiPassword = project.getProperties().get("apiPassword") + buildConfigField "String", "API_PASSWORD", "\"$apiPassword\"" + } + } + testOptions { unitTests { includeAndroidResources = true @@ -80,6 +113,11 @@ dependencies { implementation project(':data') implementation project(':domain') implementation project(':gateway') + if (apiLibrary != null) { + implementation(apiLibrary) { + exclude module: 'shopapp-android' + } + } testImplementation "com.google.dagger:dagger:$daggerVersion" kaptTest "com.google.dagger:dagger-compiler:$daggerVersion" @@ -93,6 +131,13 @@ dependencies { androidTestImplementation "com.android.support.test:runner:$testRunnerVersion" } +android.variantFilter { variant -> + def activeProductFlavor = project.getProperties().get("activeProductFlavor") + if (activeProductFlavor != null && variant.getFlavors().get(0).name != activeProductFlavor) { + variant.setIgnore(true) + } +} + project.afterEvaluate { android.applicationVariants.all { variant -> def realVariantName = variant.name diff --git a/app/src/main/java/com/shopapp/ApiInitializer.kt b/app/src/main/java/com/shopapp/ApiInitializer.kt new file mode 100644 index 00000000..88f30be2 --- /dev/null +++ b/app/src/main/java/com/shopapp/ApiInitializer.kt @@ -0,0 +1,9 @@ +package com.shopapp + +import android.content.Context +import com.shopapp.gateway.Api + +interface ApiInitializer { + + fun initialize(context: Context): Api? +} \ No newline at end of file diff --git a/app/src/main/java/com/shopapp/ShopApplication.kt b/app/src/main/java/com/shopapp/ShopApplication.kt index a392180c..4ffe884d 100644 --- a/app/src/main/java/com/shopapp/ShopApplication.kt +++ b/app/src/main/java/com/shopapp/ShopApplication.kt @@ -29,7 +29,7 @@ open class ShopApplication : Application() { override fun onCreate() { super.onCreate() - val api = null //Initialize your api here. + val api = ApiInitializerImpl.initialize(this) val dao = DaoImpl(this) appComponent = buildAppComponent(api, dao) diff --git a/app/src/shopifyApi/java/com/shopapp/ApiInitializerImpl.kt b/app/src/shopifyApi/java/com/shopapp/ApiInitializerImpl.kt new file mode 100644 index 00000000..5bfcf939 --- /dev/null +++ b/app/src/shopifyApi/java/com/shopapp/ApiInitializerImpl.kt @@ -0,0 +1,12 @@ +package com.shopapp + +import android.content.Context +import com.shopapp.gateway.Api +import com.shopapp.shopify.api.ShopifyApi + +object ApiInitializerImpl : ApiInitializer { + + override fun initialize(context: Context): Api? = + ShopifyApi(context, BuildConfig.BASE_DOMAIN, BuildConfig.STOREFRONT_ACCESS_TOKEN, + BuildConfig.API_KEY, BuildConfig.API_PASSWORD) +} \ No newline at end of file diff --git a/app/src/withoutApi/java/com/shopapp/ApiInitializerImpl.kt b/app/src/withoutApi/java/com/shopapp/ApiInitializerImpl.kt new file mode 100644 index 00000000..3dc3f481 --- /dev/null +++ b/app/src/withoutApi/java/com/shopapp/ApiInitializerImpl.kt @@ -0,0 +1,9 @@ +package com.shopapp + +import android.content.Context +import com.shopapp.gateway.Api + +object ApiInitializerImpl : ApiInitializer { + + override fun initialize(context: Context): Api? = null +} \ No newline at end of file