Skip to content

Commit 8295d2a

Browse files
author
Daniel Garzon
committed
FEAT: use maven_server and maven_jar to fetch artifacts.
1 parent e3f77e2 commit 8295d2a

File tree

6 files changed

+144
-219
lines changed

6 files changed

+144
-219
lines changed

3rdparty/workspace.bzl

+84-123
Large diffs are not rendered by default.

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ for any exceptions that you manage along with [Replacements](#replacements).
2020

2121
Then you should add
2222
```
23-
load("//3rdparty:workspace.bzl", "maven_dependencies")
23+
load("//3rdparty:workspace.bzl", "maven_servers", "maven_dependencies")
2424
25+
maven_servers()
2526
maven_dependencies()
2627
```
2728
to your workspace to load the maven dependencies.

WORKSPACE

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories")
1313
scala_repositories()
1414
register_toolchains("//:scala_toolchain")
1515

16-
load("//3rdparty:workspace.bzl", "maven_dependencies")
16+
load("//3rdparty:workspace.bzl", "maven_servers", "maven_dependencies")
1717

18+
maven_servers()
1819
maven_dependencies()
1920

2021
bind(name = 'io_bazel_rules_scala/dependency/scalatest/scalatest', actual = '//3rdparty/jvm/org/scalatest')

src/scala/com/github/johnynek/bazel_deps/BUILD

+1-1
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ scala_binary(name = "parseproject",
156156
":commands",
157157
"//3rdparty/jvm/org/slf4j:slf4j_simple",
158158
],
159-
resources = ["templates/jar_artifact_backend.bzl"],
159+
resources = [],
160160
resource_strip_prefix = package_name(),
161161
main_class = "com.github.johnynek.bazel_deps.ParseProject",
162162
visibility = ["//visibility:public"])

src/scala/com/github/johnynek/bazel_deps/Writer.scala

+55-28
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import org.slf4j.LoggerFactory
99
import scala.io.Source
1010

1111
object Writer {
12-
private lazy val jarArtifactBackend = Source.fromInputStream(
13-
getClass.getResource("/templates/jar_artifact_backend.bzl").openStream()).mkString
1412

1513
sealed abstract class TargetsError {
1614
def message: String
@@ -88,36 +86,29 @@ object Writer {
8886
.map { case coord@MavenCoordinate(g, a, v) =>
8987
val isRoot = model.dependencies.roots(coord)
9088

91-
def kv(key: String, value: String, prefix: String = ""): String =
92-
s"""$prefix"$key": "$value""""
93-
94-
def kvOpt(key: String, valueOpt: Option[String], prefix: String = ""): String = valueOpt match {
95-
case Some(value) => kv(key, value, prefix)
96-
case None => ""
97-
}
98-
99-
val (sha1Str, sha256Str, serverStr, remoteUrl) = shas.get(coord) match {
89+
val (sha1Str, sha256Str, serverStr, serverIdStr, remoteUrl) = shas.get(coord) match {
10090
case Some(sha) =>
10191
val sha1Str = kvOpt("sha1", sha.binaryJar.sha1.map(_.toHex), ", ")
10292
val sha256Str = kvOpt("sha256", sha.binaryJar.sha256.map(_.toHex), ", ")
10393
// val url = sha.url
94+
val serverIdStr = kvOpt("server", Some(sha.binaryJar.serverId), ", ")
10495
val serverUrlStr = kvOpt("repository", servers.get(sha.binaryJar.serverId), ", ")
10596
val urlStr = kvOpt("url", sha.binaryJar.url, ", ")
10697

107-
(sha1Str, sha256Str, serverUrlStr, urlStr)
108-
case None => ("", "", "", "")
98+
(sha1Str, sha256Str, serverUrlStr, serverIdStr, urlStr)
99+
case None => ("", "", "", "", "")
109100
}
110101

111102
val sourceStr = shas.get(coord).flatMap(_.sourceJar) match {
112103
case Some(sourceJar) =>
113104
val sha1Str = kvOpt("sha1", sourceJar.sha1.map(_.toHex))
114105
val sha256Str = kvOpt("sha256", sourceJar.sha256.map(_.toHex), ", ")
115106
// val url = sha.url
107+
val serverIdStr = kvOpt("server", Some(sourceJar.serverId), ", ")
116108
val serverUrlStr = kvOpt("repository", servers.get(sourceJar.serverId), ", ")
117109
val urlStr = kvOpt("url", sourceJar.url, ", ")
118110

119-
(sha1Str, sha256Str, serverUrlStr, urlStr)
120-
s""", "source": {$sha1Str$sha256Str$serverUrlStr$urlStr} """
111+
s""", "source": {$sha1Str$sha256Str$serverUrlStr$serverIdStr$urlStr} """
121112
case None => ""
122113
}
123114

@@ -138,25 +129,53 @@ object Writer {
138129
val l = lang(coord.unversioned)
139130
val actual = Label.externalJar(l, coord.unversioned, prefix)
140131
List(s"""$comment {${kv("artifact", coord.asString)}""",
141-
s"""${kv("lang", l.asString)}$sha1Str$sha256Str$serverStr$remoteUrl$sourceStr""",
132+
s"""${kv("lang", l.asString)}$sha1Str$sha256Str$serverStr$serverIdStr$remoteUrl$sourceStr""",
142133
s"""${kv("name", coord.unversioned.toBazelRepoName(prefix))}""",
143134
s"""${kv("actual", actual.fromRoot)}""",
144135
s"""${kv("bind", coord.unversioned.toBindingName(prefix))}},""").mkString(", ")
145136
}
146137
.mkString("\n")
147-
138+
val repositories = servers.toList.sortBy(_._1).map(e => {
139+
s""" {${kv("name", e._1)}${kv("url", e._2, ", ")}},""".stripMargin
140+
}).mkString("\n")
148141
s"""# Do not edit. bazel-deps autogenerates this file from $depsFile.
149-
|$jarArtifactBackend
150-
|
151-
|def list_dependencies():
152-
| return [
153-
|$lines
154-
| ]
155-
|
156-
|def maven_dependencies(callback = jar_artifact_callback):
157-
| for hash in list_dependencies():
158-
| callback(hash)
159-
|""".stripMargin
142+
|
143+
|def _maven_server(hash):
144+
| native.maven_server(
145+
| name = hash["name"],
146+
| url = hash["url"]
147+
| )
148+
|
149+
|def _maven_jar(hash):
150+
| native.maven_jar(
151+
| name = hash["name"],
152+
| artifact = hash["artifact"],
153+
| sha1 = hash["sha1"],
154+
| server = hash["server"]
155+
| )
156+
| native.bind(
157+
| name = hash["bind"],
158+
| actual = hash["actual"]
159+
| )
160+
|
161+
|def list_servers():
162+
| return [
163+
|$repositories
164+
| ]
165+
|
166+
|def list_dependencies():
167+
| return [
168+
|$lines
169+
| ]
170+
|
171+
|def maven_servers(callback = _maven_server):
172+
| for hash in list_servers():
173+
| callback(hash)
174+
|
175+
|def maven_dependencies(callback = _maven_jar):
176+
| for hash in list_dependencies():
177+
| callback(hash)
178+
|""".stripMargin
160179
}
161180

162181
def language(g: Graph[MavenCoordinate, Unit],
@@ -386,4 +405,12 @@ object Writer {
386405
Traverse[List].traverse[E, UnversionedCoordinate, Target](allUnversioned.toList)(targetFor(_))
387406
}
388407
}
408+
409+
private def kv(key: String, value: String, prefix: String = ""): String =
410+
s"""$prefix"$key": "$value""""
411+
412+
private def kvOpt(key: String, valueOpt: Option[String], prefix: String = ""): String = valueOpt match {
413+
case Some(value) => kv(key, value, prefix)
414+
case None => ""
415+
}
389416
}

src/scala/com/github/johnynek/bazel_deps/templates/jar_artifact_backend.bzl

-65
This file was deleted.

0 commit comments

Comments
 (0)