Changing the way external_updater validates a crates URL
Before, it matched the crates homepage URL against the pattern. We have
to match the archive URL against the pattern instead.
Test: TreeHugger
Change-Id: I0c5bdcc3c77d5e72c5e50a206384e9574a9e5cd5
diff --git a/crates_updater.py b/crates_updater.py
index 497c228..dd574e7 100644
--- a/crates_updater.py
+++ b/crates_updater.py
@@ -29,9 +29,7 @@
import metadata_pb2 # type: ignore
import updater_utils
-CRATES_IO_URL_PATTERN: str = (r"^https:\/\/crates.io\/crates\/([-\w]+)")
-
-CRATES_IO_URL_RE: re.Pattern = re.compile(CRATES_IO_URL_PATTERN)
+LIBRARY_NAME_PATTERN: str = (r"([-\w]+)")
ALPHA_BETA_PATTERN: str = (r"^.*[0-9]+\.[0-9]+\.[0-9]+-(alpha|beta).*")
@@ -41,6 +39,13 @@
VERSION_MATCHER: re.Pattern = re.compile(VERSION_PATTERN)
+CRATES_IO_ARCHIVE_URL_PATTERN: str = (r"^https:\/\/static.crates.io\/crates\/" +
+ LIBRARY_NAME_PATTERN + "/" +
+ LIBRARY_NAME_PATTERN + "-" +
+ VERSION_PATTERN + ".crate")
+
+CRATES_IO_ARCHIVE_URL_RE: re.Pattern = re.compile(CRATES_IO_ARCHIVE_URL_PATTERN)
+
DESCRIPTION_PATTERN: str = (r"^description *= *(\".+\")")
DESCRIPTION_MATCHER: re.Pattern = re.compile(DESCRIPTION_PATTERN)
@@ -55,9 +60,7 @@
temp_file: IO
def is_supported_url(self) -> bool:
- if self._old_url.type != metadata_pb2.URL.HOMEPAGE:
- return False
- match = CRATES_IO_URL_RE.match(self._old_url.value)
+ match = CRATES_IO_ARCHIVE_URL_RE.match(self._old_url.value)
if match is None:
return False
self.package = match.group(1)