git-sync-web 自动提交 2026-09-09 13:46:40

This commit is contained in:
tamakyi
2026-09-09 13:46:41 +08:00
parent b921569b72
commit bba6a3362e
7 changed files with 234 additions and 24 deletions
+18 -1
View File
@@ -55,6 +55,7 @@ func NewServer(e *Engine, static fs.FS, password string) *Server {
mux.HandleFunc("PUT /api/repos/{name}/file", s.wrapRepo(s.fileWriteRepo))
mux.HandleFunc("POST /api/repos/{name}/commit", s.wrapRepo(s.commitFileRepo))
mux.HandleFunc("GET /api/repos/{name}/diff", s.wrapRepo(s.diffRepo))
mux.HandleFunc("GET /api/cron-next", s.handleCronNext)
mux.Handle("/", http.FileServer(http.FS(static)))
return s
}
@@ -401,10 +402,26 @@ func (s *Server) diffRepo(w http.ResponseWriter, r *http.Request, name string) {
if scope == "" {
scope = "working"
}
res, err := s.engine.WorkingDiff(name, scope)
// path 可选:传入时只对比该文件(用于编辑器「对比此文件」)
res, err := s.engine.WorkingDiff(name, scope, r.URL.Query().Get("path"))
if err != nil {
writeErr(w, 400, err.Error())
return
}
writeJSON(w, 200, res)
}
// handleCronNext 返回 cron 表达式的下次执行时间,供配置表单实时预览
func (s *Server) handleCronNext(w http.ResponseWriter, r *http.Request) {
expr := r.URL.Query().Get("expr")
if expr == "" {
writeErr(w, 400, "缺少 expr 参数")
return
}
next, err := cronNextString(expr)
if err != nil {
writeErr(w, 400, err.Error())
return
}
writeJSON(w, 200, map[string]any{"next": next})
}