GitHub Actions secrets 自动填写

全自动填写secrets,方便省事,使用时需要自己在代码里添加secrets

目前為 2021-01-17 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         GitHub Actions secrets 自动填写
// @namespace    http://tampermonkey.net/
// @version      0.1.1
// @description  全自动填写secrets,方便省事,使用时需要自己在代码里添加secrets
// @author       You
// @match        https://github.com/*/settings/secrets/actions*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';
    console.clear();
    let env = new Object();
    /*
    需要你在此注释以下面添加secrets

    格式: env.机密名 = ‘机密值',如有多个机密值请使用&符号分开

    示例: 
        一个账号cookie: env.JD_COOKIE = 'cookie1';
        4个账号cookie:env.JD_COOKIE = 'cookie1&cookie2&cookie3&cookie4';

        互助码:如果n个账号之间需要互助,互助码请填写n遍,2个账号东东农场互助码填写如下 
        env.FRUITSHARECODES = '账号一互助码@账号二互助码&账号一互助码@账号二互助码';

    机密值 格式都跟lxk格式一样
    请务必保存好自己填写的secrets, 因为此脚本更新, 会覆盖, 你填写的就没了
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/

    //示例
    env.PET_NOTIFY_CONTROL = 'true';

    //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    let envKeys = [];
    for (let key in env) {
        envKeys.push(key);
    }

    localStorage.setItem("env", env);
    localStorage.getItem("env");
    let keyLen = envKeys.length;
    let index = localStorage.getItem("index");
    if (index == keyLen) {
        if (confirm("已设置完所有secrets或已设置完新增的secrets,是否从头开始设置")) {
            if (confirm("真的确定从头开始设置?")) {
                index = setIndex(index);
            }
        }
    } else if (!index || index > keyLen) {
        index = setIndex(index);
    }

    let url = window.location.href;
    let suffix = url.substr(url.lastIndexOf('/') + 1);
    if (macth(suffix, 'actions') || suffix == '') {
        //获取页面secrets
        let keynameList = [];
        document.querySelectorAll("code").forEach(e => {
            if (macth(e.className, 'f5')) {
                keynameList.push(e.innerText);
            }
        });

        //遍历页面secrets,进行下一步动作
        let flag = false;
        for (let i = index; i < keyLen; i++) {
            for (let j = 0; j < keynameList.length; j++) {
                if (envKeys[i] == keynameList[j]) {
                    localStorage.setItem("index", i);
                    window.location.href += '/' + envKeys[i];
                    flag = true;
                    break;
                }
            }
            if (flag) {
                break;
            }
            window.location.href += '/new';
            break;
        }
    } else if (macth(suffix, 'new')) {

        document.querySelector("#secret_name").value = envKeys[index];
        addOrUpadteValue(true);
    } else {
        addOrUpadteValue(false);
    }

    function addOrUpadteValue(flag) {
        if (flag) {
            document.querySelector("#secret_value").value = env[envKeys[index]];
        } else {
            document.querySelector("#secret_value").value = env[suffix];
        }
        localStorage.setItem("index", parseInt(index) + 1);
        let submit = document.querySelector(".form-group > button");
        submit.removeAttribute("disabled");
        submit.click();
    }

    function macth(str, macthStr) {
        return str.indexOf(macthStr) != -1;
    }

})();

function setIndex(index) {
    localStorage.setItem("index", 0);
    index = localStorage.getItem("index");
    return index;
}