libretime/playout/libretime_playout/liquidsoap/version.py

26 lines
683 B
Python

import re
from subprocess import run
from typing import Tuple
LIQUIDSOAP_VERSION_RE = re.compile(r"(?:Liquidsoap )?(\d+).(\d+).(\d+)")
LIQUIDSOAP_MIN_VERSION = (1, 4, 0)
def parse_liquidsoap_version(version: str) -> Tuple[int, int, int]:
match = LIQUIDSOAP_VERSION_RE.search(version)
if match is None:
return (0, 0, 0)
return (int(match.group(1)), int(match.group(2)), int(match.group(3)))
def get_liquidsoap_version() -> Tuple[int, int, int]:
cmd = run(
("liquidsoap", "--check", "print(liquidsoap.version) shutdown()"),
check=True,
capture_output=True,
text=True,
)
return parse_liquidsoap_version(cmd.stdout)