cmd/release/utils/git/pr.go (36 lines of code) (raw):
package git
import (
"fmt"
"io"
"os"
"os/exec"
"path/filepath"
"github.com/aws/eks-distro/cmd/release/utils/values"
)
var (
prScriptPathFromRoot = filepath.Join(values.GetGitRootDirectory(), "cmd/release/utils/git/open-pr.sh")
outputStream io.Writer = os.Stdout
errStream io.Writer = os.Stderr
)
func (gm *Manager) OpenPR() error {
if err := gm.currentBranchMustBeChangesBranch(); err != nil {
return fmt.Errorf("checking expected branch before opening PR: %w", err)
}
prTitle, err := gm.ct.GetDescription(gm.version)
if err != nil {
return fmt.Errorf("getting PR description: %w", err)
}
cmd := exec.Command("/bin/bash", prScriptPathFromRoot, gm.changesBranch, prTitle)
cmd.Stdout = outputStream
cmd.Stderr = errStream
if err = cmd.Run(); err != nil {
if err = gm.abandonChangesBranch(); err != nil {
fmt.Printf("checking out original branch after opening PR: %v\n", err)
}
return fmt.Errorf("opening PR: %v", err)
}
if err = gm.abandonChangesBranch(); err != nil {
return fmt.Errorf("checking out original branch after opening PR: %w", err)
}
return nil
}