diff --git a/man/check-os-release.py b/man/check-os-release.py index 069ca74b20..d009563f02 100644 --- a/man/check-os-release.py +++ b/man/check-os-release.py @@ -2,27 +2,34 @@ import ast import re +import sys def read_os_release(): try: - f = open('/etc/os-release') + filename = '/etc/os-release' + f = open(filename) except FileNotFoundError: - f = open('/usr/lib/os-release') + filename = '/usr/lib/os-release' + f = open(filename) for line_number, line in enumerate(f): - if m := re.match(r'([A-Z][A-Z_0-9]+)=(.*?)\s*$', line): + line = line.rstrip() + if not line or line.startswith('#'): + continue + if m := re.match(r'([A-Z][A-Z_0-9]+)=(.*)', line): name, val = m.groups() if val and val[0] in '"\'': val = ast.literal_eval(val) yield name, val else: - print(f'Warning: bad line {line_number}: {line}', file=sys.stderr) + print(f'{filename}:{line_number + 1}: bad line {line!r}', + file=sys.stderr) os_release = dict(read_os_release()) pretty_name = os_release.get('PRETTY_NAME', 'Linux') print(f'Running on {pretty_name}') -if (os_release.get('ID', 'linux') == 'debian' or - os_release.get('ID_LIKE', None) == 'debian'): +if 'debian' in [os_release.get('ID', 'linux'), + *os_release.get('ID_LIKE', '').split()]: print('Looks like Debian!') diff --git a/man/check-os-release.sh b/man/check-os-release.sh index 2a1a057928..d00c0f9268 100644 --- a/man/check-os-release.sh +++ b/man/check-os-release.sh @@ -5,6 +5,6 @@ test -e /etc/os-release && os_release='/etc/os-release' || os_release='/usr/lib/ echo "Running on ${PRETTY_NAME:-Linux}" -if [ "${ID:-linux}" = "debian" ] || [ "${ID_LIKE:-}" = "debian" ]; then +if [ "${ID:-linux}" = "debian" ] || [ "${ID_LIKE#*debian*}" != "${ID_LIKE}" ]; then echo "Looks like Debian!" fi