Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/devbot/distro.py
blob: d0d281c84c1faec39ab9e2e0c7735ba56abfbbf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
_package_managers = {}
_supported_distros = []
_distro_info = None


def register_distro_info(distro_info):
    global _supported_distros
    _supported_distros.append(distro_info)


def register_package_manager(name, package_manager):
    global _package_managers
    _package_managers[name] = package_manager


def get_package_manager(test=False, interactive=True):
    global _package_managers
    package_manager_class = _package_managers[get_distro_info().name]
    return package_manager_class(test=test, interactive=interactive)


def print_distro_info():
    info = get_distro_info()
    print("\n= Distribution information =\n")
    print("Name: %s" % info.name)
    print("Version: %s" % info.version)
    print("GNOME version: %s" % info.gnome_version)
    print("Gstreamer version: %s" % info.gstreamer_version)
    print("Lib directory: %s" % info.lib_dir)
    print("Supported: %s\n" % info.supported)


def get_distro_info():
    global _supported_distros
    global _distro_info

    if _distro_info is not None:
        return _distro_info

    unknown_distro = None

    for info_class in _supported_distros:
        info = info_class()
        if info.name == "unknown":
            unknown_distro = info
        elif info.valid:
            _distro_info = info

    if _distro_info is None:
        _distro_info = unknown_distro

    if not _distro_info.supported:
        print("*********************************************************\n"
              "You are running an unsupported distribution. You might be\n"
              "able to make sugar work by installing or building \n"
              "packages but it certainly won't work out of the box.\n"
              "You are strongly encouraged to pick one of the supported \n"
              "distributions listed in the README.\n"
              "*********************************************************\n")

    return _distro_info