From faa5ca8fab23176d390e9522f1485d467851545b Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 6 Apr 2025 01:55:21 +0800 Subject: Move stuff into internal/unsorted --- internal/unsorted/http_handle_repo_index.go | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 internal/unsorted/http_handle_repo_index.go (limited to 'internal/unsorted/http_handle_repo_index.go') diff --git a/internal/unsorted/http_handle_repo_index.go b/internal/unsorted/http_handle_repo_index.go new file mode 100644 index 0000000..f2bb480 --- /dev/null +++ b/internal/unsorted/http_handle_repo_index.go @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: AGPL-3.0-only +// SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu + +package unsorted + +import ( + "net/http" + + "go.lindenii.runxiyu.org/forge/internal/git2c" + "go.lindenii.runxiyu.org/forge/internal/render" + "go.lindenii.runxiyu.org/forge/internal/web" +) + +// httpHandleRepoIndex provides the front page of a repo using git2d. +func (s *Server) httpHandleRepoIndex(w http.ResponseWriter, req *http.Request, params map[string]any) { + repoName := params["repo_name"].(string) + groupPath := params["group_path"].([]string) + + _, repoPath, _, _, _, _, _ := s.getRepoInfo(req.Context(), groupPath, repoName, "") // TODO: Don't use getRepoInfo + + client, err := git2c.NewClient(s.config.Git.Socket) + if err != nil { + web.ErrorPage500(s.templates, w, params, err.Error()) + return + } + defer client.Close() + + commits, readme, err := client.Cmd1(repoPath) + if err != nil { + web.ErrorPage500(s.templates, w, params, err.Error()) + return + } + + params["commits"] = commits + params["readme_filename"] = readme.Filename + _, params["readme"] = render.Readme(readme.Content, readme.Filename) + + s.renderTemplate(w, "repo_index", params) + + // TODO: Caching +} -- cgit v1.2.3