Phabricator Auto Fill Summary/Test Plan

自动填充 Summary 和 Test Plan

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Phabricator Auto Fill Summary/Test Plan
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  自动填充 Summary 和 Test Plan
// @match        https://code.yangqianguan.com/differential/revision/attach/*
// @grant        GM_xmlhttpRequest
// @license MIT
// ==/UserScript==
(function() {
    'use strict';

    const commitMessageURL = "http://127.0.0.1:8899/commit_message";

    GM_xmlhttpRequest({
        method: "GET",
        url: commitMessageURL,
        onload: function(response) {
            const commitMsg = response.responseText;
const lines = commitMsg.split('\n');
        const titleLine = lines[0].trim();
        const titleField = document.querySelector('input[name="title"]');
        if (titleField) titleField.value = titleLine;

        const summaryMatch = commitMsg.match(/Summary:\s*([\s\S]*?)\nTest Plan:/);
            const testPlanMatch = commitMsg.match(/Test Plan:\s*([\s\S]*?)(?:\n[A-Z][a-z]+:|$)/);

            if(summaryMatch) {
                const summaryField = document.querySelector('textarea[name="summary"]');
                if(summaryField) summaryField.value = summaryMatch[1].trim();
            }

            if(testPlanMatch) {
                const testPlanField = document.querySelector('textarea[name="testPlan"]');
                if(testPlanField) testPlanField.value = testPlanMatch[1].trim();
            }
        }
    });
})();