@@ -22,6 +22,7 @@ type userApprovalRuntime interface {
2222 Say (msg string , v ... interface {}) robot.RetVal
2323 Log (l robot.LogLevel , m string , v ... interface {}) bool
2424 pipelineNameForApproval () string
25+ commandNameForApproval () string
2526}
2627
2728func init () {
@@ -32,6 +33,10 @@ func (r Robot) pipelineNameForApproval() string {
3233 return r .pipeName
3334}
3435
36+ func (r Robot ) commandNameForApproval () string {
37+ return r .plugCommand
38+ }
39+
3540func userApprovalElevate (gr robot.Robot , command string , args ... string ) robot.TaskRetVal {
3641 if command != "_elevate" {
3742 return robot .Normal
@@ -52,6 +57,7 @@ func runUserApproval(r userApprovalRuntime) robot.TaskRetVal {
5257
5358 requester := canonicalApprovalUser (r .GetMessage ().User )
5459 pipeName := strings .TrimSpace (r .pipelineNameForApproval ())
60+ actionName := userApprovalActionName (pipeName , r .commandNameForApproval ())
5561 approvers := effectiveApprovalApprovers (cfg , pipeName , requester )
5662 if len (approvers ) == 0 {
5763 r .Log (robot .Error , "builtin-userapproval has no eligible approvers for pipeline '%s', requester '%s'" , pipeName , requester )
@@ -64,7 +70,7 @@ func runUserApproval(r userApprovalRuntime) robot.TaskRetVal {
6470 return robot .Fail
6571 }
6672
67- choicePrompt := userApprovalChoicePrompt (pipeName , approvers )
73+ choicePrompt := userApprovalChoicePrompt (actionName , approvers )
6874 choice , ret := r .PromptForReply (userApprovalChoiceMatcher , choicePrompt )
6975 if ret != robot .Ok {
7076 r .Log (robot .Warn , "builtin-userapproval requester '%s' did not select an approver for pipeline '%s': %s" , requester , pipeName , ret )
@@ -78,8 +84,8 @@ func runUserApproval(r userApprovalRuntime) robot.TaskRetVal {
7884 }
7985
8086 answer , ret := r .PromptUserForReply ("YesNo" , approver ,
81- "%s requests approval to run elevated action for '%s'. Reply yes to approve or no to deny. " ,
82- requester , pipeName )
87+ "%s is requesting approval to run command %s - approve? (y/n) " ,
88+ requester , actionName )
8389 if ret != robot .Ok {
8490 r .Log (robot .Warn , "builtin-userapproval approver '%s' did not respond for requester '%s', pipeline '%s': %s" , approver , requester , pipeName , ret )
8591 r .Say ("Approval request to %s did not complete" , approver )
@@ -123,12 +129,24 @@ func canonicalApprovalUser(user string) string {
123129 return strings .ToLower (strings .TrimSpace (user ))
124130}
125131
126- func userApprovalChoicePrompt (pipeName string , approvers []string ) string {
132+ func userApprovalActionName (pipeName , command string ) string {
133+ pipeName = strings .TrimSpace (pipeName )
134+ command = strings .TrimSpace (command )
135+ if pipeName == "" {
136+ return command
137+ }
138+ if command == "" {
139+ return pipeName
140+ }
141+ return pipeName + "/" + command
142+ }
143+
144+ func userApprovalChoicePrompt (actionName string , approvers []string ) string {
127145 choices := make ([]string , 0 , len (approvers ))
128146 for i , approver := range approvers {
129147 choices = append (choices , fmt .Sprintf ("%c) %s" , 'a' + i , approver ))
130148 }
131- return fmt .Sprintf ("This command requires approval for '%s' . Select one approver: %s" , pipeName , strings .Join (choices , ", " ))
149+ return fmt .Sprintf ("Approval required for command %s . Select one approver: %s" , actionName , strings .Join (choices , ", " ))
132150}
133151
134152func userApprovalApproverForChoice (choice string , approvers []string ) (string , bool ) {
0 commit comments