Skip to content

Commit 7096cb5

Browse files
committed
Use uritemplate to format datafile path
Signed-off-by: Keshav Priyadarshi <[email protected]>
1 parent 65dacb6 commit 7096cb5

File tree

2 files changed

+31
-30
lines changed

2 files changed

+31
-30
lines changed

aboutcode/federated/__init__.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -704,10 +704,10 @@ class DataCluster:
704704
# include directory and repository.
705705
#
706706
# For instance for a purls.yml file stored for each package:
707-
# {namespace}/{name}/purls.yml
707+
# {/namespace}/{name}/purls.yml
708708
#
709709
# For a scancode.json file stored for each package version:
710-
# {namespace}/{name}/{version}/scancode.json
710+
# {/namespace}/{name}/{version}/scancode.json
711711
datafile_path_template: str
712712

713713
# list of unique PurlTypeConfig for types stored in this data cluster.
@@ -858,8 +858,9 @@ def get_datafile_relative_path(self, purl: Union[str, PackageURL]) -> str:
858858
f"DataCluster '{self.data_kind}' needs PackageURL with version to generate path."
859859
)
860860

861-
return self.datafile_path_template.format(
862-
namespace=f"/{purl.namespace}" if purl.namespace else "",
861+
template = uritemplate.URITemplate(self.datafile_path_template)
862+
return template.expand(
863+
namespace=purl.namespace,
863864
name=purl.name,
864865
version=purl.version,
865866
)
@@ -1126,7 +1127,7 @@ def cluster_preset():
11261127
DataCluster(
11271128
data_kind="purls",
11281129
description="List of fully qualified PURL strings for a package, sorted by version.",
1129-
datafile_path_template="{namespace}/{name}/purls.yml",
1130+
datafile_path_template="{/namespace}/{name}/purls.yml",
11301131
purl_type_configs=PurlTypeConfig.small_size_configs(),
11311132
data_schema_url="",
11321133
documentation_url="https://github.com/package-url/purl-spec/",
@@ -1160,7 +1161,7 @@ def cluster_preset():
11601161
data_kind="purldb",
11611162
description="PurlDB normalized metadata datafiles for each package "
11621163
"versions. Does not include fingerprints and symbols.",
1163-
datafile_path_template="{namespace}/{name}/{version}/purldb.json",
1164+
datafile_path_template="{/namespace}/{name}/{version}/purldb.json",
11641165
purl_type_configs=PurlTypeConfig.large_size_configs(),
11651166
data_schema_url="",
11661167
documentation_url="",
@@ -1171,7 +1172,7 @@ def cluster_preset():
11711172
data_kind="vulnerabilities",
11721173
description="VulnerableCode vulnerabilities for each package. "
11731174
"Also includes a separate vulnerabilities directory/",
1174-
datafile_path_template="{namespace}/{name}/vulnerabilities.json",
1175+
datafile_path_template="{/namespace}/{name}/vulnerabilities.json",
11751176
purl_type_configs=[PurlTypeConfig.default_config()],
11761177
data_schema_url="",
11771178
documentation_url="",
@@ -1180,7 +1181,7 @@ def cluster_preset():
11801181
DataCluster(
11811182
data_kind="security_advisories",
11821183
description="VulnerableCode security advisories for each package version.",
1183-
datafile_path_template="{namespace}/{name}/{version}/advisories.json",
1184+
datafile_path_template="{/namespace}/{name}/{version}/advisories.json",
11841185
purl_type_configs=[PurlTypeConfig.default_config()],
11851186
data_schema_url="",
11861187
documentation_url="",
@@ -1189,7 +1190,7 @@ def cluster_preset():
11891190
DataCluster(
11901191
data_kind="scancode_toolkit_scans",
11911192
description="scancode toolkit scans for each package version.",
1192-
datafile_path_template="{namespace}/{name}/{version}/scancode-toolkit.json",
1193+
datafile_path_template="{/namespace}/{name}/{version}/scancode-toolkit.json",
11931194
purl_type_configs=PurlTypeConfig.large_size_configs(),
11941195
data_schema_url="",
11951196
documentation_url="",
@@ -1198,7 +1199,7 @@ def cluster_preset():
11981199
DataCluster(
11991200
data_kind="scancode_fingerprints",
12001201
description="scancode_fingerprints for each package version.",
1201-
datafile_path_template="{namespace}/{name}/{version}/scancode-fingerprints.json",
1202+
datafile_path_template="{/namespace}/{name}/{version}/scancode-fingerprints.json",
12021203
purl_type_configs=PurlTypeConfig.large_size_configs(),
12031204
data_schema_url="",
12041205
documentation_url="",
@@ -1207,7 +1208,7 @@ def cluster_preset():
12071208
DataCluster(
12081209
data_kind="cyclonedx14_sboms",
12091210
description="CycloneDX v1.4 sboms for each package version",
1210-
datafile_path_template="{namespace}/{name}/{version}/cyclonedx-14.json",
1211+
datafile_path_template="{/namespace}/{name}/{version}/cyclonedx-14.json",
12111212
purl_type_configs=PurlTypeConfig.large_size_configs(),
12121213
data_schema_url="",
12131214
documentation_url="",
@@ -1216,7 +1217,7 @@ def cluster_preset():
12161217
DataCluster(
12171218
data_kind="cyclonedx15_sboms",
12181219
description="CycloneDX v1.5 sboms for each package version",
1219-
datafile_path_template="{namespace}/{name}/{version}/cyclonedx-15.json",
1220+
datafile_path_template="{/namespace}/{name}/{version}/cyclonedx-15.json",
12201221
purl_type_configs=PurlTypeConfig.large_size_configs(),
12211222
data_schema_url="",
12221223
documentation_url="",
@@ -1225,7 +1226,7 @@ def cluster_preset():
12251226
DataCluster(
12261227
data_kind="cyclonedx16_sboms",
12271228
description="CycloneDX v1.6 sboms for each package version",
1228-
datafile_path_template="{namespace}/{name}/{version}/cyclonedx-16.json",
1229+
datafile_path_template="{/namespace}/{name}/{version}/cyclonedx-16.json",
12291230
purl_type_configs=PurlTypeConfig.large_size_configs(),
12301231
data_schema_url="",
12311232
documentation_url="",
@@ -1234,7 +1235,7 @@ def cluster_preset():
12341235
DataCluster(
12351236
data_kind="spdx2_sboms",
12361237
description="SPDX version 2.x sboms for each package version",
1237-
datafile_path_template="{namespace}/{name}/{version}/spdx-2.json",
1238+
datafile_path_template="{/namespace}/{name}/{version}/spdx-2.json",
12381239
purl_type_configs=PurlTypeConfig.large_size_configs(),
12391240
data_schema_url="",
12401241
documentation_url="",
@@ -1243,7 +1244,7 @@ def cluster_preset():
12431244
DataCluster(
12441245
data_kind="atom_slices",
12451246
description="Atom slices for each package version",
1246-
datafile_path_template="{namespace}/{name}/{version}/atom.json",
1247+
datafile_path_template="{/namespace}/{name}/{version}/atom.json",
12471248
purl_type_configs=PurlTypeConfig.large_size_configs(),
12481249
data_schema_url="",
12491250
documentation_url="",
@@ -1253,7 +1254,7 @@ def cluster_preset():
12531254
data_kind="atom_vulnerable_slices",
12541255
description="Atom vulnerable_slices for each vulnerable package version",
12551256
# FIXME: need to qualify these with an advisory / CVE?
1256-
datafile_path_template="{namespace}/{name}/{version}/atom-vulnerable.json",
1257+
datafile_path_template="{/namespace}/{name}/{version}/atom-vulnerable.json",
12571258
purl_type_configs=PurlTypeConfig.large_size_configs(),
12581259
data_schema_url="",
12591260
documentation_url="",
@@ -1263,7 +1264,7 @@ def cluster_preset():
12631264
data_kind="openssf_security_scorecards",
12641265
description="OpenSSf security_scorecards for package",
12651266
# FIXME: need to qualify these with an advisory / CVE?
1266-
datafile_path_template="{namespace}/{name}/security_scorecard.json",
1267+
datafile_path_template="{/namespace}/{name}/security_scorecard.json",
12671268
purl_type_configs=PurlTypeConfig.medium_size_configs(),
12681269
data_schema_url="",
12691270
documentation_url="",

aboutcode/federated/tests/test_data/all-presets/foo/aboutcode-federated-config.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ data_clusters:
162162
data_license: CC-BY-4.0
163163
data_maintainers: []
164164
- data_kind: atom_slices
165-
datafile_path_template: '{namespace}/{name}/{version}/atom.json'
165+
datafile_path_template: '{/namespace}/{name}/{version}/atom.json'
166166
purl_type_configs:
167167
- purl_type: github
168168
number_of_repos: 1024
@@ -239,7 +239,7 @@ data_clusters:
239239
data_license: CC-BY-4.0
240240
data_maintainers: []
241241
- data_kind: atom_vulnerable_slices
242-
datafile_path_template: '{namespace}/{name}/{version}/atom-vulnerable.json'
242+
datafile_path_template: '{/namespace}/{name}/{version}/atom-vulnerable.json'
243243
purl_type_configs:
244244
- purl_type: github
245245
number_of_repos: 1024
@@ -316,7 +316,7 @@ data_clusters:
316316
data_license: CC-BY-4.0
317317
data_maintainers: []
318318
- data_kind: cyclonedx14_sboms
319-
datafile_path_template: '{namespace}/{name}/{version}/cyclonedx-14.json'
319+
datafile_path_template: '{/namespace}/{name}/{version}/cyclonedx-14.json'
320320
purl_type_configs:
321321
- purl_type: github
322322
number_of_repos: 1024
@@ -393,7 +393,7 @@ data_clusters:
393393
data_license: CC-BY-4.0
394394
data_maintainers: []
395395
- data_kind: cyclonedx15_sboms
396-
datafile_path_template: '{namespace}/{name}/{version}/cyclonedx-15.json'
396+
datafile_path_template: '{/namespace}/{name}/{version}/cyclonedx-15.json'
397397
purl_type_configs:
398398
- purl_type: github
399399
number_of_repos: 1024
@@ -470,7 +470,7 @@ data_clusters:
470470
data_license: CC-BY-4.0
471471
data_maintainers: []
472472
- data_kind: cyclonedx16_sboms
473-
datafile_path_template: '{namespace}/{name}/{version}/cyclonedx-16.json'
473+
datafile_path_template: '{/namespace}/{name}/{version}/cyclonedx-16.json'
474474
purl_type_configs:
475475
- purl_type: github
476476
number_of_repos: 1024
@@ -547,7 +547,7 @@ data_clusters:
547547
data_license: CC-BY-4.0
548548
data_maintainers: []
549549
- data_kind: openssf_security_scorecards
550-
datafile_path_template: '{namespace}/{name}/security_scorecard.json'
550+
datafile_path_template: '{/namespace}/{name}/security_scorecard.json'
551551
purl_type_configs:
552552
- purl_type: github
553553
number_of_repos: 256
@@ -624,7 +624,7 @@ data_clusters:
624624
data_license: CC-BY-4.0
625625
data_maintainers: []
626626
- data_kind: purldb
627-
datafile_path_template: '{namespace}/{name}/{version}/purldb.json'
627+
datafile_path_template: '{/namespace}/{name}/{version}/purldb.json'
628628
purl_type_configs:
629629
- purl_type: github
630630
number_of_repos: 1024
@@ -702,7 +702,7 @@ data_clusters:
702702
data_license: CC-BY-4.0
703703
data_maintainers: []
704704
- data_kind: purls
705-
datafile_path_template: '{namespace}/{name}/purls.yml'
705+
datafile_path_template: '{/namespace}/{name}/purls.yml'
706706
purl_type_configs:
707707
- purl_type: github
708708
number_of_repos: 128
@@ -779,7 +779,7 @@ data_clusters:
779779
data_license: CC-BY-4.0
780780
data_maintainers: []
781781
- data_kind: scancode_fingerprints
782-
datafile_path_template: '{namespace}/{name}/{version}/scancode-fingerprints.json'
782+
datafile_path_template: '{/namespace}/{name}/{version}/scancode-fingerprints.json'
783783
purl_type_configs:
784784
- purl_type: github
785785
number_of_repos: 1024
@@ -856,7 +856,7 @@ data_clusters:
856856
data_license: CC-BY-4.0
857857
data_maintainers: []
858858
- data_kind: scancode_toolkit_scans
859-
datafile_path_template: '{namespace}/{name}/{version}/scancode-toolkit.json'
859+
datafile_path_template: '{/namespace}/{name}/{version}/scancode-toolkit.json'
860860
purl_type_configs:
861861
- purl_type: github
862862
number_of_repos: 1024
@@ -933,7 +933,7 @@ data_clusters:
933933
data_license: CC-BY-4.0
934934
data_maintainers: []
935935
- data_kind: security_advisories
936-
datafile_path_template: '{namespace}/{name}/{version}/advisories.json'
936+
datafile_path_template: '{/namespace}/{name}/{version}/advisories.json'
937937
purl_type_configs:
938938
- purl_type: default
939939
number_of_repos: 1
@@ -944,7 +944,7 @@ data_clusters:
944944
data_license: CC-BY-4.0
945945
data_maintainers: []
946946
- data_kind: spdx2_sboms
947-
datafile_path_template: '{namespace}/{name}/{version}/spdx-2.json'
947+
datafile_path_template: '{/namespace}/{name}/{version}/spdx-2.json'
948948
purl_type_configs:
949949
- purl_type: github
950950
number_of_repos: 1024
@@ -1021,7 +1021,7 @@ data_clusters:
10211021
data_license: CC-BY-4.0
10221022
data_maintainers: []
10231023
- data_kind: vulnerabilities
1024-
datafile_path_template: '{namespace}/{name}/vulnerabilities.json'
1024+
datafile_path_template: '{/namespace}/{name}/vulnerabilities.json'
10251025
purl_type_configs:
10261026
- purl_type: default
10271027
number_of_repos: 1

0 commit comments

Comments
 (0)