mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-08-08 02:43:57 +08:00
feat(submitter): 新增自动获取git用户名并填充提交信息
扩展了提交器的自动填充能力,新增通过git config获取本地git用户名的能力,和原有邮箱获取逻辑结合,自动按照格式填充贡献者字段,优化用户提交体验
This commit is contained in:
@@ -972,6 +972,24 @@ export function registerSubmitterHandlers(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.handle("get-git-name", async () => {
|
||||||
|
try {
|
||||||
|
const { exec } = await import("node:child_process");
|
||||||
|
const util = await import("util");
|
||||||
|
const execAsync = util.promisify(exec);
|
||||||
|
const { stdout } = await execAsync("git config user.name");
|
||||||
|
const name = stdout.trim();
|
||||||
|
logger.info({ name }, "[Submitter] Git name retrieved");
|
||||||
|
return { success: true, data: name || "" };
|
||||||
|
} catch (err) {
|
||||||
|
logger.warn(
|
||||||
|
{ err },
|
||||||
|
"[Submitter] Failed to get git name, not a git repo or git not installed",
|
||||||
|
);
|
||||||
|
return { success: false, data: "" };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
ipcMain.handle("get-tags-list", async () => {
|
ipcMain.handle("get-tags-list", async () => {
|
||||||
try {
|
try {
|
||||||
const apiUrl = "https://upload.deepinos.org.cn/api/index/get_tags_list";
|
const apiUrl = "https://upload.deepinos.org.cn/api/index/get_tags_list";
|
||||||
|
|||||||
@@ -1728,15 +1728,43 @@ const closeWindow = () => {
|
|||||||
|
|
||||||
import { onMounted, nextTick } from "vue";
|
import { onMounted, nextTick } from "vue";
|
||||||
|
|
||||||
const getGitEmail = async () => {
|
const getGitInfo = async () => {
|
||||||
try {
|
try {
|
||||||
const result = await window.ipcRenderer.invoke("get-git-email");
|
const [nameResult, emailResult] = await Promise.all([
|
||||||
if (result?.success && result.data) {
|
window.ipcRenderer.invoke("get-git-name"),
|
||||||
formData.mail = result.data;
|
window.ipcRenderer.invoke("get-git-email"),
|
||||||
console.log("[Submitter] Git email auto-filled:", result.data);
|
]);
|
||||||
|
|
||||||
|
let gitName = "";
|
||||||
|
let gitEmail = "";
|
||||||
|
|
||||||
|
if (nameResult?.success && nameResult.data) {
|
||||||
|
gitName = nameResult.data;
|
||||||
|
console.log("[Submitter] Git name auto-filled:", gitName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (emailResult?.success && emailResult.data) {
|
||||||
|
gitEmail = emailResult.data;
|
||||||
|
console.log("[Submitter] Git email auto-filled:", gitEmail);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将 git name 和 email 合并填入 contributor 字段,格式: Name <email>
|
||||||
|
if (gitName || gitEmail) {
|
||||||
|
if (gitName && gitEmail) {
|
||||||
|
formData.contributor = `${gitName} <${gitEmail}>`;
|
||||||
|
} else if (gitName) {
|
||||||
|
formData.contributor = gitName;
|
||||||
|
} else if (gitEmail) {
|
||||||
|
formData.contributor = gitEmail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 单独填入邮箱
|
||||||
|
if (gitEmail) {
|
||||||
|
formData.mail = gitEmail;
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.warn("[Submitter] Failed to get git email:", err);
|
console.warn("[Submitter] Failed to get git info:", err);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1744,8 +1772,8 @@ onMounted(async () => {
|
|||||||
console.log("[Submitter] Component mounted, loading categories and tags");
|
console.log("[Submitter] Component mounted, loading categories and tags");
|
||||||
// 先等待分类列表加载完成,避免后续竞态
|
// 先等待分类列表加载完成,避免后续竞态
|
||||||
await Promise.all([loadCategoriesList(), loadTagsList()]);
|
await Promise.all([loadCategoriesList(), loadTagsList()]);
|
||||||
// 尝试从 git 配置读取邮箱
|
// 尝试从 git 配置读取 name 和 email,填入 contributor 和 mail
|
||||||
await getGitEmail();
|
await getGitInfo();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user