Publish button in repo on GitHub

5/28/2020, 5:17:05 PM

// ==UserScript==
// @name        Publish button in repo on GitHub
// @namespace   Violentmonkey Scripts
// @match       https://github.com/*/*
// @grant       none
// @version     1.4
// @author      -
// @description 5/28/2020, 5:17:05 PM
// ==/UserScript==

const username = $("a.url.fn").innerText

// DOM-lib
Element.prototype.makeElement = function (tag, options={}) {
  return makeElement(tag, options, this)
}

Element.prototype.find = Element.prototype.querySelector

function makeElement(tag, options={}, parent) {
  const el = document.createElement(tag)
  Object.assign(el, options)
  if (parent) parent.append(el)
  return el
}

function $(selector, text) {
  if (text) return [...$$(selector)].find(el => el.innerText == text)
  return document.querySelector(selector)
}

function $$(selector) {
  return [...document.body.querySelectorAll(selector)].filter(el => el.tagName != "SCRIPT")
}

// Script
if (username == location.href.match(/github.com\/([^\/]*)/)[1]) {
  if (!location.href.endsWith('/settings') && !localStorage.publish) {
    $('.pagehead-actions').makeElement('li').makeElement('button', {className: 'btn btn-sm', innerText: 'Publish'}).onclick = () => {
      console.log('start publish')
      localStorage.publish = 1
      location.href += '/settings/pages'
    }
  } else if (location.href.endsWith('/settings/pages') && localStorage.publish == 1) {
    localStorage.publish = 2
    setTimeout(() => $('[value=master]').click(), 300)
    setTimeout(() => [...document.forms].find(form => form.action.endsWith("/pages/source")).submit(), 1000)
  } else if (location.href.endsWith('/settings/pages') && localStorage.publish == 2) {  
    localStorage.publish = 3
    location.href = location.href.replace('/settings/pages', '')
  } else if (!location.href.endsWith('/settings/pages') && localStorage.publish == 3) {
    delete localStorage.publish
    repo_homepage.value = 'https://' + username + '.github.io/' + location.href.replace('https://github.com/' + username + '/', '') + '/'
    repo_metadata_form.submit()
  } 
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址