xref: /openbsd-src/gnu/llvm/lldb/examples/customization/import-python/importcmd.py (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1*061da546Spatrickimport sys
2*061da546Spatrickimport os
3*061da546Spatrickimport lldb
4*061da546Spatrick
5*061da546Spatrick
6*061da546Spatrickdef check_has_dir_in_path(dirname):
7*061da546Spatrick    return sys.path.__contains__(dirname)
8*061da546Spatrick
9*061da546Spatrick
10*061da546Spatrickdef ensure_has_dir_in_path(dirname):
11*061da546Spatrick    dirname = os.path.abspath(dirname)
12*061da546Spatrick    if not (check_has_dir_in_path(dirname)):
13*061da546Spatrick        sys.path.append(dirname)
14*061da546Spatrick
15*061da546Spatrick
16*061da546Spatrickdef do_import(debugger, modname):
17*061da546Spatrick    if (len(modname) > 4 and modname[-4:] == '.pyc'):
18*061da546Spatrick        modname = modname[:-4]
19*061da546Spatrick    if (len(modname) > 3 and modname[-3:] == '.py'):
20*061da546Spatrick        modname = modname[:-3]
21*061da546Spatrick    debugger.HandleCommand("script import " + modname)
22*061da546Spatrick
23*061da546Spatrick
24*061da546Spatrickdef pyimport_cmd(debugger, args, result, dict):
25*061da546Spatrick    """Import a Python module given its full path"""
26*061da546Spatrick    print('WARNING: obsolete feature - use native command "command script import"')
27*061da546Spatrick    if args == "":
28*061da546Spatrick        return "no module path given"
29*061da546Spatrick    if not (os.sep in args):
30*061da546Spatrick        modname = args
31*061da546Spatrick        ensure_has_dir_in_path('.')
32*061da546Spatrick    else:
33*061da546Spatrick        endofdir = args.rfind(os.sep)
34*061da546Spatrick        modname = args[endofdir + 1:]
35*061da546Spatrick        args = args[0:endofdir]
36*061da546Spatrick        ensure_has_dir_in_path(args)
37*061da546Spatrick    do_import(debugger, modname)
38*061da546Spatrick    return None
39