Skip to content

Commit 7eae2ff

Browse files
committed
Extend url2purl to support sourceforge.net for commit extraction
Signed-off-by: ziad hany <ziadhany2016@gmail.com>
1 parent 1e66dd0 commit 7eae2ff

2 files changed

Lines changed: 36 additions & 5 deletions

File tree

src/packageurl/contrib/url2purl.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ def build_kernel_purl(url):
676676
"""
677677

678678
kernel_project_pattern = (
679-
r"^https?://git\.kernel\.org/pub/scm/[^/]+/"
679+
r"^https?://git\.kernel\.org/"
680680
r"(?P<namespace>.+)/"
681681
r"(?P<name>[^/]+?)"
682682
r"(?:\.git)?"
@@ -724,6 +724,36 @@ def build_android_purl(url):
724724
)
725725

726726

727+
@purl_router.route("https?://sourceforge\\.net/p/.*")
728+
def build_sourceforge_purl(url):
729+
"""
730+
Return a PackageURL object from sourceforge `url`.
731+
For example:
732+
https://sourceforge.net/p/djvu/djvulibre-git/ci/e15d51510048927f172f1bf1f27ede65907d940d
733+
https://sourceforge.net/p/infrarecorder/code/ci/9361b6f267e7b1c1576c48f6dac6dec18d8a93e0/
734+
"""
735+
736+
sourceforge_pattern = (
737+
r"^https?://sourceforge\.net/"
738+
r"(?P<namespace>.+)/"
739+
r"(?P<name>[^/]+?)"
740+
r"/ci/"
741+
r"(?P<version>[0-9a-fA-F]{7,64})/?$"
742+
)
743+
744+
commit_matche = re.search(sourceforge_pattern, url)
745+
if commit_matche:
746+
namespace = "sourceforge.net/" + commit_matche.group("namespace")
747+
return PackageURL(
748+
type="generic",
749+
namespace=namespace,
750+
name=commit_matche.group("name"),
751+
version=commit_matche.group("version"),
752+
qualifiers={},
753+
subpath="",
754+
)
755+
756+
727757
@purl_router.route("https?://gitlab\\.com/(?!.*/archive/).*")
728758
def build_gitlab_purl(url):
729759
"""

tests/contrib/data/url2purl.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,10 @@
277277
"https://packagemanager.rstudio.com/cran/2022-06-23/src/contrib/curl_4.3.2.tar.gz": "pkg:cran/curl@4.3.2?download_url=https://packagemanager.rstudio.com/cran/2022-06-23/src/contrib/curl_4.3.2.tar.gz",
278278
"https://github.com/TG1999/first_repo/commit/98e516011d6e096e25247b82fc5f196bbeecff10": "pkg:github/tg1999/first_repo@98e516011d6e096e25247b82fc5f196bbeecff10",
279279
"https://gitlab.com/TG1999/first_repo/-/commit/bf04e5f289885cf2f20a92b387bcc6df33e30809": "pkg:gitlab/tg1999/first_repo@bf04e5f289885cf2f20a92b387bcc6df33e30809",
280-
"https://git.kernel.org/pub/scm/utils/b4/b4.git/commit/?id=477734000555ffc24bf873952e40367deee26f17": "pkg:generic/git.kernel.org/b4/b4@477734000555ffc24bf873952e40367deee26f17",
281-
"https://git.kernel.org/pub/scm/docs/kernel/ksmap.git/commit/?id=e8c7bac5321ba31d63496bd7fecea3db1848e355": "pkg:generic/git.kernel.org/kernel/ksmap@e8c7bac5321ba31d63496bd7fecea3db1848e355",
282-
"https://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git/commit/?id=7457fe9541b5162f285454947448d553a5d5a531": "pkg:generic/git.kernel.org/kvm/mst/qemu@7457fe9541b5162f285454947448d553a5d5a531",
280+
"https://git.kernel.org/pub/scm/utils/b4/b4.git/commit/?id=477734000555ffc24bf873952e40367deee26f17": "pkg:generic/git.kernel.org/pub/scm/utils/b4/b4@477734000555ffc24bf873952e40367deee26f17",
281+
"https://git.kernel.org/pub/scm/docs/kernel/ksmap.git/commit/?id=e8c7bac5321ba31d63496bd7fecea3db1848e355": "pkg:generic/git.kernel.org/pub/scm/docs/kernel/ksmap@e8c7bac5321ba31d63496bd7fecea3db1848e355",
282+
"https://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git/commit/?id=7457fe9541b5162f285454947448d553a5d5a531": "pkg:generic/git.kernel.org/pub/scm/virt/kvm/mst/qemu@7457fe9541b5162f285454947448d553a5d5a531",
283283
"https://android.googlesource.com/platform/frameworks/base/+/b4da73a935a8c906ff5df562155824d63ac849ab": "pkg:generic/android.googlesource.com/platform/frameworks/base@b4da73a935a8c906ff5df562155824d63ac849ab",
284-
"https://android.googlesource.com/device/generic/vulkan-cereal/+/240dedcb0fa917b3d2dcc4a9d4c332697c5e48a0": "pkg:generic/android.googlesource.com/device/generic/vulkan-cereal@240dedcb0fa917b3d2dcc4a9d4c332697c5e48a0"
284+
"https://android.googlesource.com/device/generic/vulkan-cereal/+/240dedcb0fa917b3d2dcc4a9d4c332697c5e48a0": "pkg:generic/android.googlesource.com/device/generic/vulkan-cereal@240dedcb0fa917b3d2dcc4a9d4c332697c5e48a0",
285+
"https://sourceforge.net/p/djvu/djvulibre-git/ci/e15d51510048927f172f1bf1f27ede65907d940d": "pkg:generic/sourceforge.net/p/djvu/djvulibre-git@e15d51510048927f172f1bf1f27ede65907d940d"
285286
}

0 commit comments

Comments
 (0)