@@ -21,6 +21,7 @@ var pushFlagThrottle string
2121var pushFlagBodyFile string
2222var pushFlagLabels []string
2323var pushFlagDraft bool
24+ var pushFlagPlannedOnly bool
2425
2526// rate limits the # of git pushes. used to prevent load on CI system
2627var pushThrottle * time.Ticker
@@ -29,6 +30,7 @@ var prAssignee string
2930var prBody string
3031var prLabels []string
3132var prDraft bool
33+ var prPlannedOnly bool
3234
3335var pushCmd = & cobra.Command {
3436 Use : "push" ,
@@ -83,6 +85,12 @@ var pushCmd = &cobra.Command{
8385 }
8486 prDraft = draft
8587
88+ plannedOnly , err := cmd .Flags ().GetBool ("planned-only" )
89+ if err != nil {
90+ log .Fatal (err )
91+ }
92+ prPlannedOnly = plannedOnly
93+
8694 repos , err := whichRepos (cmd )
8795 if err != nil {
8896 log .Fatal (err )
@@ -114,6 +122,18 @@ func pushOneRepo(r lib.Repo, ctx context.Context) error {
114122 return nil
115123 }
116124
125+ // Exit early if already pushed and --planned-only flag is used
126+ if prPlannedOnly {
127+ var pushOutput struct {
128+ push.Output
129+ Error string
130+ }
131+ if loadJSON (outputPath (r .Name , "push" ), & pushOutput ) == nil && pushOutput .Success {
132+ log .Printf ("%s/%s - already pushed (skipping due to --planned-only)" , r .Owner , r .Name )
133+ return nil
134+ }
135+ }
136+
117137 // Get previous step's output
118138 var planOutput plan.Output
119139 if loadJSON (outputPath (r .Name , "plan" ), & planOutput ) != nil || ! planOutput .Success {
@@ -165,4 +185,5 @@ func init() {
165185 pushCmd .Flags ().StringVarP (& pushFlagBodyFile , "body-file" , "b" , "" , "body of PR" )
166186 pushCmd .Flags ().StringSliceVarP (& pushFlagLabels , "labels" , "l" , nil , "labels to attach to PR. for example: `-l 'first label' -l 'second label'`" )
167187 pushCmd .Flags ().BoolVarP (& pushFlagDraft , "draft" , "d" , false , "push a draft pull request (only supported for github)" )
188+ pushCmd .Flags ().BoolVarP (& pushFlagPlannedOnly , "planned-only" , "p" , false , "only push repositories that are in planned state (skip already pushed)" )
168189}
0 commit comments