Skip to content

Commit a10df85

Browse files
committed
Improve pkgs.org fallback for rpm filenames
1 parent 13c9916 commit a10df85

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

archpkg/cli.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import sys
66
import os
7+
import re
78
import webbrowser
89
import threading
910
import time
@@ -60,6 +61,21 @@ def normalize_query(query: str) -> List[str]:
6061
List of query variations to try
6162
"""
6263
variations = [query]
64+
65+
# For RPM/DEB filenames: strip extension and version/arch to get base name
66+
# Example: gimp-3.0.4-8.fc43.x86_64.rpm -> gimp
67+
stripped_ext = re.sub(r"\.(rpm|deb)$", "", query)
68+
if stripped_ext != query:
69+
variations.append(stripped_ext)
70+
logger.debug(f"Added no-extension variation: '{stripped_ext}'")
71+
72+
# If pattern looks like name-version-arch, strip version/arch segment
73+
match_name_only = re.match(r"^([A-Za-z0-9+_.-]+?)-\d", stripped_ext)
74+
if match_name_only:
75+
base_name = match_name_only.group(1)
76+
if base_name not in variations:
77+
variations.append(base_name)
78+
logger.debug(f"Added base-name variation: '{base_name}'")
6379

6480
# Add hyphenated version: "jellyfin media player" -> "jellyfin-media-player"
6581
if ' ' in query:
@@ -905,6 +921,9 @@ def search(
905921
query_variations = normalize_query(query_str)
906922
logger.info(f"Searching with {len(query_variations)} query variations: {query_variations}")
907923

924+
# Use the shortest variation for external sources (pkgs.org) to improve hit rate
925+
pkgs_org_query = min(query_variations, key=len)
926+
908927
results = []
909928
search_errors = []
910929
use_cache = not no_cache
@@ -917,7 +936,7 @@ def async_pkgs_org_search():
917936
nonlocal pkgs_org_results
918937
try:
919938
logger.debug("Background pkgs.org search started")
920-
pkgs_org_results = search_pkgs_org(query_str, detected, limit=10)
939+
pkgs_org_results = search_pkgs_org(pkgs_org_query, detected, limit=10)
921940
logger.debug(f"Background pkgs.org search completed: {len(pkgs_org_results)} results")
922941
except Exception as e:
923942
logger.debug(f"Background pkgs.org search failed: {e}")

0 commit comments

Comments
 (0)