Skip to content

Instantly share code, notes, and snippets.

View felipefpx's full-sized avatar

Felipe Porge Xavier felipefpx

View GitHub Profile
@felipefpx
felipefpx / material_icon_fix_folders.sh
Last active June 22, 2021 19:32
Material Design Icons Script for Mac
iconDir=~/Downloads
targetDir=~/Desktop
mkdir -p $targetDir/res/drawable-mdpi/
mkdir -p $targetDir/res/drawable-hdpi/
mkdir -p $targetDir/res/drawable-xhdpi/
mkdir -p $targetDir/res/drawable-xxhdpi/
mkdir -p $targetDir/res/drawable-xxxhdpi/
find $iconDir/ -type d -name "drawable-mdpi" -exec find {} -type f -name "*.png" \; | xargs -I '{}' mv {} $targetDir/res/drawable-mdpi/
@felipefpx
felipefpx / projectSetup.sh
Last active June 22, 2021 19:32
projectSetup.sh for CircleCI
#!/usr/bin/env bash
function prepareRequiredInfo {
GRADLE_PROPERTIES=$HOME"/code/gradle.properties"
export GRADLE_PROPERTIES
KEY_STORE_PATH=$HOME"/code/.misc/ead_keystore.jks"
export KEY_STORE_PATH
find $HOME -name "gradle.properties.sample" -exec printf "Found sample file: %s\n" {} \;
@felipefpx
felipefpx / config.yml
Last active February 3, 2020 00:07
config.yml for CircleCI
# Android Gradle CircleCI 2.0 configuration file
# Check https://circleci.com/docs/2.0/language-java/ for more details
# Suggestion: build the project by using ./gradlew lint test before using CircleCI
version: 2
jobs:
build:
working_directory: ~/code
docker:
- image: circleci/android:api-25-alpha
@felipefpx
felipefpx / android-wait-for-emulator.sh
Last active June 22, 2021 19:31
android-wait-for-emulator.sh for CircleCI
#!/bin/bash
# Originally written by Ralf Kistner <ralf@embarkmobile.com>, but placed in the public domain
set +e
bootanim=""
failcounter=0
timeout_in_sec=360
@felipefpx
felipefpx / send_email.py
Last active May 7, 2018 14:23
This code sends an email with attachments using Python
import smtplib
import sys
from os.path import basename
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
# Usage: python send_email.py "me@mail.com" "pass" "receiver1@mail.com, receiver2@mail.com" "DEV" "ADT" "v1.2.3" "/Users/username/Desktop/log.txt,/Users/username/Desktop/dolog.txt"
send_from = sys.argv[1]
@felipefpx
felipefpx / coverage.sh
Created September 1, 2019 10:29
Jacoco Merged Report for Multimodule Android with Kotlin DSL
#!/bin/bash
clear
./gradlew clean mergedJacocoReport
./gradlew jacocoFullReport
REPORT_PATH="file://$(pwd)/build/reports/jacoco/jacocoFullReport/html/index.html"
echo ${REPORT_PATH} | pbcopy
echo "Report available at:"
echo ${REPORT_PATH}
echo "Report file path copied to clipboard. You can paste it in your favorite browser. :)"
/*
* Copyright 2017 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
fun <T> LiveData<T>.blockingObserve(): T? {
val countDownLatch = CountDownLatch(1)
var result: T? = null
val observer = Observer<T> {
import android.util.Log
import androidx.test.espresso.IdlingRegistry
import com.jakewharton.espresso.OkHttp3IdlingResource
import okhttp3.Interceptor
import okhttp3.OkHttpClient
import okhttp3.Response
import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer
import okhttp3.mockwebserver.QueueDispatcher
@felipefpx
felipefpx / AnyRvAdapter.kt
Last active May 15, 2020 14:41
AnyRvAdapter - Recycler view adapter for any class that supports multiple view types
package me.porge.something.adapters
import android.support.v7.widget.RecyclerView
import android.view.View
import android.view.ViewGroup
import kotlin.reflect.KClass
class AnyRvAdapter(
private val controllers: Map<KClass<*>, AnyRvItemController<*>>,
initialItems: List<Any> = emptyList(),