Skip to content

Instantly share code, notes, and snippets.

View PStrelchenko's full-sized avatar

Pavel Strelchenko PStrelchenko

View GitHub Profile
@PStrelchenko
PStrelchenko / parse_ui_tests_allure_results.rb
Created March 6, 2023 06:06
Fastlane action для merge-а результатов Allure-а из Marathon-а и отдельных устройств
# frozen_string_literal: true
require 'json'
require 'fastlane_core'
require 'fileutils'
require_relative '../modules/shared_config_items'
module Fastlane
module Actions
# Action работает с отдельными Allure-результатами, генерируемыми на стороне Marathon-а и отдельных устройств.
@PStrelchenko
PStrelchenko / DebugPanelViewModel.kt
Created May 9, 2022 23:45
Taming feature flags / Colony usage
// :debug-panel --> DebugPanelViewModel.kt
fun getAllExperiments(): List<Experiment> {
return ExperimentsCollector().getAllExperiments()
}
@PStrelchenko
PStrelchenko / ExperimentsCollector.kt
Created May 9, 2022 23:43
Taming feature flags / Define collector class for Colonist
// :debug-panel --> ExperimentsCollector.kt
@ExperimentsColony
internal class ExperimentsCollector {
private val experiments = mutableListOf<Experiment>()
init {
Colonist.settle(this)
}
@PStrelchenko
PStrelchenko / ExperimentsColony.kt
Created May 9, 2022 23:40
Taming feature flags / Create new Colony annotation
// :debug-panel --> ExperimentsColony.kt
@Colony
@SelectSettlersBySuperType(Experiment::class)
@ProduceSettlersViaConstructor
@AcceptSettlersViaCallback
@Target(AnnotationTarget.CLASS)
internal annotation class ExperimentsColony
@PStrelchenko
PStrelchenko / build.gradle.kts
Created May 9, 2022 23:38
Taming feature flags / Add Colonist dependencies
// rootProject --> build.gradle.kts
buildscript {
dependencies {
classpath("com.joom.colonist:colonist-gradle-plugin:0.1.0-alpha9")
}
}
// :app --> build.gradle.kts
@PStrelchenko
PStrelchenko / build.gradle.kts
Created May 9, 2022 23:30
Taming feature flags / Trying to exclude META-INF file from release APK
import com.android.build.gradle.BaseExtension
configure<BaseExtension> {
...
packagingOptions {
...
exclude("META-INF/services/ru.hh.shared.core.experiments.Experiment")
}
@PStrelchenko
PStrelchenko / build.gradle.kts
Created May 9, 2022 23:18
Taming feature flags / Disable ClassIndex for current module
// library-module/build.gradle.kts
...
dependencies {
if (project.hasProperty("disableIndex").not()) {
compileOnly(Libs.debug.classIndex)
kapt(Libs.debug.classIndex)
}
}
@PStrelchenko
PStrelchenko / build.gradle.kts
Created May 9, 2022 23:14
Taming feature flags / Adds ClassIndex library into feature module dependencies
// library-module/build.gradle.kts
...
dependencies {
compileOnly(Libs.debug.classIndex)
kapt(Libs.debug.classIndex)
}
@PStrelchenko
PStrelchenko / Experiment.kt
Created May 9, 2022 23:13
Taming feature flags / ClassIndex library usage
import org.atteo.classindex.IndexSubclasses
@IndexSubclasses
interface Experiment {
val key: String
}
@PStrelchenko
PStrelchenko / DebugPanelViewModel.kt
Created May 9, 2022 23:09
Taming feature flags / ServiceLoader usage
// :debug-panel/DebugPanelViewModel.kt
fun getAllExperiments(): List<Experiment> {
return ServiceLoader.load(Experiment::class.java).toList()
}