63 lines
1.2 KiB
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
|
|
}
|