oioss

Форк
0
/
gitupdate.go 
58 строк · 1.2 Кб
1
package controllers
2

3
import (
4
	"fmt"
5
	"github.com/gofiber/fiber/v2"
6
	"log"
7
	"main/src/utils"
8
	"os"
9
	"strings"
10
)
11

12
func GitUpdate(c *fiber.Ctx) error {
13
	gitDirs := utils.FindGitDirectories(os.Getenv("SS_StaticDir"))
14
	repo := c.AllParams()["repo"]
15

16
	if len(gitDirs) == 0 {
17
		return c.Status(fiber.StatusPreconditionFailed).JSON(fiber.Map{
18
			"error": "No active .git directories",
19
		})
20
	}
21

22
	for _, dir := range gitDirs {
23
		if strings.Contains(dir, repo) {
24
			type Repo struct {
25
				FullName string `json:"fullName"`
26
			}
27
			type Pusher struct {
28
				Name string `json:"name"`
29
			}
30
			body := struct {
31
				TotalCommits int    `json:"totalCommits"`
32
				Repository   Repo   `json:"repository"`
33
				Pusher       Pusher `json:"pusher"`
34
			}{}
35
			if err := c.BodyParser(&body); err != nil {
36
				return err
37
			}
38
			log.Printf(`Remote repository %s updated
39
				Info:
40
					TotalCommits: %d
41
					PusherName: %s
42
				`, body.Repository.FullName, body.TotalCommits, body.Pusher.Name)
43

44
			err := utils.UpdateGitRepo(dir)
45
			if err != nil {
46
				log.Println(err)
47
			}
48
			return c.JSON(fiber.Map{
49
				"Repository": fmt.Sprintf("Repository %s found", repo),
50
			})
51
		}
52
	}
53

54
	return c.Status(fiber.StatusNotFound).JSON(fiber.Map{
55
		"error": fmt.Sprintf("Repository %s not found", repo),
56
	})
57

58
}
59

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.