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

_package_managers = {}
_distros_info = []

def register_distro_info(distro_info):
     global _distros_info
     _distros_info.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 get_distro_info():
    global _distros_info

    unknown_distro = None

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

    return unknown_distro