fix up a pylint error and migrate some pure functions from terminal.py
This commit is contained in:
parent
690bb61788
commit
0912fb8aae
|
@ -18,6 +18,8 @@
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import gtk
|
import gtk
|
||||||
|
import os
|
||||||
|
import pwd
|
||||||
|
|
||||||
# set this to true to enable debugging output
|
# set this to true to enable debugging output
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
@ -39,11 +41,57 @@ def gerr(message = None):
|
||||||
gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message)
|
gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message)
|
||||||
dialog.run()
|
dialog.run()
|
||||||
|
|
||||||
def has_ancestor(widget, type):
|
def has_ancestor(widget, wtype):
|
||||||
"""Walk up the family tree of widget to see if any ancestors are of type"""
|
"""Walk up the family tree of widget to see if any ancestors are of type"""
|
||||||
while widget:
|
while widget:
|
||||||
widget = widget.get_parent()
|
widget = widget.get_parent()
|
||||||
if isinstance(widget, type):
|
if isinstance(widget, wtype):
|
||||||
return(True)
|
return(True)
|
||||||
return(False)
|
return(False)
|
||||||
|
|
||||||
|
def path_lookup(command):
|
||||||
|
'''Find a command in our path'''
|
||||||
|
if os.path.isabs(command):
|
||||||
|
if os.path.isfile(command):
|
||||||
|
return(command)
|
||||||
|
else:
|
||||||
|
return(None)
|
||||||
|
elif command[:2] == './' and os.path.isfile(command):
|
||||||
|
dbg('path_lookup: Relative filename %s found in cwd' % command)
|
||||||
|
return(command)
|
||||||
|
|
||||||
|
try:
|
||||||
|
paths = os.environ['PATH'].split(':')
|
||||||
|
if len(paths[0]) == 0:
|
||||||
|
raise(ValueError)
|
||||||
|
except (ValueError, NameError):
|
||||||
|
dbg('path_lookup: PATH not set in environment, using fallbacks')
|
||||||
|
paths = ['/usr/local/bin', '/usr/bin', '/bin']
|
||||||
|
|
||||||
|
dbg('path_lookup: Using %d paths: %s', (len(paths), paths))
|
||||||
|
|
||||||
|
for path in paths:
|
||||||
|
target = os.path.join(path, command)
|
||||||
|
if os.path.isfile(target):
|
||||||
|
dbg('path_lookup: found %s' % target)
|
||||||
|
return(target)
|
||||||
|
|
||||||
|
dbg('path_lookup: Unable to locate %s' % command)
|
||||||
|
|
||||||
|
def shell_lookup():
|
||||||
|
"""Find an appropriate shell for the user"""
|
||||||
|
shells = [os.getenv('SHELL'), pwd.getpwuid(os.getuid())[6], 'bash',
|
||||||
|
'zsh', 'tcsh', 'ksh', 'csh', 'sh']
|
||||||
|
|
||||||
|
for shell in shells:
|
||||||
|
if shell is None:
|
||||||
|
continue
|
||||||
|
elif os.path.isfile(shell):
|
||||||
|
return(shell)
|
||||||
|
else:
|
||||||
|
rshell = path_lookup(shell)
|
||||||
|
if rshell is not None:
|
||||||
|
dbg('shell_lookup: Found %s at %s' % (shell, rshell))
|
||||||
|
return(rshell)
|
||||||
|
dbg('shell_lookup: Unable to locate a shell')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue