1*7f01ac39SJohnny Chenimport sys,os,lldb
2*7f01ac39SJohnny Chendef check_has_dir_in_path(dirname):
3*7f01ac39SJohnny Chen	return sys.path.__contains__(dirname);
4*7f01ac39SJohnny Chen
5*7f01ac39SJohnny Chendef ensure_has_dir_in_path(dirname):
6*7f01ac39SJohnny Chen	dirname = os.path.abspath(dirname)
7*7f01ac39SJohnny Chen	if not (check_has_dir_in_path(dirname)):
8*7f01ac39SJohnny Chen		sys.path.append(dirname);
9*7f01ac39SJohnny Chen
10*7f01ac39SJohnny Chendef do_import(debugger,modname):
11*7f01ac39SJohnny Chen	if (len(modname) > 4 and modname[-4:] == '.pyc'):
12*7f01ac39SJohnny Chen		modname = modname[:-4]
13*7f01ac39SJohnny Chen	if (len(modname) > 3 and modname[-3:] == '.py'):
14*7f01ac39SJohnny Chen		modname = modname[:-3]
15*7f01ac39SJohnny Chen	debugger.HandleCommand("script import " + modname)
16*7f01ac39SJohnny Chen
17*7f01ac39SJohnny Chendef pyimport_cmd(debugger, args, result, dict):
18*7f01ac39SJohnny Chen	"""Import a Python module given its full path"""
19*7f01ac39SJohnny Chen	if args == "":
20*7f01ac39SJohnny Chen		return "no module path given";
21*7f01ac39SJohnny Chen	if not (os.sep in args):
22*7f01ac39SJohnny Chen		modname = args
23*7f01ac39SJohnny Chen		ensure_has_dir_in_path('.')
24*7f01ac39SJohnny Chen	else:
25*7f01ac39SJohnny Chen		endofdir = args.rfind(os.sep)
26*7f01ac39SJohnny Chen		modname = args[endofdir+1:]
27*7f01ac39SJohnny Chen		args = args[0:endofdir]
28*7f01ac39SJohnny Chen		ensure_has_dir_in_path(args)
29*7f01ac39SJohnny Chen	do_import(debugger,modname)
30*7f01ac39SJohnny Chen	return None
31