# Copyright 2016 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import re patterns = { 'debian_codename': r'^VERSION="\d+ \((.*)\)"$', 'debian_release': r'^VERSION="(\d+) ', 'pretty_codename': r'^PRETTY_NAME="Debian GNU/Linux .*/(sid)"$', } def parse_os_release(text): o = OsRelease() found_anything = False for line in text.splitlines(): for name, pattern in patterns.items(): m = re.match(pattern, line) if m: setattr(o, name, m.group(1)) found_anything = True if found_anything: return o raise NoOsReleaseInformation(text) class OsRelease(object): def __init__(self): self.debian_codename = None self.pretty_codename = None self.debian_release = None class NoOsReleaseInformation(Exception): def __init__(self, text): super(NoOsReleaseInformation, self).__init__( "Can't parse /etc/os-release: %r" % text)