summaryrefslogtreecommitdiff
path: root/geneticone/helper.py
blob: a1acf423bb2f342c659e175c3691a0beb02545ef (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
#
# File: geneticone/helper.py
# This file is part of the Genetic/One-Project, a graphical portage-frontend.
#
# Copyright (C) 2006 Necoro d.M.
# 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 Necoro d.M. <necoro@necoro.net> et.al.

import traceback, textwrap, os.path

DEBUG = True

def set_debug (d):
	global DEBUG
	DEBUG = d

def debug(*args, **kwargs):
	"""Prints a debug message including filename and lineno.
	A variable number of positional arguments are allowed.
	If lineno(obj0, obj1, obj2) is called, the text part of the output 
	looks like the output from print obj0, obj1, obj2 .
	The optional keyword "wrap" causes the message to be line-wrapped. The
	argument to "wrap" should be "1" or "True". "name" is another optional
	keyword parameter.

	(This function is adapted from Edward Jones as published under: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/279155)"""
	
	if not DEBUG : return
	
	stack = traceback.extract_stack()
	a, b, c, d = stack[-2]
	a = os.path.basename(a)
	out = []
	for obj in args:
		out.append(str(obj))
	text = ' '.join(out)
	if "name" in kwargs:
		text = 'In %s (%s:%s): %s' % (kwargs["name"], a, b, text)
	else:
		text = 'In %s (%s:%s): %s' % (c, a, b, text)
	#if wrap:
	#	text = textwrap.fill(text)
	
	text = "***DEBUG*** %s ***DEBUG***" % text
	
	print text

def am_i_root ():
	"""Returns True if the current user is root, False otherwise."""
	if os.getuid() == 0:
		return True
	else:
		return False