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))
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)
def InstallBashDebug(name, root, gadget): installer.MakeExecutable( os.path.join(root, 'extension', 'bashdb_dir', 'bashdb')) installer.MakeExtensionSymlink(vimspector_base, name, root)
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)