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:
Adam Simpkins 2020-02-25 18:56:44 -08:00 committed by Facebook Github Bot
parent 9ee7b23604
commit f0cf7fec98
2 changed files with 26 additions and 10 deletions

View File

@ -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

View File

@ -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())