Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/devbot/distro.py
blob: 681b01491320542d0a0c7dd11952f41dc6c7dc50 (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