Delete GitHub repos without confirmations
- // ==UserScript==
- // @name GitHub Quick Delete
- // @namespace Mattwmaster58 Scripts
- // @version 0.1
- // @description Delete GitHub repos without confirmations
- // @author Mattwmaster58
- // @include /^https://github\.com/.*/.*/settings/?$/
- // ==/UserScript==
- const nodes = document.querySelectorAll('.btn-danger[role="button"]');
- // we assume the last 'dangerous' button is the delete button...
- let deleteButton = nodes[nodes.length - 1];
- // ...but just to be sure we do a sanity check
- if (deleteButton.innerHTML.search('Delete this repository') === -1) {
- console.error('selected wrong delete button or the text has changed!', deleteButton)
- } else {
- console.log('changing delete button text');
- deleteButton.innerHTML = 'Delete this repository (no confirmation!)';
- deleteButton.onclick = submitDeleteForm;
- // deleteButton.onkeyup = () => event => {if (event.key === "Enter") {submitDeleteForm();}}
- }
- function submitDeleteForm() {
- try {
- // the form action URL will end with delete typically
- let deleteForm = document.querySelector('form[action$="delete"]')
- // more implicit validation we have the right URL
- let repoName = deleteForm.action.match(/\.com\/(.*\/.*)\/settings\/delete/)[1];
- console.log(`repo name found: ${repoName}`);
- deleteForm.querySelector('input:not([type=hidden])').value = repoName;
- console.log('submitting delete form');
- deleteForm.submit()
- } catch (error) {
- console.error('error occurred trying to submit delete form:', error);
- }
- }