Skip to content

Commit 90192b7

Browse files
committed
fix: ktlint and detekt
1 parent 725981f commit 90192b7

9 files changed

Lines changed: 116 additions & 98 deletions

File tree

gradle-plugins/react/brownfield/build.gradle.kts

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
plugins {
22
alias(libs.plugins.kotlinJvm)
33
`java-gradle-plugin`
4-
// alias(libs.plugins.ktlint)
5-
// alias(libs.plugins.detekt)
4+
alias(libs.plugins.ktlint)
5+
alias(libs.plugins.detekt)
66
`maven-publish`
77
signing
88
}
99

10-
//ktlint {
11-
// debug.set(false)
12-
// verbose.set(true)
13-
// android.set(false)
14-
// outputToConsole.set(true)
15-
// ignoreFailures.set(false)
16-
// enableExperimentalRules.set(true)
17-
//
18-
// filter {
19-
// exclude("**/generated/**")
20-
// include("**/kotlin/**")
21-
// }
22-
//}
23-
//
24-
//detekt {
25-
// toolVersion = libs.versions.detekt.get()
26-
// config.setFrom(file("config/detekt/detekt.yml"))
27-
// buildUponDefaultConfig = true
28-
//}
10+
ktlint {
11+
debug.set(false)
12+
verbose.set(true)
13+
android.set(false)
14+
outputToConsole.set(true)
15+
ignoreFailures.set(false)
16+
enableExperimentalRules.set(true)
17+
18+
filter {
19+
exclude("**/generated/**")
20+
include("**/kotlin/**")
21+
}
22+
}
23+
24+
detekt {
25+
toolVersion = libs.versions.detekt.get()
26+
config.setFrom(file("config/detekt/detekt.yml"))
27+
buildUponDefaultConfig = true
28+
}
2929

3030
group = property("GROUP").toString()
3131
version = property("VERSION").toString()
@@ -110,13 +110,13 @@ dependencies {
110110
implementation(libs.versioncompare)
111111
}
112112

113-
//tasks.named("detekt").configure {
114-
// dependsOn(":ktlintFormat")
115-
//}
116-
//
117-
//tasks.register("lint") {
118-
// dependsOn(":ktlintFormat")
119-
//}
113+
tasks.named("detekt").configure {
114+
dependsOn(":ktlintFormat")
115+
}
116+
117+
tasks.register("lint") {
118+
dependsOn(":ktlintFormat")
119+
}
120120

121121
java {
122122
withJavadocJar()

gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/ProjectConfigurations.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.callstack.react.brownfield.plugin
22

3-
import com.android.build.api.variant.LibraryAndroidComponentsExtension
43
import com.android.build.api.dsl.LibraryExtension
4+
import com.android.build.api.variant.LibraryAndroidComponentsExtension
55
import com.callstack.react.brownfield.shared.Logging
66
import com.callstack.react.brownfield.utils.capitalized
77
import org.gradle.api.Project

gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNBrownfieldPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ class RNBrownfieldPlugin : Plugin<Project> {
148148

149149
/** ===== jniLibsProcessor ===== */
150150
val jniLibsProcessor = JNILibsProcessor(project)
151-
jniLibsProcessor.processJniLibs(aarLibraries, variant, explodeTask)
151+
jniLibsProcessor.processJniLibs(aarLibraries, variant)
152152

153153
/** ===== proguardProcessor ===== */
154154
val proguardProcessor = ProguardProcessor(project)

gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/plugin/RNSourceSets.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.callstack.react.brownfield.plugin
22

3-
import com.android.build.api.variant.LibraryAndroidComponentsExtension
43
import com.android.build.api.dsl.LibraryExtension
4+
import com.android.build.api.variant.LibraryAndroidComponentsExtension
55
import com.callstack.react.brownfield.exceptions.NameSpaceNotFound
66
import com.callstack.react.brownfield.utils.Extension
77
import com.callstack.react.brownfield.utils.Utils
Lines changed: 82 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
package com.callstack.react.brownfield.processors
22

33
import com.android.build.api.variant.LibraryVariant
4-
import com.callstack.react.brownfield.shared.Constants.INTERMEDIATES_TEMP_DIR
5-
import com.callstack.react.brownfield.shared.ExplodeAarTask
64
import com.callstack.react.brownfield.shared.Logging
75
import com.callstack.react.brownfield.utils.AndroidArchiveLibrary
86
import com.callstack.react.brownfield.utils.Extension
97
import com.callstack.react.brownfield.utils.capitalized
10-
import org.gradle.api.Project
11-
import java.io.File
12-
138
import org.gradle.api.DefaultTask
9+
import org.gradle.api.Project
1410
import org.gradle.api.file.ConfigurableFileCollection
1511
import org.gradle.api.file.DirectoryProperty
16-
import org.gradle.api.provider.ListProperty
1712
import org.gradle.api.provider.Property
18-
import org.gradle.api.tasks.*
13+
import org.gradle.api.tasks.CacheableTask
14+
import org.gradle.api.tasks.Input
15+
import org.gradle.api.tasks.InputDirectory
16+
import org.gradle.api.tasks.InputFiles
17+
import org.gradle.api.tasks.Optional
18+
import org.gradle.api.tasks.OutputDirectory
19+
import org.gradle.api.tasks.PathSensitive
20+
import org.gradle.api.tasks.PathSensitivity
21+
import org.gradle.api.tasks.TaskAction
22+
import java.io.File
1923
import kotlin.collections.component1
2024
import kotlin.collections.component2
2125

@@ -24,16 +28,16 @@ import kotlin.collections.component2
2428
* with the AAR as they are provided by the Gradle when AAR is
2529
* consumed by the host App.
2630
*/
27-
val UN_ALLOWED_LIBS = listOf(
28-
"libc++_shared.so", "libfbjni.so", "libhermestooling.so",
29-
"libhermesvm.so", "libimagepipeline.so", "libjsi.so",
30-
"libnative-filters.so", "libnative-imagetranscoder.so",
31-
"libreactnative.so"
32-
)
31+
val UN_ALLOWED_LIBS =
32+
listOf(
33+
"libc++_shared.so", "libfbjni.so", "libhermestooling.so",
34+
"libhermesvm.so", "libimagepipeline.so", "libjsi.so",
35+
"libnative-filters.so", "libnative-imagetranscoder.so",
36+
"libreactnative.so",
37+
)
3338

3439
@CacheableTask
3540
abstract class ProcessAndCopyJniLibsTask : DefaultTask() {
36-
3741
@get:InputFiles
3842
@get:PathSensitive(PathSensitivity.RELATIVE)
3943
abstract val aarJniDirs: ConfigurableFileCollection
@@ -56,9 +60,10 @@ abstract class ProcessAndCopyJniLibsTask : DefaultTask() {
5660
outDir.deleteRecursively()
5761
outDir.mkdirs()
5862

59-
val existingJNILibs = listOf("arm64-v8a", "armeabi-v7a", "x86_64", "x86")
60-
.associateWith { mutableListOf<String>() }
61-
.toMutableMap()
63+
val existingJNILibs =
64+
listOf("arm64-v8a", "armeabi-v7a", "x86_64", "x86")
65+
.associateWith { mutableListOf<String>() }
66+
.toMutableMap()
6267

6368
// 1. Scan and process duplicate libs from AAR paths
6469
aarJniDirs.forEach { jniDir ->
@@ -78,33 +83,52 @@ abstract class ProcessAndCopyJniLibsTask : DefaultTask() {
7883
}
7984
}
8085

81-
private fun copyStrippedSoLibs(outDir: File, existingJNILibs: MutableMap<String, MutableList<String>>) {
86+
private fun copyStrippedSoLibs(
87+
outDir: File,
88+
existingJNILibs: MutableMap<String, MutableList<String>>,
89+
) {
8290
val fromDir = strippedLibsDir.get().asFile
83-
if (fromDir.exists()) {
84-
existingJNILibs.forEach { (arch, libNames) ->
85-
val sourceArchDir = File(fromDir, arch)
86-
if (sourceArchDir.exists()) {
87-
val destArchDir = File(outDir, arch).apply { mkdirs() }
88-
sourceArchDir.listFiles()?.forEach { file ->
89-
val name = file.name
90-
91-
val isCodegenLib = name.startsWith("libreact_codegen_") && name.endsWith(".so")
92-
val isUnAllowedLib = UN_ALLOWED_LIBS.any { lib -> name == lib || name.contains(lib) }
93-
val matchesFilter = name == "libappmodules.so" || isCodegenLib || !isUnAllowedLib
94-
95-
if (matchesFilter) {
96-
try {
97-
file.copyTo(File(destArchDir, name), overwrite = true)
98-
} catch (e: java.io.IOException) {
99-
Logging.error("Failed to copy $name: ${e.message}", e.cause)
100-
}
101-
}
102-
}
103-
}
104-
}
91+
if (!fromDir.exists()) return
92+
93+
existingJNILibs.keys.forEach { arch ->
94+
copyArchStrippedSoLibs(fromDir, outDir, arch)
95+
}
96+
}
97+
98+
private fun copyArchStrippedSoLibs(
99+
fromDir: File,
100+
outDir: File,
101+
arch: String,
102+
) {
103+
val sourceArchDir = File(fromDir, arch)
104+
if (!sourceArchDir.exists()) return
105+
106+
val destArchDir = File(outDir, arch).apply { mkdirs() }
107+
sourceArchDir.listFiles()?.forEach { file ->
108+
copyIfAllowed(file, destArchDir)
109+
}
110+
}
111+
112+
private fun copyIfAllowed(
113+
file: File,
114+
destArchDir: File,
115+
) {
116+
val name = file.name
117+
if (!matchesAllowedLib(name)) return
118+
119+
try {
120+
file.copyTo(File(destArchDir, name), overwrite = true)
121+
} catch (e: java.io.IOException) {
122+
Logging.error("Failed to copy $name: ${e.message}", e.cause)
105123
}
106124
}
107125

126+
private fun matchesAllowedLib(name: String): Boolean {
127+
val isCodegenLib = name.startsWith("libreact_codegen_") && name.endsWith(".so")
128+
val isUnAllowedLib = UN_ALLOWED_LIBS.any { lib -> name == lib || name.contains(lib) }
129+
return name == "libappmodules.so" || isCodegenLib || !isUnAllowedLib
130+
}
131+
108132
private fun processNestedLibs(
109133
files: Array<File>?,
110134
existingJNILibs: MutableMap<String, MutableList<String>>,
@@ -128,37 +152,37 @@ class JNILibsProcessor(val project: Project) {
128152
fun processJniLibs(
129153
aarLibraries: Collection<AndroidArchiveLibrary>,
130154
variant: LibraryVariant,
131-
explodeTask: TaskProvider<ExplodeAarTask>,
132155
) {
133156
val variantName = variant.name
134157
val capitalizedVariantName = variantName.capitalized()
135158
val projectExt = project.extensions.getByType(Extension::class.java)
136159
val appProject = project.rootProject.project(projectExt.appProjectName)
137160

138-
val processJniTask = project.tasks.register("processCustomJniLibsFor$capitalizedVariantName",ProcessAndCopyJniLibsTask::class.java) {
139-
// Verify if this is required
140-
// it.dependsOn(explodeTask)
141-
it.useStrippedSoFiles.set(projectExt.useStrippedSoFiles)
161+
val processJniTask =
162+
project.tasks.register("processCustomJniLibsFor$capitalizedVariantName", ProcessAndCopyJniLibsTask::class.java) {
163+
it.useStrippedSoFiles.set(projectExt.useStrippedSoFiles)
142164

143-
val jniDirs = aarLibraries.map { aarLib ->
144-
aarLib.getJniDir()
145-
}
165+
val jniDirs =
166+
aarLibraries.map { aarLib ->
167+
aarLib.getJniDir()
168+
}
146169

147-
it.aarJniDirs.setFrom(jniDirs)
170+
it.aarJniDirs.setFrom(jniDirs)
148171

149-
val fromDirProvider = appProject.layout.buildDirectory.dir(
150-
"intermediates/stripped_native_libs/$variantName/strip${capitalizedVariantName}DebugSymbols/out/lib"
151-
)
152-
it.strippedLibsDir.set(fromDirProvider)
172+
val fromDirProvider =
173+
appProject.layout.buildDirectory.dir(
174+
"intermediates/stripped_native_libs/$variantName/strip${capitalizedVariantName}DebugSymbols/out/lib",
175+
)
176+
it.strippedLibsDir.set(fromDirProvider)
153177

154-
val stripTaskPath = ":${appProject.name}:strip${capitalizedVariantName}DebugSymbols"
155-
val codegenTaskPath = ":${project.name}:generateCodegenSchemaFromJavaScript"
156-
it.dependsOn(stripTaskPath, codegenTaskPath)
157-
}
178+
val stripTaskPath = ":${appProject.name}:strip${capitalizedVariantName}DebugSymbols"
179+
val codegenTaskPath = ":${project.name}:generateCodegenSchemaFromJavaScript"
180+
it.dependsOn(stripTaskPath, codegenTaskPath)
181+
}
158182

159183
variant.sources.jniLibs?.addGeneratedSourceDirectory(
160184
taskProvider = processJniTask,
161-
wiredWith = { it.outputDirectory }
185+
wiredWith = { it.outputDirectory },
162186
)
163187
}
164188
}

gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/ProguardProcessor.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class ProguardProcessor(val project: Project) {
1111
proguardRules: List<File>,
1212
capitalizedVariantName: String,
1313
explodeTask: TaskProvider<ExplodeAarTask>,
14-
) {
14+
) {
1515
val mergeTaskName = "merge${capitalizedVariantName}ConsumerProguardFiles"
1616
project.tasks.matching { it.name == mergeTaskName }.configureEach { task ->
1717
task.dependsOn(explodeTask)

gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/processors/VariantTaskProvider.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@ package com.callstack.react.brownfield.processors
22

33
import com.android.build.api.variant.LibraryVariant
44
import com.callstack.react.brownfield.shared.ExplodeAarTask
5-
import com.callstack.react.brownfield.utils.AndroidArchiveLibrary
6-
import com.callstack.react.brownfield.utils.DirectoryManager
75
import com.callstack.react.brownfield.utils.Extension
86
import com.callstack.react.brownfield.utils.Utils
97
import com.callstack.react.brownfield.utils.capitalized
108
import org.gradle.api.Project
119
import org.gradle.api.Task
1210
import org.gradle.api.UnknownTaskException
1311
import org.gradle.api.tasks.TaskProvider
14-
import java.io.File
1512

1613
class VariantTaskProvider(val project: Project) {
1714
fun bundleTaskProvider(
@@ -42,7 +39,7 @@ class VariantTaskProvider(val project: Project) {
4239

4340
val projectExt = project.extensions.getByType(Extension::class.java)
4441
val appProject = project.rootProject.project(projectExt.appProjectName)
45-
42+
4643
val jsBundleTaskName = "${appProject.path}:createBundle${capitalizedBundledAssetsVariantName}JsAndAssets"
4744

4845
variant.lifecycleTasks.registerPreBuild(explodeAarTask, jsBundleTaskName)

gradle-plugins/react/brownfield/src/main/kotlin/com/callstack/react/brownfield/shared/BundleTaskProvider.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class BundleTaskProvider(private val variantTaskProvider: VariantTaskProvider) {
1414
variant: LibraryVariant,
1515
): TaskProvider<Task> {
1616
val androidComponent = project.extensions.findByType(LibraryExtension::class.java)
17-
// TODO: evaluate if default makes sense
17+
// Default to the variant name until a matching build type/flavor refines it.
1818
var taskName = variant.name
1919

2020
androidComponent?.buildTypes?.forEach {
@@ -29,7 +29,6 @@ class BundleTaskProvider(private val variantTaskProvider: VariantTaskProvider) {
2929
return@forEach
3030
}
3131
}
32-
3332
}
3433
return variantTaskProvider.bundleTaskProvider(project, taskName)
3534
}

packages/react-native-brownfield/src/expo-config-plugin/template/android/build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ android {
6969

7070
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
7171
consumerProguardFiles("consumer-rules.pro")
72-
73-
missingDimensionStrategy("abc", "dev")
7472
}
7573

7674
buildFeatures {

0 commit comments

Comments
 (0)