import sys,os,lldb
def check_has_dir_in_path(dirname):
	return sys.path.__contains__(dirname);

def ensure_has_dir_in_path(dirname):
	dirname = os.path.abspath(dirname)
	if not (check_has_dir_in_path(dirname)):
		sys.path.append(dirname);	

def do_import(debugger,modname):
	if (len(modname) > 4 and modname[-4:] == '.pyc'):
		modname = modname[:-4]
	if (len(modname) > 3 and modname[-3:] == '.py'):
		modname = modname[:-3]
	debugger.HandleCommand("script import " + modname)

def pyimport_cmd(debugger, args, result, dict):
	"""Import a Python module given its full path"""
	print 'WARNING: obsolete feature - use native command "command script import"'
	if args == "":
		return "no module path given";
	if not (os.sep in args):
		modname = args
		ensure_has_dir_in_path('.')
	else:
		endofdir = args.rfind(os.sep)
		modname = args[endofdir+1:]
		args = args[0:endofdir]
		ensure_has_dir_in_path(args)
	do_import(debugger,modname)
	return None
