123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package backend
- import (
- "fmt"
- "github.com/allanpk716/ChineseSubFinder/cmd/GetCAPTCHA/backend/config"
- "github.com/allanpk716/ChineseSubFinder/internal/common"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/something_static"
- "github.com/go-git/go-git/v5"
- "github.com/go-git/go-git/v5/plumbing/object"
- "github.com/go-git/go-git/v5/plumbing/transport/ssh"
- sshOrg "golang.org/x/crypto/ssh"
- "os"
- "time"
- )
- func GitProcess(config config.Config, enString string) error {
- fmt.Println("Now Time", time.Now().Format("2006-01-02 15:04:05"))
- nowTime := time.Now().Format("2006-01-02")
- // 实例化登录密钥
- publicKeys, err := ssh.NewPublicKeysFromFile("git", config.SSHKeyFullPath, config.SSHKeyPwd)
- if err != nil {
- return err
- }
- publicKeys.HostKeyCallback = sshOrg.InsecureIgnoreHostKey()
- var r *git.Repository
- var w *git.Worktree
- if my_util.IsDir(config.CloneProjectDesSaveDir) == true {
- // 需要 pull
- fmt.Println("Pull Start...")
- r, err = git.PlainOpen(config.CloneProjectDesSaveDir)
- if err != nil {
- return err
- }
- w, err = r.Worktree()
- if err != nil {
- return err
- }
- err = w.Pull(&git.PullOptions{Auth: publicKeys, RemoteName: "origin"})
- if err != nil {
- if err != git.NoErrAlreadyUpToDate {
- return err
- }
- }
- fmt.Println("Pull End")
- } else {
- // 需要 clone
- fmt.Println("PlainClone Start...")
- r, err = git.PlainClone(config.CloneProjectDesSaveDir, false, &git.CloneOptions{
- Auth: publicKeys,
- URL: config.GitProjectUrl,
- Progress: os.Stdout,
- })
- if err != nil {
- return err
- }
- fmt.Println("PlainClone End")
- }
- // 存储外部传入的字符串到文件
- bok, err := something_static.WriteFile(config.CloneProjectDesSaveDir, enString, nowTime)
- if err != nil {
- return err
- }
- if bok == false {
- // 说明无需继续,因为文件没有变化
- fmt.Println("Code not change, Skip This Time")
- return nil
- }
- fmt.Println("Write File Done")
- w, err = r.Worktree()
- if err != nil {
- return err
- }
- _, err = w.Add(common.StaticFileName00)
- if err != nil {
- return err
- }
- status, err := w.Status()
- fmt.Println("Status", status)
- commit, err := w.Commit("update", &git.CommitOptions{
- Author: &object.Signature{
- Name: "haha",
- Email: "[email protected]",
- When: time.Now(),
- },
- })
- if err != nil {
- return err
- }
- _, err = r.CommitObject(commit)
- if err != nil {
- return err
- }
- fmt.Println("Commit Done")
- err = r.Push(&git.PushOptions{
- Auth: publicKeys,
- })
- if err != nil {
- return err
- }
- fmt.Println("Push Done.")
- return nil
- }
|