* feat: get tool versions without VersionInfo model * chore: remove update_external_command_info call * feat: get tool version without VersionInfo * chore: Remove VersionInfo model * chore: Migration to remove VersionInfo * fix: handle errors better; ignore stderr * fix: type annotation
30 lines
762 B
Python
30 lines
762 B
Python
# Copyright The IETF Trust 2007-2024, All Rights Reserved
|
|
import subprocess
|
|
|
|
|
|
class _ToolVersionManager:
|
|
_known = [
|
|
"pyang",
|
|
"xml2rfc",
|
|
"xym",
|
|
"yanglint",
|
|
]
|
|
_versions: dict[str, str] = dict()
|
|
|
|
def __getitem__(self, item):
|
|
if item not in self._known:
|
|
return "Unknown"
|
|
elif item not in self._versions:
|
|
try:
|
|
self._versions[item] = subprocess.run(
|
|
[item, "--version"],
|
|
capture_output=True,
|
|
check=True,
|
|
).stdout.decode().strip()
|
|
except subprocess.CalledProcessError:
|
|
return "Unknown"
|
|
return self._versions[item]
|
|
|
|
|
|
tool_version = _ToolVersionManager()
|