mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
update the telemetry wrapper to log the current code version
Summary: Add methods to `version.py` to get the version of the current running Eden CLI code, rather than looking for the current installed RPM version. This means that we no longer have to execute a separate subprocess that examines the RPM database. This also makes sure we log the correct version information in cases where developers are testing local development code even though they have a different RPM version currently installed. Reviewed By: genevievehelsel Differential Revision: D20102259 fbshipit-source-id: ba9eb0c563c7f7c929170b130566946a67f679a5
This commit is contained in:
parent
9ee7b23604
commit
f0cf7fec98
@ -84,15 +84,6 @@ def get_os_and_ver() -> Tuple[str, str]:
|
||||
return os, ver
|
||||
|
||||
|
||||
def get_eden_ver() -> str:
|
||||
# TODO: use generated information from __manifest__.py for this
|
||||
# instead of querying the RPM database to determine the version
|
||||
edenver = version.get_installed_eden_rpm_version()
|
||||
if edenver is None:
|
||||
edenver = ""
|
||||
return edenver
|
||||
|
||||
|
||||
def build_base_sample(log_type: str) -> TelemetryPayload:
|
||||
sample = TelemetryPayload()
|
||||
sample.add_string("type", log_type)
|
||||
@ -111,7 +102,7 @@ def build_base_sample(log_type: str) -> TelemetryPayload:
|
||||
sample.add_string("os", os)
|
||||
sample.add_string("osver", os_ver)
|
||||
|
||||
edenver = get_eden_ver()
|
||||
edenver = version.get_current_version()
|
||||
sample.add_string("edenver", edenver)
|
||||
|
||||
return sample
|
||||
|
@ -34,3 +34,28 @@ def format_eden_version(parts: Optional[Tuple[str, str]]) -> str:
|
||||
|
||||
def get_installed_eden_rpm_version() -> str:
|
||||
return format_eden_version(get_installed_eden_rpm_version_parts())
|
||||
|
||||
|
||||
def get_current_version_parts() -> Tuple[str, str]:
|
||||
"""Get a tuple containing (version, release) of the currently running code.
|
||||
|
||||
The version and release strings will both be the empty string if this code is part
|
||||
of a development build that is not a released package.
|
||||
"""
|
||||
try:
|
||||
from __manifest__ import fbmake
|
||||
|
||||
return (fbmake.get("version", ""), fbmake.get("release", ""))
|
||||
except ImportError:
|
||||
# Builds outside of fbsource won't have __manifest__.fbmake
|
||||
# TODO: we should eventually generate a manifest file in CMake-based builds.
|
||||
return ("", "")
|
||||
|
||||
|
||||
def get_current_version() -> str:
|
||||
"""Get a human-readable string describing the version of the currently running code.
|
||||
|
||||
Returns "-" when running a development build that is not part of an official
|
||||
versioned release.
|
||||
"""
|
||||
return format_eden_version(get_current_version_parts())
|
||||
|
Loading…
Reference in New Issue
Block a user