Skip to content

Instantly share code, notes, and snippets.

@cyberhck
Last active October 14, 2020 09:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cyberhck/a883a0eb1c2e33fd77b6c25fcae5e739 to your computer and use it in GitHub Desktop.
Save cyberhck/a883a0eb1c2e33fd77b6c25fcae5e739 to your computer and use it in GitHub Desktop.
const clean = (timeToWait, includeAbandoned = false) => {
if (!window.location.href.includes("/branches/stale")) {
return;
}
const branches = () => Array.from(document.querySelectorAll("li.Box-row.js-branch-row"));
const isMerged = (branch) => branch.querySelector("a.State.State--purple") !== null;
const isClosed = (branch) => branch.querySelector("a.State.State--red") !== null;
const isAbandoned = (branch) => branch.querySelector("a.btn.test-compare-link");
const isMergedOrClosed = (branch) => isMerged(branch) || isClosed(branch);
const isMergedClosedOrAbandoned = (branch) => isMergedOrClosed(branch) || isAbandoned(branch);
const deleteBranch = branch => branch.querySelector("button.btn-link.js-branch-delete-target.text-red")?.click();
const branchesToDelete = branches().filter(includeAbandoned ? isMergedClosedOrAbandoned : isMergedOrClosed);
if (branchesToDelete.length === 0) {
// go to page - 1
const url = new URL(window.location.href);
const page = parseInt(url.searchParams.get("page") ? url.searchParams.get("page") : "1", 10);
if (page <= 0) {
return;
}
url.searchParams.set("page", (page - 1).toString());
window.location.href = url.href;
return;
}
branchesToDelete.forEach(deleteBranch);
setTimeout(() => {
window.location.reload();
}, timeToWait);
};
clean(3000, false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment