94: Update AGP r=msfjarvis a=msfjarvis

bors r+

Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
bors[bot] 2021-01-18 13:23:55 +00:00 committed by GitHub
commit 2547d36254
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 198 additions and 63 deletions

View file

@ -4,6 +4,7 @@ plugins {
kotlin("kapt") kotlin("kapt")
kotlin("plugin.serialization") version "1.4.21" kotlin("plugin.serialization") version "1.4.21"
id("dagger.hilt.android.plugin") id("dagger.hilt.android.plugin")
`versioning-plugin`
`lobsters-plugin` `lobsters-plugin`
`core-library-desugaring` `core-library-desugaring`
} }
@ -11,8 +12,6 @@ plugins {
android { android {
defaultConfig { defaultConfig {
applicationId = "dev.msfjarvis.lobsters" applicationId = "dev.msfjarvis.lobsters"
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions.annotationProcessorOptions { javaCompileOptions.annotationProcessorOptions {
argument("room.schemaLocation", "${projectDir}/schemas") argument("room.schemaLocation", "${projectDir}/schemas")
@ -30,7 +29,6 @@ android {
dependencies { dependencies {
kapt(Dependencies.AndroidX.Hilt.daggerCompiler) kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
kapt(Dependencies.AndroidX.Hilt.daggerHiltCompiler)
kapt(Dependencies.AndroidX.Room.compiler) kapt(Dependencies.AndroidX.Room.compiler)
kapt(Dependencies.ThirdParty.Roomigrant.compiler) kapt(Dependencies.ThirdParty.Roomigrant.compiler)
implementation(project(":model")) implementation(project(":model"))
@ -50,7 +48,6 @@ dependencies {
implementation(Dependencies.AndroidX.Compose.uiTooling) implementation(Dependencies.AndroidX.Compose.uiTooling)
implementation(Dependencies.AndroidX.Compose.uiUnit) implementation(Dependencies.AndroidX.Compose.uiUnit)
implementation(Dependencies.AndroidX.Hilt.dagger) implementation(Dependencies.AndroidX.Hilt.dagger)
implementation(Dependencies.AndroidX.Hilt.hiltLifecycleViewmodel)
implementation(Dependencies.AndroidX.Lifecycle.runtimeKtx) implementation(Dependencies.AndroidX.Lifecycle.runtimeKtx)
implementation(Dependencies.AndroidX.Lifecycle.viewmodelKtx) implementation(Dependencies.AndroidX.Lifecycle.viewmodelKtx)
implementation(Dependencies.AndroidX.Room.runtime) implementation(Dependencies.AndroidX.Room.runtime)

View file

@ -5,13 +5,13 @@ import androidx.room.Room
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent import dagger.hilt.android.components.ViewModelComponent
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import dev.msfjarvis.lobsters.data.source.PostsDatabase import dev.msfjarvis.lobsters.data.source.PostsDatabase
import dev.msfjarvis.lobsters.data.source.PostsDatabase_Migrations import dev.msfjarvis.lobsters.data.source.PostsDatabase_Migrations
@Module @Module
@InstallIn(ActivityComponent::class) @InstallIn(ViewModelComponent::class)
object PersistenceModule { object PersistenceModule {
@Provides @Provides

View file

@ -25,14 +25,14 @@ import androidx.navigation.compose.navigate
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.collectAsLazyPagingItems
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dev.msfjarvis.lobsters.util.IconResource
import dev.msfjarvis.lobsters.ui.viewmodel.LobstersViewModel
import dev.msfjarvis.lobsters.ui.navigation.Destination import dev.msfjarvis.lobsters.ui.navigation.Destination
import dev.msfjarvis.lobsters.ui.posts.HottestPosts import dev.msfjarvis.lobsters.ui.posts.HottestPosts
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
import dev.msfjarvis.lobsters.ui.posts.SavedPosts import dev.msfjarvis.lobsters.ui.posts.SavedPosts
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncher import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncher
import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncherAmbient import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncherAmbient
import dev.msfjarvis.lobsters.ui.viewmodel.LobstersViewModel
import dev.msfjarvis.lobsters.util.IconResource
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint

View file

@ -4,7 +4,6 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.paging.LoadState import androidx.paging.LoadState
import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.LazyPagingItems
import androidx.paging.compose.items import androidx.paging.compose.items

View file

@ -63,7 +63,8 @@ fun LobstersItem(
onSaveButtonClick: () -> Unit, onSaveButtonClick: () -> Unit,
) { ) {
Surface( Surface(
modifier = Modifier.fillMaxWidth() modifier = Modifier
.fillMaxWidth()
.clickable( .clickable(
onClick = onClick, onClick = onClick,
onLongClick = onLongClick, onLongClick = onLongClick,
@ -77,7 +78,8 @@ fun LobstersItem(
text = post.title, text = post.title,
color = titleColor, color = titleColor,
fontWeight = FontWeight.Bold, fontWeight = FontWeight.Bold,
modifier = Modifier.padding(top = 4.dp) modifier = Modifier
.padding(top = 4.dp)
.constrainAs(title) { .constrainAs(title) {
top.linkTo(parent.top) top.linkTo(parent.top)
start.linkTo(parent.start) start.linkTo(parent.start)
@ -85,9 +87,11 @@ fun LobstersItem(
) )
TagRow( TagRow(
tags = post.tags, tags = post.tags,
modifier = Modifier.constrainAs(tags) { modifier = Modifier
top.linkTo(title.bottom) .constrainAs(tags) {
}.padding(vertical = 8.dp), top.linkTo(title.bottom)
}
.padding(vertical = 8.dp),
) )
CoilImage( CoilImage(
data = "https://lobste.rs/${post.submitterUser.avatarUrl}", data = "https://lobste.rs/${post.submitterUser.avatarUrl}",
@ -95,7 +99,9 @@ fun LobstersItem(
requestBuilder = { requestBuilder = {
transformations(CircleCropTransformation()) transformations(CircleCropTransformation())
}, },
modifier = Modifier.width(30.dp).padding(4.dp) modifier = Modifier
.width(30.dp)
.padding(4.dp)
.constrainAs(avatar) { .constrainAs(avatar) {
top.linkTo(tags.bottom) top.linkTo(tags.bottom)
start.linkTo(parent.start) start.linkTo(parent.start)
@ -103,14 +109,17 @@ fun LobstersItem(
) )
Text( Text(
text = "submitted by ${post.submitterUser.username}", text = "submitted by ${post.submitterUser.username}",
modifier = Modifier.padding(bottom = 4.dp).constrainAs(submitter) { modifier = Modifier
top.linkTo(tags.bottom) .padding(bottom = 4.dp)
start.linkTo(avatar.end) .constrainAs(submitter) {
}, top.linkTo(tags.bottom)
start.linkTo(avatar.end)
},
) )
IconResource( IconResource(
resourceId = R.drawable.ic_favorite_border_24px, resourceId = R.drawable.ic_favorite_border_24px,
modifier = Modifier.padding(8.dp) modifier = Modifier
.padding(8.dp)
.clickable( .clickable(
onClick = onSaveButtonClick, onClick = onSaveButtonClick,
indication = rememberRipple(), indication = rememberRipple(),

View file

@ -4,7 +4,6 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import dev.msfjarvis.lobsters.model.LobstersPost import dev.msfjarvis.lobsters.model.LobstersPost
import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncherAmbient import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncherAmbient

View file

@ -1,10 +1,10 @@
package dev.msfjarvis.lobsters.ui.viewmodel package dev.msfjarvis.lobsters.ui.viewmodel
import androidx.hilt.lifecycle.ViewModelInject
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import androidx.paging.Pager import androidx.paging.Pager
import androidx.paging.PagingConfig import androidx.paging.PagingConfig
import dagger.hilt.android.lifecycle.HiltViewModel
import dev.msfjarvis.lobsters.data.remote.LobstersPagingSource import dev.msfjarvis.lobsters.data.remote.LobstersPagingSource
import dev.msfjarvis.lobsters.data.source.PostsDatabase import dev.msfjarvis.lobsters.data.source.PostsDatabase
import dev.msfjarvis.lobsters.model.LobstersPost import dev.msfjarvis.lobsters.model.LobstersPost
@ -12,8 +12,10 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import javax.inject.Inject
class LobstersViewModel @ViewModelInject constructor( @HiltViewModel
class LobstersViewModel @Inject constructor(
private val pagingSource: LobstersPagingSource, private val pagingSource: LobstersPagingSource,
database: PostsDatabase, database: PostsDatabase,
) : ViewModel() { ) : ViewModel() {

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/> <background android:drawable="@mipmap/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> <foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/> <background android:drawable="@mipmap/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> <foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

6
app/version.properties Normal file
View file

@ -0,0 +1,6 @@
#
#This file was automatically generated by 'versioning-plugin'. DO NOT EDIT MANUALLY.
#
#Mon Jan 18 18:42:38 IST 2021
versioning-plugin.versionCode=10000
versioning-plugin.versionName=1.0.0

View file

@ -24,6 +24,10 @@ gradlePlugin {
id = "core-library-desugaring" id = "core-library-desugaring"
implementationClass = "CoreLibraryDesugaringPlugin" implementationClass = "CoreLibraryDesugaringPlugin"
} }
register("versioning") {
id = "versioning-plugin"
implementationClass = "VersioningPlugin"
}
} }
} }
@ -34,4 +38,5 @@ dependencies {
implementation(build.getValue("androidGradlePlugin_builder")) implementation(build.getValue("androidGradlePlugin_builder"))
implementation(build.getValue("androidGradlePlugin_builderModel")) implementation(build.getValue("androidGradlePlugin_builderModel"))
implementation(build.getValue("androidGradlePlugin_lintModel")) implementation(build.getValue("androidGradlePlugin_lintModel"))
implementation(build.getValue("jsemver"))
} }

View file

@ -1,15 +1,17 @@
rootProject.ext.versions = [ rootProject.ext.versions = [
agp: '7.0.0-alpha03', agp : '7.0.0-alpha04',
daggerHilt: '2.30.1-alpha', daggerHilt: '2.30.1-alpha',
kotlin: '1.4.21', kotlin : '1.4.21',
lint: '27.3.0-alpha03', lint : '27.3.0-alpha04',
semver : '0.9.0',
] ]
rootProject.ext.build = [ rootProject.ext.build = [
androidGradlePlugin: "com.android.tools.build:gradle:${versions.agp}", androidGradlePlugin : "com.android.tools.build:gradle:${versions.agp}",
androidGradlePlugin_builder: "com.android.tools.build:builder:${versions.agp}", androidGradlePlugin_builder : "com.android.tools.build:builder:${versions.agp}",
androidGradlePlugin_builderModel: "com.android.tools.build:builder-model:${versions.agp}", androidGradlePlugin_builderModel: "com.android.tools.build:builder-model:${versions.agp}",
androidGradlePlugin_lintModel: "com.android.tools.lint:lint-model:${versions.lint}", androidGradlePlugin_lintModel : "com.android.tools.lint:lint-model:${versions.lint}",
daggerGradlePlugin: "com.google.dagger:hilt-android-gradle-plugin:${versions.daggerHilt}", daggerGradlePlugin : "com.google.dagger:hilt-android-gradle-plugin:${versions.daggerHilt}",
kotlinGradlePlugin: "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}", kotlinGradlePlugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}",
jsemver : "com.github.zafarkhaja:java-semver:${versions.semver}",
] ]

View file

@ -25,9 +25,9 @@ internal fun Project.configureForRootProject() {
delete(rootProject.buildDir) delete(rootProject.buildDir)
} }
tasks.withType<Wrapper> { tasks.withType<Wrapper> {
gradleVersion = "6.8-rc-1" gradleVersion = "6.8"
distributionType = Wrapper.DistributionType.ALL distributionType = Wrapper.DistributionType.ALL
distributionSha256Sum = "89714fb5db6bd66fa5a2302f58d26dc33ecd3db36b24a42d84ff6ba99551eeda" distributionSha256Sum = "a7ca23b3ccf265680f2bfd35f1f00b1424f4466292c7337c85d46c9641b3f053"
} }
} }
@ -54,12 +54,14 @@ internal fun Project.configureForAllProjects() {
} }
} }
} }
/** /**
* Apply configuration options for Android Application projects. * Apply configuration options for Android Application projects.
*/ */
@Suppress("UnstableApiUsage") @Suppress("UnstableApiUsage")
internal fun BaseAppModuleExtension.configureAndroidApplicationOptions(project: Project) { internal fun BaseAppModuleExtension.configureAndroidApplicationOptions(project: Project) {
val minifySwitch = project.providers.environmentVariable("DISABLE_MINIFY").forUseAtConfigurationTime() val minifySwitch =
project.providers.environmentVariable("DISABLE_MINIFY").forUseAtConfigurationTime()
project.tasks.withType<KotlinCompile> { project.tasks.withType<KotlinCompile> {
kotlinOptions { kotlinOptions {
freeCompilerArgs = freeCompilerArgs + listOf( freeCompilerArgs = freeCompilerArgs + listOf(

View file

@ -3,11 +3,11 @@
* SPDX-License-Identifier: GPL-3.0-only * SPDX-License-Identifier: GPL-3.0-only
*/ */
private const val ANDROIDX_HILT_VERSION = "1.0.0-alpha02" private const val DAGGER_HILT_VERSION = "2.31-alpha"
private const val DAGGER_HILT_VERSION = "2.30.1-alpha"
object Dependencies { object Dependencies {
const val COMPOSE_VERSION = "1.0.0-alpha09" const val COMPOSE_VERSION = "1.0.0-alpha10"
object Kotlin { object Kotlin {
object Coroutines { object Coroutines {
@ -21,9 +21,9 @@ object Dependencies {
object AndroidX { object AndroidX {
const val activityKtx = "androidx.activity:activity-ktx:1.2.0-rc01" const val activityKtx = "androidx.activity:activity-ktx:1.2.0-rc01"
const val appCompat = "androidx.appcompat:appcompat:1.3.0-alpha02" const val appCompat = "androidx.appcompat:appcompat:1.3.0-beta01"
const val browser = "androidx.browser:browser:1.3.0" const val browser = "androidx.browser:browser:1.3.0"
const val coreKtx = "androidx.core:core-ktx:1.5.0-alpha05" const val coreKtx = "androidx.core:core-ktx:1.5.0-beta01"
const val coreLibraryDesugaring = "com.android.tools:desugar_jdk_libs:1.0.10" const val coreLibraryDesugaring = "com.android.tools:desugar_jdk_libs:1.0.10"
const val material = "com.google.android.material:material:1.3.0-beta01" const val material = "com.google.android.material:material:1.3.0-beta01"
@ -33,8 +33,8 @@ object Dependencies {
const val foundation = "androidx.compose.foundation:foundation:$COMPOSE_VERSION" const val foundation = "androidx.compose.foundation:foundation:$COMPOSE_VERSION"
const val foundationLayout = "androidx.compose.foundation:foundation-layout:$COMPOSE_VERSION" const val foundationLayout = "androidx.compose.foundation:foundation-layout:$COMPOSE_VERSION"
const val material = "androidx.compose.material:material:$COMPOSE_VERSION" const val material = "androidx.compose.material:material:$COMPOSE_VERSION"
const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha04" const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha05"
const val paging = "androidx.paging:paging-compose:1.0.0-alpha04" const val paging = "androidx.paging:paging-compose:1.0.0-alpha05"
const val runtime = "androidx.compose.runtime:runtime:$COMPOSE_VERSION" const val runtime = "androidx.compose.runtime:runtime:$COMPOSE_VERSION"
const val ui = "androidx.compose.ui:ui:$COMPOSE_VERSION" const val ui = "androidx.compose.ui:ui:$COMPOSE_VERSION"
const val uiUnit = "androidx.compose.ui:ui-unit:$COMPOSE_VERSION" const val uiUnit = "androidx.compose.ui:ui-unit:$COMPOSE_VERSION"
@ -44,9 +44,6 @@ object Dependencies {
object Hilt { object Hilt {
const val dagger = "com.google.dagger:hilt-android:$DAGGER_HILT_VERSION" const val dagger = "com.google.dagger:hilt-android:$DAGGER_HILT_VERSION"
const val daggerCompiler = "com.google.dagger:hilt-compiler:$DAGGER_HILT_VERSION" const val daggerCompiler = "com.google.dagger:hilt-compiler:$DAGGER_HILT_VERSION"
const val daggerHiltCompiler = "androidx.hilt:hilt-compiler:$ANDROIDX_HILT_VERSION"
const val hiltLifecycleViewmodel =
"androidx.hilt:hilt-lifecycle-viewmodel:$ANDROIDX_HILT_VERSION"
} }
object Lifecycle { object Lifecycle {
@ -67,7 +64,7 @@ object Dependencies {
object ThirdParty { object ThirdParty {
const val accompanist = "dev.chrisbanes.accompanist:accompanist-coil:0.4.1" const val accompanist = "dev.chrisbanes.accompanist:accompanist-coil:0.4.2"
const val customtabs = "saschpe.android:customtabs:3.0.2" const val customtabs = "saschpe.android:customtabs:3.0.2"
object Moshi { object Moshi {

View file

@ -40,7 +40,8 @@ class LobstersPlugin : Plugin<Project> {
is AppPlugin -> { is AppPlugin -> {
project.extensions.getByType<TestedExtension>().configureCommonAndroidOptions() project.extensions.getByType<TestedExtension>().configureCommonAndroidOptions()
project.extensions.getByType<BaseAppModuleExtension>().configureBuildSigning(project) project.extensions.getByType<BaseAppModuleExtension>().configureBuildSigning(project)
project.extensions.getByType<BaseAppModuleExtension>().configureAndroidApplicationOptions(project) project.extensions.getByType<BaseAppModuleExtension>()
.configureAndroidApplicationOptions(project)
} }
is Kapt3GradleSubplugin -> { is Kapt3GradleSubplugin -> {
project.configureKapt() project.configureKapt()

View file

@ -4,8 +4,8 @@
*/ */
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import java.util.Properties
import org.gradle.api.Project import org.gradle.api.Project
import java.util.*
private const val KEYSTORE_CONFIG_PATH = "keystore.properties" private const val KEYSTORE_CONFIG_PATH = "keystore.properties"

View file

@ -0,0 +1,116 @@
/*
* Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
* SPDX-License-Identifier: GPL-3.0-only
*/
import com.android.build.gradle.internal.plugins.AppPlugin
import com.github.zafarkhaja.semver.Version
import org.gradle.api.Plugin
import org.gradle.api.Project
import java.io.OutputStream
import java.util.*
private const val VERSIONING_PROP_FILE = "version.properties"
private const val VERSIONING_PROP_VERSION_NAME = "versioning-plugin.versionName"
private const val VERSIONING_PROP_VERSION_CODE = "versioning-plugin.versionCode"
private const val VERSIONING_PROP_COMMENT = """
This file was automatically generated by 'versioning-plugin'. DO NOT EDIT MANUALLY.
"""
/**
* A Gradle [Plugin] that takes a [Project] with the [AppPlugin] applied and dynamically sets the
* versionCode and versionName properties based on values read from a [VERSIONING_PROP_FILE] file in
* the [Project.getBuildDir] directory. It also adds Gradle tasks to bump the major, minor, and patch
* versions along with one to prepare the next snapshot.
*/
@Suppress(
"UnstableApiUsage",
"NAME_SHADOWING"
)
class VersioningPlugin : Plugin<Project> {
/**
* Generate the Android 'versionCode' property
*/
private fun Version.androidCode(): Int {
return majorVersion * 1_00_00 +
minorVersion * 1_00 +
patchVersion
}
/**
* Write an Android-specific variant of [this] to [stream]
*/
private fun Version.writeForAndroid(stream: OutputStream) {
val newVersionCode = androidCode()
val props = Properties()
props.setProperty(VERSIONING_PROP_VERSION_CODE, "$newVersionCode")
props.setProperty(VERSIONING_PROP_VERSION_NAME, toString())
props.store(stream, VERSIONING_PROP_COMMENT)
}
/**
* Returns the same [Version], but with build metadata stripped.
*/
private fun Version.clearPreRelease(): Version {
return Version.forIntegers(majorVersion, minorVersion, patchVersion)
}
override fun apply(project: Project) {
with(project) {
val appPlugin = requireNotNull(plugins.findPlugin(AppPlugin::class.java)) {
"Plugin 'com.android.application' must be applied to use this plugin"
}
val propFile = layout.projectDirectory.file(VERSIONING_PROP_FILE)
require(propFile.asFile.exists()) {
"A 'version.properties' file must exist in the project subdirectory to use this plugin"
}
val contents = providers.fileContents(propFile).asText.forUseAtConfigurationTime()
val versionProps = Properties().also { it.load(contents.get().byteInputStream()) }
val versionName = requireNotNull(versionProps.getProperty(VERSIONING_PROP_VERSION_NAME)) {
"version.properties must contain a '$VERSIONING_PROP_VERSION_NAME' property"
}
val versionCode =
requireNotNull(versionProps.getProperty(VERSIONING_PROP_VERSION_CODE).toInt()) {
"version.properties must contain a '$VERSIONING_PROP_VERSION_CODE' property"
}
appPlugin.extension.defaultConfig.versionName = versionName
appPlugin.extension.defaultConfig.versionCode = versionCode
afterEvaluate {
val version = Version.valueOf(versionName)
tasks.register("clearPreRelease") {
doLast {
version.clearPreRelease()
.writeForAndroid(propFile.asFile.outputStream())
}
}
tasks.register("bumpMajor") {
doLast {
version.incrementMajorVersion()
.writeForAndroid(propFile.asFile.outputStream())
}
}
tasks.register("bumpMinor") {
doLast {
version.incrementMinorVersion()
.writeForAndroid(propFile.asFile.outputStream())
}
}
tasks.register("bumpPatch") {
doLast {
version.incrementPatchVersion()
.writeForAndroid(propFile.asFile.outputStream())
}
}
tasks.register("bumpSnapshot") {
doLast {
version.incrementMinorVersion()
.setPreReleaseVersion("SNAPSHOT")
.writeForAndroid(propFile.asFile.outputStream())
}
}
}
}
}
}

View file

@ -38,7 +38,8 @@ android.enableRTxtResourceShrinking=true
android.enablePartialRIncrementalBuilds=true android.enablePartialRIncrementalBuilds=true
android.experimental.enableNewResourceShrinker=true android.experimental.enableNewResourceShrinker=true
android.experimental.enableNewResourceShrinker.preciseShrinking=true android.experimental.enableNewResourceShrinker.preciseShrinking=true
android.generateManifestClass=true # Breaks build with AGP 7.0.0-alpha04
# android.generateManifestClass=true
# Default Android build features # Default Android build features
android.defaults.buildfeatures.buildconfig=false android.defaults.buildfeatures.buildconfig=false

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionSha256Sum=89714fb5db6bd66fa5a2302f58d26dc33ecd3db36b24a42d84ff6ba99551eeda distributionSha256Sum=a7ca23b3ccf265680f2bfd35f1f00b1424f4466292c7337c85d46c9641b3f053
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-rc-1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-all.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View file

@ -7,7 +7,6 @@ plugins {
dependencies { dependencies {
kapt(Dependencies.AndroidX.Hilt.daggerCompiler) kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
kapt(Dependencies.AndroidX.Hilt.daggerHiltCompiler)
kapt(Dependencies.ThirdParty.Moshi.codegen) kapt(Dependencies.ThirdParty.Moshi.codegen)
api(Dependencies.ThirdParty.Retrofit.lib) api(Dependencies.ThirdParty.Retrofit.lib)
implementation(Dependencies.AndroidX.Hilt.dagger) implementation(Dependencies.AndroidX.Hilt.dagger)

View file

@ -1,11 +1,11 @@
package dev.msfjarvis.lobsters.injection package dev.msfjarvis.lobsters.injection
import com.squareup.moshi.Moshi import com.squareup.moshi.Moshi
import dagger.Module
import dagger.Lazy import dagger.Lazy
import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent import dagger.hilt.android.components.ViewModelComponent
import dev.msfjarvis.lobsters.data.api.LobstersApi import dev.msfjarvis.lobsters.data.api.LobstersApi
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import retrofit2.Retrofit import retrofit2.Retrofit
@ -13,7 +13,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory
import retrofit2.create import retrofit2.create
@Module @Module
@InstallIn(ActivityComponent::class) @InstallIn(ViewModelComponent::class)
object ApiModule { object ApiModule {
@Provides @Provides

View file

@ -3,14 +3,14 @@ package dev.msfjarvis.lobsters.data.api
import dev.msfjarvis.lobsters.injection.ApiModule import dev.msfjarvis.lobsters.injection.ApiModule
import dev.msfjarvis.lobsters.injection.MoshiModule import dev.msfjarvis.lobsters.injection.MoshiModule
import dev.msfjarvis.lobsters.util.TestUtils import dev.msfjarvis.lobsters.util.TestUtils
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import okhttp3.mockwebserver.Dispatcher import okhttp3.mockwebserver.Dispatcher
import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer import okhttp3.mockwebserver.MockWebServer
import okhttp3.mockwebserver.RecordedRequest import okhttp3.mockwebserver.RecordedRequest
import org.junit.AfterClass import org.junit.AfterClass
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.BeforeClass import org.junit.BeforeClass
import org.junit.Test import org.junit.Test