blob: 6bfc43c49fd20ba54e1abc29d9d991ba702bc3a0 (
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
|
import os
import subprocess
_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 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
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
|