@@ -9,8 +9,6 @@ import org.slf4j.LoggerFactory
9
9
import scala .io .Source
10
10
11
11
object Writer {
12
- private lazy val jarArtifactBackend = Source .fromInputStream(
13
- getClass.getResource(" /templates/jar_artifact_backend.bzl" ).openStream()).mkString
14
12
15
13
sealed abstract class TargetsError {
16
14
def message : String
@@ -88,36 +86,29 @@ object Writer {
88
86
.map { case coord@ MavenCoordinate (g, a, v) =>
89
87
val isRoot = model.dependencies.roots(coord)
90
88
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 {
100
90
case Some (sha) =>
101
91
val sha1Str = kvOpt(" sha1" , sha.binaryJar.sha1.map(_.toHex), " , " )
102
92
val sha256Str = kvOpt(" sha256" , sha.binaryJar.sha256.map(_.toHex), " , " )
103
93
// val url = sha.url
94
+ val serverIdStr = kvOpt(" server" , Some (sha.binaryJar.serverId), " , " )
104
95
val serverUrlStr = kvOpt(" repository" , servers.get(sha.binaryJar.serverId), " , " )
105
96
val urlStr = kvOpt(" url" , sha.binaryJar.url, " , " )
106
97
107
- (sha1Str, sha256Str, serverUrlStr, urlStr)
108
- case None => (" " , " " , " " , " " )
98
+ (sha1Str, sha256Str, serverUrlStr, serverIdStr, urlStr)
99
+ case None => (" " , " " , " " , " " , " " )
109
100
}
110
101
111
102
val sourceStr = shas.get(coord).flatMap(_.sourceJar) match {
112
103
case Some (sourceJar) =>
113
104
val sha1Str = kvOpt(" sha1" , sourceJar.sha1.map(_.toHex))
114
105
val sha256Str = kvOpt(" sha256" , sourceJar.sha256.map(_.toHex), " , " )
115
106
// val url = sha.url
107
+ val serverIdStr = kvOpt(" server" , Some (sourceJar.serverId), " , " )
116
108
val serverUrlStr = kvOpt(" repository" , servers.get(sourceJar.serverId), " , " )
117
109
val urlStr = kvOpt(" url" , sourceJar.url, " , " )
118
110
119
- (sha1Str, sha256Str, serverUrlStr, urlStr)
120
- s """ , "source": { $sha1Str$sha256Str$serverUrlStr$urlStr} """
111
+ s """ , "source": { $sha1Str$sha256Str$serverUrlStr$serverIdStr$urlStr} """
121
112
case None => " "
122
113
}
123
114
@@ -138,25 +129,53 @@ object Writer {
138
129
val l = lang(coord.unversioned)
139
130
val actual = Label .externalJar(l, coord.unversioned, prefix)
140
131
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""" ,
142
133
s """ ${kv(" name" , coord.unversioned.toBazelRepoName(prefix))}""" ,
143
134
s """ ${kv(" actual" , actual.fromRoot)}""" ,
144
135
s """ ${kv(" bind" , coord.unversioned.toBindingName(prefix))}}, """ ).mkString(" , " )
145
136
}
146
137
.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 " )
148
141
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
160
179
}
161
180
162
181
def language (g : Graph [MavenCoordinate , Unit ],
@@ -386,4 +405,12 @@ object Writer {
386
405
Traverse [List ].traverse[E , UnversionedCoordinate , Target ](allUnversioned.toList)(targetFor(_))
387
406
}
388
407
}
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
+ }
389
416
}
0 commit comments