Skip to content

Instantly share code, notes, and snippets.

@GuilhE
GuilhE / deploy-bintray.gradle.kts
Created Feb 5, 2021
Gradle configurations to deploy both to Bintray and Maven
View deploy-bintray.gradle.kts
import com.jfrog.bintray.gradle.BintrayExtension
import com.jfrog.bintray.gradle.BintrayPlugin
import java.io.FileInputStream
import java.util.*
buildscript {
repositories {
jcenter()
}
@GuilhE
GuilhE / firebaseLocalDistribution.sh
Last active Apr 8, 2021
Firebase App Distribution (locally)
View firebaseLocalDistribution.sh
#!/bin/bash
BOLD=$(tput bold)
NORMAL=$(tput sgr0)
PROPERTY_FILE=local.properties
function getProperty() {
PROP_KEY=$1
# shellcheck disable=SC2002
PROP_VALUE=$(cat $PROPERTY_FILE | grep -w "$PROP_KEY" | cut -d'=' -f2-)
echo "$PROP_VALUE"
@GuilhE
GuilhE / build.gradle.kts
Last active Sep 4, 2021
Gradle configurations to be used with bitbucket-pipelines.yml or firebaseLocalDistribution.sh
View build.gradle.kts
import com.android.build.gradle.internal.dsl.SigningConfig
import java.io.FileInputStream
import java.util.*
buildTypes {
getByName("release") {
//...
if (File("signing.properties").exists()) {
signingConfig = SigningConfig("firebaseDistribution").apply {
val prop = Properties().apply { load(FileInputStream(File("signing.properties"))) }
@GuilhE
GuilhE / bitbucket-pipelines.yml
Last active Feb 3, 2021
Bitbucket pipeline for Android Firebase App Distribution
View bitbucket-pipelines.yml
image: bitbucketpipelines/android-ci-image
pipelines:
tags:
firebase-*:
- step:
name: Setup & Deploy
image: java:8 #remove this line if plugin "com.starter.easylauncher" isn't used
caches:
- android-sdk
@GuilhE
GuilhE / RxExtensions.kt
Created Mar 4, 2020
Helper compose functions for RxKotlin
View RxExtensions.kt
import android.annotation.SuppressLint
import com.blissapplications.kotlin.core.common.threads.ReactivexThreadSchedulerProvider
import io.reactivex.Completable
import io.reactivex.Single
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
/**
* Examples of usage of this extensions functions:
*
@GuilhE
GuilhE / OperatorExtensionsTest.kt
Last active Feb 19, 2020
OperatorExtensions tests with MockK
View OperatorExtensionsTest.kt
import io.mockk.clearAllMocks
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runBlockingTest
import kotlinx.coroutines.test.setMain
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.*
@GuilhE
GuilhE / OperatorExtensions.kt
Last active Mar 21, 2020
Extension class to convert ReactiveX operators into Coroutines
View OperatorExtensions.kt
import kotlinx.coroutines.*
fun throttleClick(scope: CoroutineScope = CoroutineScope(Dispatchers.Main), clickAction: (Unit) -> Unit): (Unit) -> Unit {
return throttleFirst(1_000, scope, clickAction)
}
/**
* Processes input data and passes the first data to [action] and skips all new data for the next [skipMs].
*/
fun <T> throttleFirst(skipMs: Long = 700L, scope: CoroutineScope = CoroutineScope(Dispatchers.Main), action: (T) -> Unit): (T) -> Unit {
@GuilhE
GuilhE / EndlessRecyclerOnScrollListener.kt
Last active Mar 21, 2020
Helper listener class to implement pagination
View EndlessRecyclerOnScrollListener.kt
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@Suppress("unused")
abstract class EndlessRecyclerOnScrollListener(
manager: LinearLayoutManager
) : RecyclerView.OnScrollListener() {
private var layoutManager: LinearLayoutManager = manager
@GuilhE
GuilhE / .gitattributes
Created Feb 1, 2019
GitAttributes to use with git-lfs
View .gitattributes
# Collapse Unity-generated files on GitHub
*.asset linguist-generated
*.mat linguist-generated
*.meta linguist-generated
*.prefab linguist-generated
*.unity linguist-generated
# 3D models
*.3dm filter=lfs diff=lfs merge=lfs -text
*.3ds filter=lfs diff=lfs merge=lfs -text
@GuilhE
GuilhE / travis.yml
Created Oct 31, 2018
Travis CI configurations for testing without emulator
View travis.yml
language: android
dist: trusty
notifications:
email: false
jdk:
- oraclejdk8
env: