Source code for uhugo.terminal_commands.posix
import subprocess
from packaging import version
from . import Hugo, hugo_version_cmd
__all__ = ["check_hugo"]
[docs]
def check_hugo() -> Hugo:
"""
Checks for Hugo instillation
:return Hugo: A dataclass object with ``path``, ``exists`` and ``version``
"""
try:
_path = subprocess.check_output(["which", "hugo"]).strip()
except Exception:
return Hugo("", False, version.Version("0"))
_hugo_version_str = hugo_version_cmd()
try:
_hugo_version = _hugo_version_str.decode("utf-8").split(" ")[4].split("/")[0].split("-")[0]
ver = version.Version(_hugo_version)
except version.InvalidVersion:
_hugo_version = _hugo_version_str.decode("utf-8").split(" ")[1].split("-")[0]
ver = version.Version(_hugo_version)
return Hugo(_path.decode("utf-8"), True, ver)