Skip to content

Instantly share code, notes, and snippets.

@bethropolis
Last active February 23, 2023 10:59
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 bethropolis/37cfb3821ad2321b53749ca097ec2963 to your computer and use it in GitHub Desktop.
Save bethropolis/37cfb3821ad2321b53749ca097ec2963 to your computer and use it in GitHub Desktop.
Adds a "Homepage" button to GitHub repository search results to quickly access the repository's homepage URL
// ==UserScript==
// @name GitHub Homepage Button
// @description Adds a "Homepage" button to GitHub repository search results to quickly access the repository's homepage URL.
// @version 1
// @match https://github.com/search?*
// @namespace https://gist.github.com/bethropolis/37cfb3821ad2321b53749ca097ec2963
// @author bethropolis
// @icon https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
const repoList = document.querySelector(".repo-list");
if (repoList) {
const repos = repoList.querySelectorAll("li");
for (const repo of repos) {
const repoLink = repo.querySelector(" div > div > div > a");
if (repoLink) {
const repoUrl = repoLink.getAttribute("href");
const parts = repoUrl.split("/");
const owner = parts[parts.length - 2];
const repoName = parts[parts.length - 1];
const repoListItem = repo.closest('li'); // Get reference to parent li item
// Fetch repository details to get homepage URL
fetch(`https://api.github.com/repos/${owner}/${repoName}`)
.then(response => response.json())
.then(data => {
const homepageUrl = data.homepage;
// Add "Homepage" button
if (homepageUrl) {
const repoDetails = repo.querySelector(".d-flex");
const a = document.createElement('a');
a.innerText = 'Homepage';
a.href = homepageUrl;
a.target = '_blank'; // Open link in a new tab
a.style.marginLeft = '1rem'; // Add some margin to the left
repoDetails.appendChild(a);
}
})
.catch(error => console.error(error));
}
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment