93 lines
3.2 KiB
JavaScript
93 lines
3.2 KiB
JavaScript
!(async function () {
|
|
const regexp = /https:\/\/github.com\/github\/([^\/]*)\/pull\/\d*\/files/
|
|
|
|
if (!window.location.href.match(regexp)) {
|
|
window.alert("You're not on a PR 'Files changed' page. 🙃")
|
|
return
|
|
}
|
|
|
|
let conversation_url = window.location.href.replace(/files.*/g, '')
|
|
|
|
// get the preview deployment URL by loading the 'Conversation' page, and searching for the 'View deployment' link
|
|
let deployment_url = await fetch(conversation_url)
|
|
.then(function (response) {
|
|
return response.text()
|
|
})
|
|
.then(function (html) {
|
|
// Convert the HTML string into a document object
|
|
var parser = new DOMParser()
|
|
var doc = parser.parseFromString(html, 'text/html')
|
|
|
|
var elements = doc.getElementsByClassName('TimelineItem')
|
|
// Find the element that is a link that contains the text "View deployment"
|
|
for (var i = 0; i < elements.length; i++) {
|
|
var element = elements[i]
|
|
var links = element.getElementsByTagName('a')
|
|
for (var j = 0; j < links.length; j++) {
|
|
var link = links[j]
|
|
if (link.innerText.match(/View deployment/)) {
|
|
// Get the href of the link
|
|
var deployment_url = link.getAttribute('href')
|
|
}
|
|
}
|
|
}
|
|
// This should return the last link that contains the text "View deployment" (there might be multiple ones if there are multiple deployments)
|
|
return deployment_url
|
|
})
|
|
if (deployment_url == null) {
|
|
window.alert('No preview deployment found! 😭')
|
|
return
|
|
}
|
|
// strip any trailing slash from deployment_url
|
|
deployment_url = deployment_url.replace(/\/$/, '')
|
|
|
|
var url_fpt = deployment_url + '/en'
|
|
var url_ghec = deployment_url + '/en/enterprise-cloud@latest'
|
|
var url_ghes = deployment_url + '/en/enterprise-server@latest'
|
|
var url_ae = deployment_url + '/en/github-ae@latest'
|
|
var fpt = 'FPT'
|
|
var ghes = 'GHES'
|
|
var ghec = 'GHEC'
|
|
var ae = 'AE'
|
|
|
|
const file_info = document.querySelectorAll('div.file-info')
|
|
for (var i = 0; i < file_info.length; i++) {
|
|
var link = file_info[i].querySelector('a').title
|
|
if (link.search('data/') === 0) {
|
|
continue
|
|
} else {
|
|
var regex = /\.md$/
|
|
var markdownfile = link.search(regex) >= 0
|
|
if (markdownfile) {
|
|
console.log('link: ' + link)
|
|
link = link.replace(regex, '')
|
|
link = link.replace(/^content/, '')
|
|
link = link.replace(/\/index/, '')
|
|
var span = document.createElement('SPAN')
|
|
span.style.fontFamily =
|
|
'-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif'
|
|
span.innerHTML = ' View: '
|
|
|
|
span = addLink(span, fpt, url_fpt + link)
|
|
span.innerHTML += ' / '
|
|
span = addLink(span, ghec, url_ghec + link)
|
|
span.innerHTML += ' / '
|
|
span = addLink(span, ghes, url_ghes + link)
|
|
span.innerHTML += ' / '
|
|
span = addLink(span, ae, url_ae + link)
|
|
|
|
file_info[i].appendChild(span)
|
|
}
|
|
}
|
|
}
|
|
|
|
function addLink(span, link_name, link_href) {
|
|
var anchor = document.createElement('A')
|
|
anchor.innerHTML = link_name
|
|
anchor.href = link_href
|
|
anchor.target = '_blank'
|
|
span.appendChild(anchor)
|
|
return span
|
|
}
|
|
})()
|