@@ -3,12 +3,11 @@ package cmd
33import (
44 "fmt"
55 "github.com/MakeNowJust/heredoc/v2"
6- "os"
7-
86 "github.com/rsteube/carapace"
97 "github.com/spf13/cobra"
108 "github.com/zaquestion/lab/internal/action"
119 lab "github.com/zaquestion/lab/internal/gitlab"
10+ "os"
1211)
1312
1413var mrApproveCmd = & cobra.Command {
@@ -28,11 +27,18 @@ var mrApproveCmd = &cobra.Command{
2827 log .Fatal (err )
2928 }
3029
31- p , err := lab .FindProject (rn )
30+ approvalConfig , err := lab .GetMRApprovalsConfiguration (rn , int ( id ) )
3231 if err != nil {
3332 log .Fatal (err )
3433 }
3534
35+ for _ , approvers := range approvalConfig .ApprovedBy {
36+ if approvers .User .Username == lab .User () {
37+ fmt .Printf ("Merge Request !%d already approved\n " , id )
38+ os .Exit (1 )
39+ }
40+ }
41+
3642 comment , err := cmd .Flags ().GetBool ("with-comment" )
3743 if err != nil {
3844 log .Fatal (err )
@@ -48,26 +54,23 @@ var mrApproveCmd = &cobra.Command{
4854 log .Fatal (err )
4955 }
5056
51- if comment || len (msgs ) > 0 || filename != "" {
52- linebreak , err := cmd .Flags ().GetBool ("force-linebreak" )
57+ note := comment || len (msgs ) > 0 || filename != ""
58+ linebreak := false
59+ if note {
60+ linebreak , err = cmd .Flags ().GetBool ("force-linebreak" )
5361 if err != nil {
5462 log .Fatal (err )
5563 }
56-
57- createNote (rn , true , int (id ), msgs , filename , linebreak , "" )
58- }
59-
60- err = lab .MRApprove (p .ID , int (id ))
61- if err != nil {
62- if err == lab .ErrStatusForbidden {
63- log .Fatal (err )
64- }
65- if err == lab .ErrActionRepeated {
66- fmt .Printf ("Merge Request !%d already approved\n " , id )
67- os .Exit (1 )
64+ if comment {
65+ state := noteGetState (rn , true , int (id ))
66+ msg , _ := noteMsg (msgs , true , int (id ), state , "" , "" )
67+ msgs = append (msgs , msg )
6868 }
6969 }
7070
71+ msgs = append (msgs , "/approve" )
72+ createNote (rn , true , int (id ), msgs , filename , linebreak , "" , note )
73+
7174 fmt .Printf ("Merge Request !%d approved\n " , id )
7275 },
7376}
0 commit comments