Greasy Fork 支持简体中文。

Disable Squash and Merge on Mondays

Disable buttons with text "Squash and merge" on Mondays

// ==UserScript==
// @name         Disable Squash and Merge on Mondays
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  Disable buttons with text "Squash and merge" on Mondays
// @author       Your Name
// @match        *://*/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Check if today is Monday
    const today = new Date();
    const isMonday = today.getDay() === 1;
    let disabledButtons = [];

      let autoMergeIntervalId;
      let disableButtonsIntervalId;

    if (isMonday && window.location.href.includes("https://github.com/Crezco-Limited/Crezco-App/pull/")) {
        // Function to disable buttons
        const disableButtons = () => {
            const buttons = document.querySelectorAll('button');
            buttons.forEach(button => {
                if (button.textContent.trim() === 'Squash and merge' || button.textContent.trim() === 'Enable auto-merge (squash)') {
                    button.disabled = true;
                    disabledButtons.push(button);
                }
            });
        };

        const checkForButtonAndShowDialog = () => {
            const button = Array.from(document.querySelectorAll('button')).find(btn => btn.textContent.trim() === 'Disable auto-merge');

            if (button) {
                const userConfirmed = confirm('It is Monday and likely you should not be merging, do you want to disable auto-merge?');
                if (userConfirmed) {
                    button.click();
                } else {
                    clearInterval(autoMergeIntervalId);
                }
            }
        };

        const enableButtons = () => {
            disabledButtons.forEach(button => {
                button.disabled = false;
            });
            disabledButtons = [];
        };

        const banner = document.createElement('div');
        banner.style.position = 'fixed';
        banner.style.top = '0';
        banner.style.left = '0';
        banner.style.width = '100%';
        banner.style.backgroundColor = 'green';
        banner.style.color = 'white';
        banner.style.textAlign = 'center';
        banner.style.padding = '10px';
        banner.style.zIndex = '1000';
        banner.textContent = 'It is Monday and you might not want to be merging since it will interfere with release!';

        const button = document.createElement('button');
        button.textContent = 'Re-enable Merging (Release is over)';
        button.style.marginLeft = '20px';
        button.onclick = () => {
            clearInterval(autoMergeIntervalId);
            clearInterval(disableButtonsIntervalId);
            enableButtons();
            banner.remove();
        };

        banner.appendChild(button);
        document.body.appendChild(banner);


        autoMergeIntervalId = setInterval(checkForButtonAndShowDialog, 2000);
        disableButtonsIntervalId = setInterval(disableButtons, 2000);
    }
})();