1*525cd59fSSerge Gueltonfrom __future__ import print_function
2b9c1b51eSKate Stoneimport sys
3b9c1b51eSKate Stoneimport os
4b9c1b51eSKate Stoneimport lldb
5b9c1b51eSKate Stone
6b9c1b51eSKate Stone
77f01ac39SJohnny Chendef check_has_dir_in_path(dirname):
8b9c1b51eSKate Stone    return sys.path.__contains__(dirname)
9b9c1b51eSKate Stone
107f01ac39SJohnny Chen
117f01ac39SJohnny Chendef ensure_has_dir_in_path(dirname):
127f01ac39SJohnny Chen    dirname = os.path.abspath(dirname)
137f01ac39SJohnny Chen    if not (check_has_dir_in_path(dirname)):
14b9c1b51eSKate Stone        sys.path.append(dirname)
15b9c1b51eSKate Stone
167f01ac39SJohnny Chen
177f01ac39SJohnny Chendef do_import(debugger, modname):
187f01ac39SJohnny Chen    if (len(modname) > 4 and modname[-4:] == '.pyc'):
197f01ac39SJohnny Chen        modname = modname[:-4]
207f01ac39SJohnny Chen    if (len(modname) > 3 and modname[-3:] == '.py'):
217f01ac39SJohnny Chen        modname = modname[:-3]
227f01ac39SJohnny Chen    debugger.HandleCommand("script import " + modname)
237f01ac39SJohnny Chen
24b9c1b51eSKate Stone
257f01ac39SJohnny Chendef pyimport_cmd(debugger, args, result, dict):
267f01ac39SJohnny Chen    """Import a Python module given its full path"""
27*525cd59fSSerge Guelton    print('WARNING: obsolete feature - use native command "command script import"')
287f01ac39SJohnny Chen    if args == "":
29b9c1b51eSKate Stone        return "no module path given"
307f01ac39SJohnny Chen    if not (os.sep in args):
317f01ac39SJohnny Chen        modname = args
327f01ac39SJohnny Chen        ensure_has_dir_in_path('.')
337f01ac39SJohnny Chen    else:
347f01ac39SJohnny Chen        endofdir = args.rfind(os.sep)
357f01ac39SJohnny Chen        modname = args[endofdir + 1:]
367f01ac39SJohnny Chen        args = args[0:endofdir]
377f01ac39SJohnny Chen        ensure_has_dir_in_path(args)
387f01ac39SJohnny Chen    do_import(debugger, modname)
397f01ac39SJohnny Chen    return None
40