pr-deployer/pkgs/services/services.go

63 lines
1.2 KiB
Go

package services
import (
"fmt"
"os"
"path/filepath"
"strconv"
"gitea.com/gitea/pr-deployer/pkgs/settings"
git "github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing"
)
func UpdateAndStartPullRequest(number int) error {
// 1 download the git
p := filepath.Join(settings.CodeCacheDir, strconv.Itoa(number))
fmt.Println("clone code into", p)
// 1.1 git fetch origin +refs/heads/main
// 1.2 git checkout main
// 1.3 git fetch origin refs/pull/17422/head
// 1.4 git merge <xxxxxx>
st, err := os.Stat(p)
if err != nil {
if os.IsNotExist(err) {
_, err = git.PlainClone(p, false, &git.CloneOptions{
URL: "https://github.com/go-gitea/gitea",
InsecureSkipTLS: false,
ReferenceName: plumbing.NewRemoteReferenceName("", fmt.Sprintf("refs/pull/%d/head", number)),
SingleBranch: true,
})
if err != nil {
return err
}
}
return err
}
if !st.IsDir() {
return fmt.Errorf("%s is a file but not a dir", p)
}
_, err = git.PlainOpen(p)
if err != nil {
return err
}
// 2 build
// 3 change domain
// 4 chagne reverse server
// 5 send commit status
return nil
}
func StopPullRequest(number int) error {
return nil
}