Revert "Implement METADATA protobuf changes for go/tp-metadata-id"
This reverts commit 25c9ff0a6cddc0f6417d8437d16d68e47bd7d70e.
Reason for revert: http://b/303688820
Change-Id: Id56882bb0d0b1e422b8140f5eb9bbae526545f35
diff --git a/base_updater.py b/base_updater.py
index 27b4928..747a2a3 100644
--- a/base_updater.py
+++ b/base_updater.py
@@ -23,14 +23,15 @@
class Updater:
"""Base Updater that defines methods common for all updaters."""
- def __init__(self, proj_path: Path, old_identifier: metadata_pb2.Identifier,
+ def __init__(self, proj_path: Path, old_url: metadata_pb2.URL,
old_ver: str) -> None:
self._proj_path = fileutils.get_absolute_project_path(proj_path)
- self._old_identifier = old_identifier
- self._old_identifier.version = old_identifier.version if old_identifier.version else old_ver
+ self._old_url = old_url
+ self._old_ver = old_ver
- self._new_identifier = metadata_pb2.Identifier()
- self._new_identifier.CopyFrom(old_identifier)
+ self._new_url = metadata_pb2.URL()
+ self._new_url.CopyFrom(old_url)
+ self._new_ver = old_ver
self._has_errors = False
@@ -41,7 +42,7 @@
def validate(self) -> str:
"""Checks whether aosp version is what it claims to be."""
self.setup_remote()
- return git_utils.diff(self._proj_path, self._old_identifier.version)
+ return git_utils.diff(self._proj_path, self._old_ver)
def check(self) -> None:
"""Checks whether a new version is available."""
@@ -64,10 +65,10 @@
def update_metadata(self, metadata: metadata_pb2.MetaData) -> metadata_pb2:
updated_metadata = metadata_pb2.MetaData()
updated_metadata.CopyFrom(metadata)
- updated_metadata.third_party.ClearField("version")
- for identifier in updated_metadata.third_party.identifier:
- if identifier == self.current_identifier:
- identifier.CopyFrom(self.latest_identifier)
+ updated_metadata.third_party.version = self.latest_version
+ for metadata_url in updated_metadata.third_party.url:
+ if metadata_url == self.current_url:
+ metadata_url.CopyFrom(self.latest_url)
return updated_metadata
@property
@@ -78,22 +79,22 @@
@property
def current_version(self) -> str:
"""Gets the current version."""
- return self._old_identifier.version
+ return self._old_ver
@property
- def current_identifier(self) -> metadata_pb2.Identifier:
- """Gets the current identifier."""
- return self._old_identifier
+ def current_url(self) -> metadata_pb2.URL:
+ """Gets the current url."""
+ return self._old_url
@property
def latest_version(self) -> str:
"""Gets latest version."""
- return self._new_identifier.version
+ return self._new_ver
@property
- def latest_identifier(self) -> metadata_pb2.Identifier:
- """Gets identifier for latest version."""
- return self._new_identifier
+ def latest_url(self) -> metadata_pb2.URL:
+ """Gets URL for latest version."""
+ return self._new_url
@property
def has_errors(self) -> bool:
@@ -102,5 +103,5 @@
def use_current_as_latest(self):
"""Uses current version/url as the latest to refresh project."""
- self._new_identifier.version = self._old_identifier.version
- self._new_identifier = self._old_identifier
+ self._new_ver = self._old_ver
+ self._new_url = self._old_url
diff --git a/crates_updater.py b/crates_updater.py
index b92e9e7..81e0489 100644
--- a/crates_updater.py
+++ b/crates_updater.py
@@ -63,7 +63,7 @@
temp_file: IO
def is_supported_url(self) -> bool:
- match = CRATES_IO_ARCHIVE_URL_RE.match(self._old_identifier.value)
+ match = CRATES_IO_ARCHIVE_URL_RE.match(self._old_url.value)
if match is None:
return False
self.package = match.group(1)
@@ -112,14 +112,14 @@
with urllib.request.urlopen(url) as request:
data = json.loads(request.read().decode())
last_id = 0
- self._new_identifier.version = ""
+ self._new_ver = ""
for v in data["versions"]:
version = v["num"]
if (not v["yanked"] and not ALPHA_BETA_RE.match(version) and
self._is_newer_version(
- self._new_identifier.version, last_id, version, int(v["id"]))):
+ self._new_ver, last_id, version, int(v["id"]))):
last_id = int(v["id"])
- self._new_identifier.version = version
+ self._new_ver = version
self.download_url = "https://crates.io" + v["dl_path"]
def check(self) -> None:
@@ -127,13 +127,13 @@
url = "https://crates.io/api/v1/crates/" + self.package
with urllib.request.urlopen(url) as request:
data = json.loads(request.read().decode())
- self._new_identifier.version = data["crate"]["max_version"]
+ self._new_ver = data["crate"]["max_version"]
# Skip d.d.d-{alpha,beta}* versions
- if ALPHA_BETA_RE.match(self._new_identifier.version):
- print(f"Ignore alpha or beta release:{self.package}-{self._new_identifier.version}.")
+ if ALPHA_BETA_RE.match(self._new_ver):
+ print(f"Ignore alpha or beta release: {self.package}-{self._new_ver}.")
self._find_latest_non_test_version()
else:
- url = url + "/" + self._new_identifier.version
+ url = url + "/" + self._new_ver
with urllib.request.urlopen(url) as request:
data = json.loads(request.read().decode())
self.download_url = "https://crates.io" + data["version"]["dl_path"]
@@ -142,7 +142,7 @@
Updater.use_current_as_latest(self)
# A shortcut to use the static download path.
self.download_url = f"https://static.crates.io/crates/{self.package}/" \
- f"{self.package}-{self._new_identifier.version}.crate"
+ f"{self.package}-{self._new_ver}.crate"
def update(self, skip_post_update: bool) -> None:
"""Updates the package.
@@ -175,11 +175,18 @@
"""Updates METADATA content."""
# copy only HOMEPAGE url, and then add new ARCHIVE url.
updated_metadata = super().update_metadata(metadata)
- for identifier in updated_metadata.third_party.identifier:
- if identifier.version:
- identifier.value = f"https://static.crates.io/crates/{updated_metadata.name}/" \
- f"{updated_metadata.name}-{self.latest_identifier.version}.crate"
+ new_url_list = []
+ for url in updated_metadata.third_party.url:
+ if url.type == metadata_pb2.URL.HOMEPAGE:
+ new_url_list.append(url)
break
+ new_url = metadata_pb2.URL()
+ new_url.type = metadata_pb2.URL.ARCHIVE
+ new_url.value = f"https://static.crates.io/crates/{updated_metadata.name}/" \
+ f"{updated_metadata.name}-{updated_metadata.third_party.version}.crate"
+ new_url_list.append(new_url)
+ del updated_metadata.third_party.url[:]
+ updated_metadata.third_party.url.extend(new_url_list)
# copy description from Cargo.toml to METADATA
cargo_toml = os.path.join(self.project_path, "Cargo.toml")
description = self._get_cargo_description(cargo_toml)
diff --git a/external_updater.py b/external_updater.py
index 227e5e2..97c34cc 100644
--- a/external_updater.py
+++ b/external_updater.py
@@ -85,7 +85,6 @@
proj_path = fileutils.get_absolute_project_path(proj_path)
metadata = fileutils.read_metadata(proj_path)
- metadata = fileutils.convert_url_to_identifier(metadata)
updater = updater_utils.create_updater(metadata, proj_path, UPDATERS)
return (updater, metadata)
diff --git a/fileutils.py b/fileutils.py
index 0da20d5..4f641f0 100644
--- a/fileutils.py
+++ b/fileutils.py
@@ -117,21 +117,6 @@
return text_format.Parse(metadata, metadata_pb2.MetaData())
-def convert_url_to_identifier(metadata: metadata_pb2.MetaData) -> metadata_pb2.MetaData:
- """Converts the old style METADATA to the new style"""
- for url in metadata.third_party.url:
- identifier = metadata_pb2.Identifier()
- identifier.type = metadata_pb2.URL.Type.Name(url.type)
- identifier.value = url.value
- if url.type != metadata_pb2.URL.HOMEPAGE:
- identifier.version = metadata.third_party.version
- metadata.third_party.ClearField("version")
-
- metadata.third_party.identifier.append(identifier)
- metadata.third_party.ClearField("url")
- return metadata
-
-
def write_metadata(proj_path: Path, metadata: metadata_pb2.MetaData, keep_date: bool) -> None:
"""Writes updated METADATA file for a project.
diff --git a/git_updater.py b/git_updater.py
index 63ff33d..e25196f 100644
--- a/git_updater.py
+++ b/git_updater.py
@@ -24,7 +24,7 @@
UPSTREAM_REMOTE_NAME: str = "update_origin"
def is_supported_url(self) -> bool:
- return git_utils.is_valid_url(self._proj_path, self._old_identifier.value)
+ return git_utils.is_valid_url(self._proj_path, self._old_url.value)
@staticmethod
def _is_likely_android_remote(url: str) -> bool:
@@ -73,13 +73,13 @@
f"Could not determine android remote for {self._proj_path}. Tried:\n"
f"{remotes_formatted}")
- if current_remote_url is not None and current_remote_url != self._old_identifier.value:
+ if current_remote_url is not None and current_remote_url != self._old_url.value:
git_utils.remove_remote(self._proj_path, self.UPSTREAM_REMOTE_NAME)
current_remote_url = None
if current_remote_url is None:
git_utils.add_remote(self._proj_path, self.UPSTREAM_REMOTE_NAME,
- self._old_identifier.value)
+ self._old_url.value)
branch = git_utils.detect_default_branch(self._proj_path,
self.UPSTREAM_REMOTE_NAME)
@@ -90,7 +90,7 @@
def check(self) -> None:
"""Checks upstream and returns whether a new version is available."""
self.setup_remote()
- if git_utils.is_commit(self._old_identifier.version):
+ if git_utils.is_commit(self._old_ver):
# Update to remote head.
self._check_head()
else:
@@ -100,20 +100,20 @@
def _check_tag(self) -> None:
branch = git_utils.detect_default_branch(self._proj_path,
self.UPSTREAM_REMOTE_NAME)
- self._new_identifier.version = git_utils.get_most_recent_tag(
+ self._new_ver = git_utils.get_most_recent_tag(
self._proj_path, self.UPSTREAM_REMOTE_NAME + '/' + branch)
def _check_head(self) -> None:
branch = git_utils.detect_default_branch(self._proj_path,
self.UPSTREAM_REMOTE_NAME)
- self._new_identifier.version = git_utils.get_sha_for_branch(
+ self._new_ver = git_utils.get_sha_for_branch(
self._proj_path, self.UPSTREAM_REMOTE_NAME + '/' + branch)
def update(self, skip_post_update: bool) -> None:
"""Updates the package.
Has to call check() before this function.
"""
- print(f"Running `git merge {self._new_identifier.version}`...")
- git_utils.merge(self._proj_path, self._new_identifier.version)
+ print(f"Running `git merge {self._new_ver}`...")
+ git_utils.merge(self._proj_path, self._new_ver)
if not skip_post_update:
updater_utils.run_post_update(self._proj_path, self._proj_path)
diff --git a/github_archive_updater.py b/github_archive_updater.py
index 9c33be1..e67d77b 100644
--- a/github_archive_updater.py
+++ b/github_archive_updater.py
@@ -77,9 +77,9 @@
repo: str
def is_supported_url(self) -> bool:
- if self._old_identifier.type.lower() != 'archive':
+ if self._old_url.type != metadata_pb2.URL.ARCHIVE:
return False
- match = GITHUB_URL_RE.match(self._old_identifier.value)
+ match = GITHUB_URL_RE.match(self._old_url.value)
if match is None:
return False
try:
@@ -134,14 +134,14 @@
def _fetch_latest_version(self) -> None:
"""Checks upstream and gets the latest release tag."""
- self._new_identifier.version, urls = (self._fetch_latest_release()
+ self._new_ver, urls = (self._fetch_latest_release()
or self._fetch_latest_tag())
# Adds source code urls.
- urls.append(f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_identifier.version}.tar.gz')
- urls.append(f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_identifier.version}.zip')
+ urls.append(f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_ver}.tar.gz')
+ urls.append(f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_ver}.zip')
- self._new_identifier.value = choose_best_url(urls, self._old_identifier.value)
+ self._new_url.value = choose_best_url(urls, self._old_url.value)
def _fetch_latest_commit(self) -> None:
"""Checks upstream and gets the latest commit to default branch."""
@@ -149,11 +149,11 @@
# pylint: disable=line-too-long
branch = git_utils.detect_default_branch(self._proj_path,
self.UPSTREAM_REMOTE_NAME)
- self._new_identifier.version = git_utils.get_sha_for_branch(
+ self._new_ver = git_utils.get_sha_for_branch(
self._proj_path, self.UPSTREAM_REMOTE_NAME + '/' + branch)
- self._new_identifier.value = (
+ self._new_url.value = (
# pylint: disable=line-too-long
- f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_identifier.version}.zip'
+ f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_ver}.zip'
)
def check(self) -> None:
@@ -162,7 +162,7 @@
Returns True if a new version is available.
"""
self.setup_remote()
- if git_utils.is_commit(self._old_identifier.version):
+ if git_utils.is_commit(self._old_ver):
self._fetch_latest_commit()
else:
self._fetch_latest_version()
@@ -175,7 +175,7 @@
temporary_dir = None
try:
temporary_dir = archive_utils.download_and_extract(
- self._new_identifier.value)
+ self._new_url.value)
package_dir = archive_utils.find_archive_root(temporary_dir)
updater_utils.replace_package(package_dir, self._proj_path)
finally:
diff --git a/metadata.proto b/metadata.proto
index 2419e50..f7eb007 100644
--- a/metadata.proto
+++ b/metadata.proto
@@ -55,7 +55,6 @@
optional Security security = 7;
optional Date last_upgrade_date = 10;
optional DirectoryType type = 11 [default = PACKAGE];
- repeated Identifier identifier = 15;
}
message URL {
@@ -76,12 +75,6 @@
optional string value = 2;
}
-message Identifier {
- optional string type = 1;
- optional string value = 3;
- optional string version = 4;
-}
-
message Date {
optional int32 year = 1;
optional int32 month = 2;
diff --git a/updater_utils.py b/updater_utils.py
index ab155ef..b263dcb 100644
--- a/updater_utils.py
+++ b/updater_utils.py
@@ -40,10 +40,10 @@
Raises:
ValueError: Occurred when there's no updater for all urls.
"""
- for identifier in metadata.third_party.identifier:
- if identifier.type.lower() != 'homepage':
+ for url in metadata.third_party.url:
+ if url.type != metadata_pb2.URL.HOMEPAGE:
for updater_cls in updaters:
- updater = updater_cls(proj_path, identifier, metadata.third_party.version)
+ updater = updater_cls(proj_path, url, metadata.third_party.version)
if updater.is_supported_url():
return updater
@@ -107,7 +107,7 @@
except ValueError:
return (False, False, [])
- right_format = new_ver[1:] == old_ver[1:]
+ right_format = (new_ver[1:] == old_ver[1:])
right_length = len(new_ver[0]) == len(old_ver[0])
return (right_format, right_length, new_ver[0])