From f7f41b89a941278e8f76c0aad3a9409c6583eda8 Mon Sep 17 00:00:00 2001 From: tdruez Date: Mon, 8 Jan 2024 13:27:07 -0700 Subject: [PATCH] Improve support for SourceForge URLs in `url2purl` #139 Signed-off-by: tdruez --- CHANGELOG.rst | 6 ++++++ setup.cfg | 2 +- src/packageurl/contrib/url2purl.py | 12 ++++++++++++ tests/contrib/data/url2purl.json | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 43181c1..a9dee79 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,12 @@ Changelog ========= +0.13.4 (2024-01-08) +------------------- + +- Improve support for SourceForge URLs in `url2purl`. + https://github.com/package-url/packageurl-python/issues/139 + 0.13.3 (2024-01-04) ------------------- diff --git a/setup.cfg b/setup.cfg index 69af2d4..49de794 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = packageurl-python -version = 0.13.3 +version = 0.13.4 license = MIT description = A purl aka. Package URL parser and builder long_description = file:README.rst diff --git a/src/packageurl/contrib/url2purl.py b/src/packageurl/contrib/url2purl.py index d41e17e..0693af6 100644 --- a/src/packageurl/contrib/url2purl.py +++ b/src/packageurl/contrib/url2purl.py @@ -361,6 +361,18 @@ def build_pypi_purl(uri): register_pattern("sourceforge", sourceforge_download_pattern) +# https://sourceforge.net/projects/spacesniffer/files/spacesniffer_1_3_0_2.zip/download +sourceforge_download_pattern_bis = ( + r"^https?://.*sourceforge.net/projects/" + r"(?P.+)/" + r"files/" + r"(?i:(?P=name))_*(?P[0-9_]+).*" + r"(/download)$" # ending with "/download" +) + +register_pattern("sourceforge", sourceforge_download_pattern_bis) + + @purl_router.route("https?://.*sourceforge.net/project/.*") def build_sourceforge_purl(uri): # We use a more general route pattern instead of using `sourceforge_pattern` diff --git a/tests/contrib/data/url2purl.json b/tests/contrib/data/url2purl.json index 999571b..3e0cf41 100644 --- a/tests/contrib/data/url2purl.json +++ b/tests/contrib/data/url2purl.json @@ -175,6 +175,7 @@ "https://sourceforge.net/projects/turbovnc/files/3.1/turbovnc-3.1.tar.gz/download": "pkg:sourceforge/turbovnc@3.1", "https://sourceforge.net/projects/ventoy/files/v1.0.96/Ventoy%201.0.96%20release%20source%20code.tar.gz/download": "pkg:sourceforge/ventoy@1.0.96", "https://sourceforge.net/projects/geoserver/files/GeoServer/2.23.4/geoserver-2.23.4-war.zip/download": "pkg:sourceforge/geoserver@2.23.4", + "https://sourceforge.net/projects/spacesniffer/files/spacesniffer_1_3_0_2.zip/download": "pkg:sourceforge/spacesniffer@1_3_0_2", "https://crates.io/api/v1/crates/rand/0.7.2/download": "pkg:cargo/rand@0.7.2", "https://crates.io/api/v1/crates/clap/2.33.0/download": "pkg:cargo/clap@2.33.0", "https://crates.io/api/v1/crates/structopt/0.3.11/download": "pkg:cargo/structopt@0.3.11",