@@ -3,8 +3,10 @@ package main
33import (
44 "context"
55 "errors"
6+ "fmt"
67 "log/slog"
78 "os"
9+ "strconv"
810 "strings"
911
1012 "github.com/google/go-github/v50/github"
@@ -47,35 +49,37 @@ func main() {
4749 }
4850
4951 var (
50- ctx = context .Background ()
51- token = os .Getenv ("GITHUB_TOKEN" )
52- client = github .NewTokenClient (ctx , token )
53- inputs = GetInputs ()
54- payload = & github.PullRequestTargetEvent {}
52+ ctx = context .Background ()
53+ token = os .Getenv ("GITHUB_TOKEN" )
54+ client = github .NewTokenClient (ctx , token )
55+ inputs = GetInputs ()
56+
57+ // If specified, takes precedence over event data
58+ repoOwner = os .Getenv ("REPO_OWNER" )
59+ repoName = os .Getenv ("REPO_NAME" )
60+ prNumber , _ = strconv .Atoi (os .Getenv ("PR_NUMBER" ))
61+ prLabel = os .Getenv ("PR_LABEL" )
5562 )
5663
5764 if token == "" {
5865 panic ("token can not be empty" )
5966 }
6067
61- if err := UnmarshalEventData (ghctx , & payload ); err != nil {
62- log .Error ("error reading github payload" , "error" , err )
68+ prInfo , err := GetBackportPrInfo (ctx , log , client , ghctx , repoOwner , repoName , prNumber , prLabel )
69+ if err != nil {
70+ log .Error ("error getting PR info" , "error" , err )
6371 panic (err )
6472 }
6573
66- var (
67- owner = payload .GetRepo ().GetOwner ().GetLogin ()
68- repo = payload .GetRepo ().GetName ()
69- )
74+ log = log .With ("repo" , fmt .Sprintf ("%s/%s" , prInfo .RepoOwner , prInfo .RepoName ), "pull_request" , prInfo .Pr .GetNumber ())
7075
71- log = log .With ("pull_request" , payload .GetNumber ())
72- branches , err := ghutil .GetReleaseBranches (ctx , client .Repositories , owner , repo )
76+ branches , err := ghutil .GetReleaseBranches (ctx , log , client .Repositories , prInfo .RepoOwner , prInfo .RepoName )
7377 if err != nil {
7478 log .Error ("error getting branches" , "error" , err )
7579 panic (err )
7680 }
7781
78- targets , err := BackportTargetsFromPayload (branches , payload )
82+ targets , err := BackportTargetsFromPayload (branches , prInfo )
7983 if err != nil {
8084 if errors .Is (err , ErrorNotMerged ) {
8185 log .Warn ("pull request is not merged; nothing to do" )
@@ -88,28 +92,31 @@ func main() {
8892
8993 for _ , target := range targets {
9094 log := log .With ("target" , target )
91- mergeBase , err := MergeBase (ctx , client .Repositories , owner , repo , target .Name , * payload . GetPullRequest ().Base . Ref )
95+ mergeBase , err := MergeBase (ctx , client .Repositories , prInfo . RepoOwner , prInfo . RepoName , target .Name , prInfo . Pr . GetBase ().GetRef () )
9296 if err != nil {
9397 log .Error ("error finding merge-base" , "error" , err )
9498 }
9599
96100 opts := BackportOpts {
97- PullRequestNumber : payload . GetPullRequest () .GetNumber (),
98- SourceSHA : payload . GetPullRequest () .GetMergeCommitSHA (),
99- SourceCommitDate : payload . GetPullRequest (). MergedAt .Time ,
100- SourceTitle : payload . GetPullRequest () .GetTitle (),
101- SourceBody : payload . GetPullRequest () .GetBody (),
101+ PullRequestNumber : prInfo . Pr .GetNumber (),
102+ SourceSHA : prInfo . Pr .GetMergeCommitSHA (),
103+ SourceCommitDate : prInfo . Pr . GetMergedAt () .Time ,
104+ SourceTitle : prInfo . Pr .GetTitle (),
105+ SourceBody : prInfo . Pr .GetBody (),
102106 Target : target ,
103- Labels : append (inputs .Labels , payload . GetPullRequest () .Labels ... ),
104- Owner : owner ,
105- Repository : repo ,
107+ Labels : append (inputs .Labels , prInfo . Pr .Labels ... ),
108+ Owner : prInfo . RepoOwner ,
109+ Repository : prInfo . RepoName ,
106110 MergeBase : mergeBase ,
107111 }
108- pr , err := Backport (ctx , log , client .PullRequests , client .Issues , client .Issues , NewShellCommandRunner (log ), opts )
112+
113+ commandRunner := NewShellCommandRunner (log )
114+ prOut , err := Backport (ctx , log , client .PullRequests , client .Issues , client .Issues , commandRunner , opts )
109115 if err != nil {
110116 log .Error ("backport failed" , "error" , err )
111117 continue
112118 }
113- log .Info ("backport successful" , "url" , pr .GetURL ())
119+
120+ log .Info ("backport successful" , "url" , prOut .GetURL ())
114121 }
115122}
0 commit comments