SourceGraph

SourceGraph button injection on Github

// ==UserScript==
// @name         SourceGraph
// @description  SourceGraph button injection on Github
// @namespace    https://github.com/mokeyish
// @version      0.2
// @author       You
// @match        https://github.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    var target = document.querySelector("#js-repo-pjax-container > div.pagehead.repohead.hx_repohead.readability-menu.bg-gray-light.pb-0.pt-3 > div > ul");
    if (target){
        var t = window.location.pathname.split('/');
        var url = window.location.host;
        if (t.length >= 3) {
            var username = t[1];
            var repo = t[2];
            url = `${url}/${username}/${repo}`;
        } else {
            return;
        }
        if (t.length >= 5) {
            var type = t[3];
            var branch = t[4];
            url = `${url}@${branch}/-/${type}`;
        }
        if (t.length >= 6) {
            url = `${url}/${t.slice(5).join('/')}`;
        }
        var html = `
        <li id="open-on-sourcegraph">
          <a href="https://sourcegraph.com/${url}" aria-label="View repository on Sourcegraph" class="open-on-sourcegraph btn btn-sm tooltipped tooltipped-s">
            <svg viewBox="0 0 40 40" width="16" height="16" class="action-item__icon--github v-align-text-bottom"><g fill="none" fill-rule="evenodd"><path d="M11.5941935,5.12629921 L20.4929032,36.888189 C21.0909677,39.0226772 23.3477419,40.279685 25.5325806,39.6951181 C27.7190323,39.1105512 29.0051613,36.9064567 28.4067742,34.7722835 L19.5064516,3.00944882 C18.9080645,0.875590551 16.6516129,-0.381732283 14.4667742,0.203149606 C12.2822581,0.786771654 10.9958065,2.99149606 11.5941935,5.12598425 L11.5941935,5.12629921 Z" fill="#F96316"></path><path d="M28.0722581,5.00598425 L5.7883871,29.5748031 C4.28516129,31.2314961 4.44225806,33.7647244 6.13741935,35.2327559 C7.83258065,36.7004724 10.4245161,36.5474016 11.9277419,34.8913386 L34.2116129,10.3228346 C35.7148387,8.66614173 35.5577419,6.13385827 33.8625806,4.66551181 C32.1667742,3.19653543 29.5741935,3.34992126 28.0722581,5.00566929 L28.0722581,5.00598425 Z" fill="#B200F8"></path><path d="M2.82258065,18.6204724 L34.6019355,28.8866142 C36.7525806,29.5811024 39.0729032,28.4412598 39.7841935,26.3395276 C40.4970968,24.2381102 39.3293548,21.9716535 37.1777419,21.2762205 L5.39935484,11.0110236 C3.24774194,10.3159055 0.928387097,11.455748 0.216774194,13.5574803 C-0.494193548,15.6588976 0.673548387,17.9259843 2.82322581,18.6204724 L2.82258065,18.6204724 Z" fill="#00B4F2"></path></g>
            </svg>
          </a>
        </li>`;
        target.insertAdjacentHTML('afterbegin', html);
    }
})();