Clone in VSCode

Clone Github respository in VSCode

  1. // ==UserScript==
  2. // @name Clone in VSCode
  3. // @namespace http://imspace.cn/
  4. // @version 0.2
  5. // @description Clone Github respository in VSCode
  6. // @author space
  7. // @match https://github.com/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. function createButton(actions, uri) {
  15. const li = document.createElement('li');
  16. const button = document.createElement('button');
  17. button.className = 'btn btn-sm'; // js-toggler-target
  18. button.innerText = 'Clone in VSCode';
  19. button.addEventListener('click', () => {
  20. location.href = `vscode://vscode.git/clone?url=${encodeURIComponent(uri)}`
  21. })
  22. li.append(button);
  23. actions.append(li);
  24. }
  25. function getGitUri() {
  26. const [emptyUri] = [...document.querySelectorAll('button.js-git-protocol-clone-url')].map(i => i.getAttribute('data-url')).filter(i => i.startsWith('git'))
  27. const [normalUri] = [...document.querySelectorAll('input[data-autoselect]')].map(i => i.value).filter(i => i.startsWith('git'))
  28. return emptyUri || normalUri
  29. }
  30. const actions = document.querySelector('.pagehead-actions')
  31. if (actions) {
  32. const uri = getGitUri();
  33. if (uri) {
  34. createButton(actions, uri);
  35. }
  36. }
  37. })();