from __future__ import print_function
import sys
import os
import 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
