Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save lamngockhuong/8c7c2d73ddbefc3297232cde1d69e048 to your computer and use it in GitHub Desktop.
Save lamngockhuong/8c7c2d73ddbefc3297232cde1d69e048 to your computer and use it in GitHub Desktop.
Auto Select Merge Type for GitHub Pull-Request
// ==UserScript==
// @name Auto Select Merge Type for GitHub PR
// @namespace https://gist.github.com/search?q=user%3Alamngockhuong+filename%3Auserscript+language%3Ajs&ref=searchresults
// @version 0.7
// @description Automatically selects merge type based on target branch for GitHub PRs
// @icon64 data:image/png;base64,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
// @source https://gist.github.com/lamngockhuong/8c7c2d73ddbefc3297232cde1d69e048
// @updateURL https://gist.githubusercontent.com/lamngockhuong/8c7c2d73ddbefc3297232cde1d69e048/raw/auto-select-merge-type-for-github-pr.userscript.js
// @downloadURL https://gist.githubusercontent.com/lamngockhuong/8c7c2d73ddbefc3297232cde1d69e048/raw/auto-select-merge-type-for-github-pr.userscript.js
// @author Lam Ngoc Khuong
// @match https://github.com/*/pull/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const releaseBranches = ['main', 'master']
function selectMergeOption() {
const targetBranchElement = document.querySelector('span.css-truncate-target');
if (!targetBranchElement) {
console.log("<<AutoSelectMergeType>> πŸ™ Target branch element not found yet!");
return;
}
const targetBranch = targetBranchElement.textContent.trim();
console.log("<<AutoSelectMergeType>> πŸ™ Target branch detected: " + targetBranch);
// Locate the merge type buttons
const mergeButton = document.querySelector('button.merge-box-button.btn-group-merge');
const squashButton = document.querySelector('button.merge-box-button.btn-group-squash');
// Locate the merge dropdown button
const dropdownButton = document.querySelector('.select-menu-button.js-merge-method-menu-button');
if (!dropdownButton) {
console.log("<<AutoSelectMergeType>> πŸ™ Merge options dropdown not found!");
return;
}
// Open the dropdown menu
dropdownButton.click();
// Wait for the dropdown to open, then select the appropriate merge option
setTimeout(() => {
let mergeOption;
// Logic to select merge type
if (releaseBranches.includes(targetBranch)) {
mergeOption = document.querySelector('.select-menu-item.js-merge-box-button-merge');
console.log("<<AutoSelectMergeType>> πŸ™ Selecting regular merge for branch: " + targetBranch);
} else {
mergeOption = document.querySelector('.select-menu-item.js-merge-box-button-squash');
console.log("<<AutoSelectMergeType>> πŸ™ Selecting squash merge for branch: " + targetBranch);
}
if (mergeOption) {
mergeOption.click();
dropdownButton.blur();
} else {
console.log("<<AutoSelectMergeType>> πŸ™ Merge option not found!");
}
}, 500); // Delay to ensure the dropdown menu is fully loaded
}
window.addEventListener('load', selectMergeOption);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment