branch-commit-compare
Version:
Git branch comparison tool
102 lines (88 loc) • 2.68 kB
JavaScript
const fs = require("fs");
const path = require("path");
const cors = require("cors");
const express = require("express");
const { APP_DATA_DIR } = require("./config");
const app = express();
// 配置 CORS,允许所有必要的请求头
app.use(
cors({
origin: "*",
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allowedHeaders: ["Content-Type", "Cache-Control", "Pragma"],
credentials: false,
})
);
app.use(express.json());
const dataDir = APP_DATA_DIR;
const ignoreFile = path.join(dataDir, "commit-ignore.json");
const remarksFile = path.join(dataDir, "commit-remarks.json");
// 确保数据目录存在
if (!fs.existsSync(dataDir)) {
fs.mkdirSync(dataDir, { recursive: true });
}
// 初始化文件
if (!fs.existsSync(ignoreFile)) {
fs.writeFileSync(ignoreFile, JSON.stringify({ ignoredCommits: [] }));
}
if (!fs.existsSync(remarksFile)) {
fs.writeFileSync(remarksFile, JSON.stringify({ commitRemarks: {} }));
}
// 获取忽略的提交
app.get("/ignored-commits", (req, res) => {
try {
const data = fs.readFileSync(ignoreFile, "utf8");
res.json(JSON.parse(data));
} catch (error) {
console.error("读取忽略提交失败:", error);
res.status(500).json({ error: "读取忽略提交失败" });
}
});
// 保存忽略的提交
app.post("/ignore-commit", (req, res) => {
try {
const { ignoredCommits } = req.body;
fs.writeFileSync(ignoreFile, JSON.stringify({ ignoredCommits }, null, 2));
res.json({ success: true });
} catch (error) {
console.error("保存忽略提交失败:", error);
res.status(500).json({ error: "保存忽略提交失败" });
}
});
// 获取提交备注
app.get("/commit-remarks", (req, res) => {
try {
const data = fs.readFileSync(remarksFile, "utf8");
res.json(JSON.parse(data));
} catch (error) {
console.error("读取提交备注失败:", error);
res.status(500).json({ error: "读取提交备注失败" });
}
});
// 保存提交备注
app.post("/commit-remarks", (req, res) => {
try {
const { commitRemarks } = req.body;
fs.writeFileSync(remarksFile, JSON.stringify({ commitRemarks }, null, 2));
res.json({ success: true });
} catch (error) {
console.error("保存提交备注失败:", error);
res.status(500).json({ error: "保存提交备注失败" });
}
});
const PORT = 3001;
module.exports = {
startServer: () => {
return new Promise((resolve) => {
app.listen(PORT, () => {
console.log(`服务已启动,端口: ${PORT}`);
resolve(PORT);
});
});
},
};
// 优雅关闭
process.on("SIGINT", () => {
console.log("正在关闭服务器...");
process.exit();
});