@@ -25,13 +25,18 @@ def _new_from_json(json_str):
25
25
_new_product_from_dict (prod_dict )
26
26
for prod_dict in orig_dict ["products" ]
27
27
],
28
+ packages = [
29
+ _new_package_from_dict (pkg_dict )
30
+ for pkg_dict in orig_dict .get ("packages" , [])
31
+ ],
28
32
)
29
33
30
- def _new (modules = [], products = []):
34
+ def _new (modules = [], products = [], packages = [] ):
31
35
modules_by_name = {}
32
36
modules_by_label = {}
33
37
products_by_key = {}
34
38
products_by_name = {}
39
+ packages_by_id = {}
35
40
36
41
# buildifier: disable=uninitialized
37
42
def _add_module (m ):
@@ -52,16 +57,22 @@ def _new(modules = [], products = []):
52
57
prds .append (p )
53
58
products_by_name [p .name ] = prds
54
59
60
+ def _add_package (p ):
61
+ packages_by_id [p .identity ] = p
62
+
55
63
for module in modules :
56
64
_add_module (module )
57
65
for product in products :
58
66
_add_product (product )
67
+ for package in packages :
68
+ _add_package (package )
59
69
60
70
return struct (
61
71
modules_by_name = modules_by_name ,
62
72
modules_by_label = modules_by_label ,
63
73
products_by_key = products_by_key ,
64
74
products_by_name = products_by_name ,
75
+ packages_by_id = packages_by_id ,
65
76
)
66
77
67
78
def _new_module_from_dict (mod_dict ):
@@ -108,6 +119,48 @@ def _new_product(identity, name, type, target_labels):
108
119
target_labels = target_labels ,
109
120
)
110
121
122
+ def _new_package (identity , name , remote_pkg = None , local_pkg = None ):
123
+ return struct (
124
+ identity = identity ,
125
+ name = name ,
126
+ remote_pkg = remote_pkg ,
127
+ local_pkg = local_pkg ,
128
+ )
129
+
130
+ def _new_remote_package (remote , commit , version = None , branch = None ):
131
+ return struct (
132
+ remote = remote ,
133
+ commit = commit ,
134
+ version = version ,
135
+ branch = branch ,
136
+ )
137
+
138
+ def _new_local_package (path ):
139
+ return struct (
140
+ path = path ,
141
+ )
142
+
143
+ def _new_package_from_dict (pkg_dict ):
144
+ remote_pkg = None
145
+ remote_dict = pkg_dict .get ("remote" )
146
+ if remote_dict != None :
147
+ remote_pkg = _new_remote_package (
148
+ remote = remote_dict ["remote" ],
149
+ commit = remote_dict ["commit" ],
150
+ version = remote_dict .get ("version" ),
151
+ branch = remote_dict .get ("branch" ),
152
+ )
153
+ local_pkg = None
154
+ local_dict = pkg_dict .get ("local" )
155
+ if local_dict != None :
156
+ local_pkg = _new_local_package (path = local_dict ["path" ])
157
+ return _new_package (
158
+ identity = pkg_dict ["identity" ],
159
+ name = pkg_dict ["name" ],
160
+ remote_pkg = remote_pkg ,
161
+ local_pkg = local_pkg ,
162
+ )
163
+
111
164
def _modulemap_label_for_module (module ):
112
165
return bazel_labels .new (
113
166
name = pkginfo_targets .modulemap_label_name (module .label .name ),
0 commit comments