summaryrefslogtreecommitdiff
path: root/portato/backend/__init__.py
blob: d1d61e85e32e9b0771adc5e8600477a09509dc44 (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
# -*- coding: utf-8 -*-
#
# File: portato/backend/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
# Copyright (C) 2006-2007 René 'Necoro' Neumann
# This is free software.  You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
#
# Written by René 'Necoro' Neumann <necoro@necoro.net>

from exceptions import *
from system_interface import SystemInterface

SYSTEM = "portage" # the name of the current system
_sys = None # the SystemInterface-instance

class SystemWrapper (SystemInterface):
	"""This is a wrapper to the different system interfaces, allowing the direct import via C{from portato.backend import system}.
	With this wrapper a change of the system is propagated to all imports."""
	
	def __getattribute__ (self, name):
		"""Just pass all attribute accesses directly to _sys."""
		return getattr(_sys, name)

def set_system (new_sys):
	"""Sets the current system to a new one.

	@param new_sys: the name of the system to take
	@type new_sys: string"""

	global SYSTEM
	SYSTEM = new_sys
	load_system()

def load_system ():
	"""Loads the current chosen system.

	@raises InvalidSystemError: if an inappropriate system is set"""
	
	global _sys

	if SYSTEM == "portage":
		from portato.backend.portage import PortageSystem
		_sys = PortageSystem ()
	else:
		raise InvalidSystemError, SYSTEM

system = SystemWrapper()

# import package before loading the system as some systems may depend on it being in the namespace
from package import Package

load_system()
/tr> 2007-07-28some more pause emerge itemsnecoro5-276/+423 2007-07-27changed design / added linknecoro3-66/+154 2007-07-26changed design / added linknecoro2-34/+27 2007-07-25changed design / added linknecoro5-86/+188 2007-07-24made the resume_loop-plugin change titles toonecoro5-7/+22 2007-07-21added logviewersnecoro7-215/+429 2007-07-21updated howtonecoro1-14/+24 2007-07-20new Plugin Schemenecoro1-5/+4 2007-07-20new Plugin Schemenecoro1-1/+1 2007-07-20new Plugin Schemenecoro9-162/+214 2007-07-13fixesnecoro4-27/+37 2007-07-13new fancier log outputnecoro14-127/+116 2007-07-11added SIGSTOP/SIGCONT support; SIGTERM now works ;)necoro8-208/+275 2007-07-09bug in shutdown pluginnecoro2-5/+12 2007-07-09added resume_loop pluginnecoro1-1/+1 2007-07-09added resume_loop pluginnecoro10-22/+162 2007-07-07some more documentationnecoro6-4/+108 2007-07-07Some documentation worknecoro7-18/+129