GitHub Clone Prefix

Add "git clone " before the clone URL on GitHub repository pages, making it ready for direct copying and use.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         GitHub Clone Prefix
// @name:zh-CN   Github上的clone前面加命令
// @name:en      GitHub Clone Prefix
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description:zh-CN  在 GitHub 代码仓库页面的克隆地址前添加 "git clone ",复制即可用(对,这几个字都懒得打)
// @description:en     Add "git clone " before the clone URL on GitHub repository pages, making it ready for direct copying and use.
// @author       Yog-Sothoth
// @match        https://github.com/*/*
// @grant        none
// @license      MIT
// @run-at       document-idle
// @description Add "git clone " before the clone URL on GitHub repository pages, making it ready for direct copying and use.
// ==/UserScript==

(function() {
    function modifyInputAndButton() {
        let inputElem = document.querySelector("#clone-with-https");
        let buttonElem = inputElem?.closest("div")?.querySelector("button");
        if (!inputElem || !buttonElem) return false;
        if (!inputElem.value.startsWith("git clone ")) inputElem.value = "git clone " + inputElem.value;
        buttonElem.addEventListener("click", async (e) => {
            e.stopImmediatePropagation();
            await navigator.clipboard.writeText(inputElem.value);
        }, true);
        return true;
    }
    if (!modifyInputAndButton()) {
        let observer = new MutationObserver(() => {
            if (modifyInputAndButton()) observer.disconnect();
        });
        observer.observe(document.body, { childList: true, subtree: true });
    }
})();