Skip to content

Commit

Permalink
Refactor dependency resolution
Browse files Browse the repository at this point in the history
Signed-off-by: arunkumar9t2 <[email protected]>
  • Loading branch information
arunkumar9t2 committed Jul 20, 2023
1 parent bd1f318 commit f6d0dda
Show file tree
Hide file tree
Showing 41 changed files with 2,246 additions and 733 deletions.
15 changes: 15 additions & 0 deletions .idea/git_toolbox_prj.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

749 changes: 725 additions & 24 deletions WORKSPACE

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,11 @@ grazel {
jetifyIncludeList.add("com.android.support:cardview-v7")
jetifyExcludeList.add("androidx.appcompat:appcompat")
artifactPinning {
enabled.set(true)
enabled.set(false)
}
overrideTargetLabels.putAll(
["androidx.appcompat:appcompat": "@//third_party:androidx_appcompat_appcompat"]
)
// overrideTargetLabels.putAll(
// ["androidx.appcompat:appcompat": "@//third_party:androidx_appcompat_appcompat"]
// )
versionConflictPolicy = "pinned"
}
kotlin {
Expand Down
2 changes: 1 addition & 1 deletion constants.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
ext {
groupId = "com.grab.grazel"
versionName = project.hasProperty("versionName") ? versionName : "0.4.1-alpha.13"
versionName = project.hasProperty("versionName") ? versionName : "0.4.1-alpha.13-rd"

website = "https://grab.github.io/Grazel/"
}
2 changes: 1 addition & 1 deletion flavor-libs/sample-library-flavor1/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ grab_kt_jvm_test(
"//visibility:public",
],
deps = [
"@maven//:junit_junit",
"@test_maven//:junit_junit",
],
)
2 changes: 1 addition & 1 deletion flavor-libs/sample-library-flavor2/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ grab_kt_jvm_test(
"//visibility:public",
],
deps = [
"@maven//:junit_junit",
"@test_maven//:junit_junit",
],
)
13 changes: 12 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,14 @@ javapoet = "1.13.0"
junit = "4.13.2"
kotlin = "1.8.10"
kotlin-dsl = "2.3.3"
kotlin-serialization = "1.5.1"
kotlinx-coroutines-android = "1.3.9"
kotlinx-coroutines-core-jvm = "1.7.2"
leakcanary-android = "2.12"
lifecycle-viewmodel = "2.6.1"
mockito-kotlin = "1.6.0"
nexus = "1.1.0"
paging-runtime = "3.1.1"
picnic = "0.4.0"
truth = "1.1.3"

Expand All @@ -38,6 +43,7 @@ androidx-constraintlayout-core = { module = "androidx.constraintlayout:constrain
androidx-core = { module = "androidx.core:core", version.ref = "androidx-core" }
androidx-emoji2 = { module = "androidx.emoji2:emoji2", version.ref = "emoji2" }
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "lifecycle-viewmodel" }
androidx-paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "paging-runtime" }
androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-espresso" }
androidx-test-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-junit" }
androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime", version.ref = "androidx-lifecycle-runtime" }
Expand Down Expand Up @@ -70,10 +76,15 @@ javapoet = { module = "com.squareup:javapoet", version.ref = "javapoet" }
junit = { module = "junit:junit", version.ref = "junit" }
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
kotlin-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlin-serialization" }
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines-android" }
kotlinx-coroutines-core-jvm = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", version.ref = "kotlinx-coroutines-core-jvm" }
leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary-android" }
mockito-kotlin = { module = "com.nhaarman:mockito-kotlin", version.ref = "mockito-kotlin" }
nexus-gradle-publish-plugin = { module = "io.github.gradle-nexus:publish-plugin", version.ref = "nexus" }
picnic = { module = "com.jakewharton.picnic:picnic", version.ref = "picnic" }

[plugins]
kotlin-dsl = { id = "org.gradle.kotlin.kotlin-dsl", version.ref = "kotlin-dsl" }
gradle-publish = { id = "com.gradle.plugin-publish", version.ref = "gradle-plugin-publish" }
gradle-publish = { id = "com.gradle.plugin-publish", version.ref = "gradle-plugin-publish" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
4 changes: 4 additions & 0 deletions grazel-gradle-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ plugins {
id "java-gradle-plugin"
alias(libs.plugins.kotlin.dsl)
alias(libs.plugins.gradle.publish)
alias(libs.plugins.kotlin.serialization)
id "maven-publish"
id "idea"
}
Expand Down Expand Up @@ -88,6 +89,9 @@ dependencies {
implementation libs.google.dagger
kapt libs.google.dagger.compiler

implementation libs.kotlin.serialization
implementation libs.kotlinx.coroutines.core.jvm

testImplementation "org.jetbrains.kotlin:kotlin-test"
testImplementation "org.jetbrains.kotlin:kotlin-test-junit"
testImplementation libs.google.truth
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import com.grab.grazel.bazel.starlark.AssigneeBuilder
import com.grab.grazel.bazel.starlark.StarlarkType
import com.grab.grazel.bazel.starlark.StatementsBuilder
import com.grab.grazel.bazel.starlark.StringStatement
import com.grab.grazel.bazel.starlark.add
import com.grab.grazel.bazel.starlark.array
import com.grab.grazel.bazel.starlark.asString
import com.grab.grazel.bazel.starlark.assigneeBuilder
Expand All @@ -29,7 +28,6 @@ import com.grab.grazel.bazel.starlark.obj
import com.grab.grazel.bazel.starlark.quote

sealed class MavenRepository : AssigneeBuilder {

data class DefaultMavenRepository(
val url: String,
val username: String? = null,
Expand All @@ -54,7 +52,7 @@ sealed class MavenRepository : AssigneeBuilder {
* @param appendExternal Indicates whether to append or prepend the External variables
*/
private fun combineExternalVariablesAndArray(
externalVariables: List<String>,
externalVariables: Set<String>,
arrayValues: List<String>,
appendExternal: Boolean = false,
) = assigneeBuilder {
Expand All @@ -73,17 +71,18 @@ fun StatementsBuilder.mavenInstall(
name: String? = null,
rulesJvmExternalName: String,
artifacts: Set<MavenInstallArtifact> = emptySet(),
mavenRepositories: List<MavenRepository> = emptyList(),
externalArtifacts: List<String> = emptyList(),
externalRepositories: List<String> = emptyList(),
mavenRepositories: Set<MavenRepository> = emptySet(),
externalArtifacts: Set<String> = emptySet(),
externalRepositories: Set<String> = emptySet(),
jetify: Boolean = false,
mavenInstallJson: String? = null,
jetifyIncludeList: List<String> = emptyList(),
failOnMissingChecksum: Boolean = true,
resolveTimeout: Int = 600,
excludeArtifacts: List<String> = emptyList(),
excludeArtifacts: Set<String> = emptySet(),
overrideTargets: Map<String, String> = emptyMap(),
versionConflictPolicy: String? = null,
artifactPinning: Boolean,
) {
load("@$rulesJvmExternalName//:defs.bzl", "maven_install")
load("@$rulesJvmExternalName//:specs.bzl", "maven")
Expand All @@ -98,7 +97,7 @@ fun StatementsBuilder.mavenInstall(

"repositories" `=` combineExternalVariablesAndArray(
externalRepositories,
mavenRepositories.map { it.build().asString() },
mavenRepositories.map { it.build().asString() }.sorted(),
true,
)

Expand Down Expand Up @@ -134,6 +133,13 @@ fun StatementsBuilder.mavenInstall(
"version_conflict_policy" `=` it.quote
}
}

if (artifactPinning) {
load("@$name//:defs.bzl") {
"${name}_pinned_maven_install" `=` "pinned_maven_install".quote
}
add("${name}_pinned_maven_install()")
}
}

/**
Expand Down Expand Up @@ -196,46 +202,4 @@ sealed class MavenInstallArtifact : StarlarkType {
}
}
}
}

fun StatementsBuilder.jvmRules(
rulesJvmExternalRule: BazelRepositoryRule,
resolveTimeout: Int = 600,
artifacts: Set<MavenInstallArtifact> = emptySet(),
artifactPinning: Boolean,
mavenInstallJson: String? = null,
mavenRepositories: List<MavenRepository> = emptyList(),
externalArtifacts: List<String> = emptyList(),
externalRepositories: List<String> = emptyList(),
excludeArtifacts: List<String> = emptyList(),
overrideTargets: Map<String, String> = emptyMap(),
jetify: Boolean = false,
jetifyIncludeList: List<String> = emptyList(),
failOnMissingChecksum: Boolean = true,
versionConflictPolicy: String? = null,
) {
add(rulesJvmExternalRule)

newLine()

mavenInstall(
rulesJvmExternalName = rulesJvmExternalRule.name,
artifacts = artifacts,
mavenRepositories = mavenRepositories,
externalArtifacts = externalArtifacts,
externalRepositories = externalRepositories,
overrideTargets = overrideTargets,
mavenInstallJson = mavenInstallJson,
jetify = jetify,
jetifyIncludeList = jetifyIncludeList,
failOnMissingChecksum = failOnMissingChecksum,
resolveTimeout = resolveTimeout,
excludeArtifacts = excludeArtifacts,
versionConflictPolicy = versionConflictPolicy,
)

if (artifactPinning) {
load("@maven//:defs.bzl", "pinned_maven_install")
add("pinned_maven_install()")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package com.grab.grazel.bazel.starlark

import org.gradle.api.Project
import org.gradle.api.artifacts.Dependency

sealed class BazelDependency {
data class ProjectDependency(
Expand Down Expand Up @@ -49,16 +48,20 @@ sealed class BazelDependency {
override fun toString() = dep
}

data class MavenDependency(val dependency: Dependency) : BazelDependency() {
data class MavenDependency(
val repo: String = "maven",
val group: String,
val name: String
) : BazelDependency() {

private fun String.toBazelPath(): String {
return replace(".", "_").replace("-", "_")
}

override fun toString(): String {
val group = dependency.group?.toBazelPath() ?: ""
val name = dependency.name.toBazelPath()
return "@maven//:${group}_$name"
val group = group.toBazelPath()
val name = name.toBazelPath()
return "@$repo//:${group}_$name"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import java.io.PrintWriter

data class FunctionStatement(
val name: String,
private val params: List<AssignStatement>,
private val params: List<Assignee>,
private val multilineParams: Boolean = false
) : Assignee {
override fun write(level: Int, writer: PrintWriter) {
Expand Down Expand Up @@ -75,6 +75,25 @@ fun StatementsBuilder.load(bzlFile: String, vararg symbols: String) {
loadStrategy.load(this, bzlFile, *symbols)
}

/**
* Load statement with option to alias imported symbol via `assignmentBuilder`
*
* Eg:
* ```
* load("@maven//:defs.bzl", default_pinned_maven_install = "pinned_maven_install")
* ```
*/
fun StatementsBuilder.load(path: String, assignmentBuilder: AssignmentBuilder.() -> Unit = {}) {
val symbolImports = Assignments(assignmentBuilder = assignmentBuilder)
add(
FunctionStatement(
name = "load",
params = listOf(path.quote.toStatement()) + symbolImports
)
)
}


@Suppress("unused")
fun StatementsBuilder.glob(include: ArrayStatement): FunctionStatement {
val multilineParams = include.elements.size > 2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import com.grab.grazel.gradle.dependencies.DependenciesDataSource
import com.grab.grazel.gradle.dependencies.DependenciesGraphsBuilder
import com.grab.grazel.gradle.dependencies.DependenciesModule
import com.grab.grazel.gradle.dependencies.DependencyGraphs
import com.grab.grazel.gradle.dependencies.MavenInstallArtifactsCalculator
import com.grab.grazel.gradle.variant.AndroidVariantDataSource
import com.grab.grazel.gradle.variant.VariantBuilder
import com.grab.grazel.gradle.variant.VariantMatcher
Expand All @@ -43,6 +42,7 @@ import com.grab.grazel.migrate.android.AndroidLibraryDataExtractor
import com.grab.grazel.migrate.android.ManifestValuesBuilder
import com.grab.grazel.migrate.dependencies.ArtifactsPinner
import com.grab.grazel.migrate.dependencies.DefaultArtifactsPinner
import com.grab.grazel.migrate.dependencies.MavenInstallArtifactsCalculator
import com.grab.grazel.migrate.internal.ProjectBazelFileBuilder
import com.grab.grazel.migrate.internal.RootBazelFileBuilder
import com.grab.grazel.migrate.internal.WorkspaceBuilder
Expand Down
Loading

0 comments on commit f6d0dda

Please sign in to comment.