コード例 #1
0
def InstallGagdet(name, gadget, failed, all_adapters):
    try:
        v = {}
        v.update(gadget.get('all', {}))
        v.update(gadget.get(OS, {}))

        if 'download' in gadget:
            if 'file_name' not in v:
                raise RuntimeError("Unsupported OS {} for gadget {}".format(
                    OS, name))

            destination = os.path.join(gadget_dir, 'download', name,
                                       v['version'])

            url = string.Template(gadget['download']['url']).substitute(v)

            file_path = installer.DownloadFileTo(
                url,
                destination,
                file_name=gadget['download'].get('target'),
                checksum=v.get('checksum'),
                check_certificate=not args.no_check_certificate)

            root = os.path.join(destination, 'root')
            installer.ExtractZipTo(file_path,
                                   root,
                                   format=gadget['download'].get(
                                       'format', 'zip'))
        elif 'repo' in gadget:
            url = string.Template(gadget['repo']['url']).substitute(v)
            ref = string.Template(gadget['repo']['ref']).substitute(v)

            destination = os.path.join(gadget_dir, 'download', name)
            installer.CloneRepoTo(url, ref, destination)
            root = destination

        if 'do' in gadget:
            gadget['do'](name, root, v)
        else:
            installer.MakeExtensionSymlink(vimspector_base, name, root)

        # Allow per-OS adapter overrides. v already did that for us...
        all_adapters.update(v.get('adapters', {}))
        # Add any other "all" adapters
        all_adapters.update(gadget.get('adapters', {}))

        print("Done installing {}".format(name))
    except Exception as e:
        traceback.print_exc()
        failed.append(name)
        print("FAILED installing {}: {}".format(name, e))
コード例 #2
0
def InstallCppTools(name, root, gadget):
    extension = os.path.join(root, 'extension')

    # It's hilarious, but the execute bits aren't set in the vsix. So they
    # actually have javascript code which does this. It's just a horrible horrible
    # hack that really is not funny.
    installer.MakeExecutable(
        os.path.join(extension, 'debugAdapters', 'OpenDebugAD7'))
    with open(os.path.join(extension, 'package.json')) as f:
        package = json.load(f)
        runtime_dependencies = package['runtimeDependencies']
        for dependency in runtime_dependencies:
            for binary in dependency.get('binaries'):
                file_path = os.path.abspath(os.path.join(extension, binary))
                if os.path.exists(file_path):
                    installer.MakeExecutable(os.path.join(extension, binary))

    installer.MakeExtensionSymlink(vimspector_base, name, root)
コード例 #3
0
def InstallBashDebug(name, root, gadget):
    installer.MakeExecutable(
        os.path.join(root, 'extension', 'bashdb_dir', 'bashdb'))
    installer.MakeExtensionSymlink(vimspector_base, name, root)
コード例 #4
0
def InstallGeneric(name, root, gadget):
    extension = os.path.join(root, 'extension')
    for f in gadget.get('make_executable', []):
        installer.MakeExecutable(os.path.join(extension, f))

    installer.MakeExtensionSymlink(vimspector_base, name, root)