Bladeren bron

feature!: Trigger changed Triggers, allowing multiple actions (#515)

* feature!: Trigger changed Triggers, allowing multiple actions

* bugfix: Warning message on trigger loops, prevented NPE

* cicd: Fix cyclo complexity with triggers
James Read 1 jaar geleden
bovenliggende
commit
2fc7c23416
2 gewijzigde bestanden met toevoegingen van 17 en 5 verwijderingen
  1. 1 1
      internal/config/config.go
  2. 16 4
      internal/executor/executor.go

+ 1 - 1
internal/config/config.go

@@ -21,7 +21,7 @@ type Action struct {
 	ExecOnFileCreatedInDir []string
 	ExecOnFileCreatedInDir []string
 	ExecOnFileChangedInDir []string
 	ExecOnFileChangedInDir []string
 	ExecOnCalendarFile     string
 	ExecOnCalendarFile     string
-	Trigger                string
+	Triggers               []string
 	MaxConcurrent          int
 	MaxConcurrent          int
 	MaxRate                []RateSpec
 	MaxRate                []RateSpec
 	Arguments              []ActionArgument
 	Arguments              []ActionArgument

+ 16 - 4
internal/executor/executor.go

@@ -580,9 +580,23 @@ func stepExecAfter(req *ExecutionRequest) bool {
 }
 }
 
 
 func stepTrigger(req *ExecutionRequest) bool {
 func stepTrigger(req *ExecutionRequest) bool {
-	if req.Action.Trigger != "" {
+	if req.Action.Triggers == nil {
+		return true
+	}
+
+	if len(req.Tags) > 0 && req.Tags[0] == "trigger" {
+		log.Warnf("Trigger action is triggering another trigger action. This is allowed, but be careful not to create trigger loops.")
+	}
+
+	triggerLoop(req)
+
+	return true
+}
+
+func triggerLoop(req *ExecutionRequest) {
+	for _, triggerReq := range req.Action.Triggers {
 		trigger := &ExecutionRequest{
 		trigger := &ExecutionRequest{
-			ActionTitle:       req.Action.Trigger,
+			ActionTitle:       triggerReq,
 			TrackingID:        uuid.NewString(),
 			TrackingID:        uuid.NewString(),
 			Tags:              []string{"trigger"},
 			Tags:              []string{"trigger"},
 			AuthenticatedUser: req.AuthenticatedUser,
 			AuthenticatedUser: req.AuthenticatedUser,
@@ -591,8 +605,6 @@ func stepTrigger(req *ExecutionRequest) bool {
 
 
 		req.executor.ExecRequest(trigger)
 		req.executor.ExecRequest(trigger)
 	}
 	}
-
-	return true
 }
 }
 
 
 func stepSaveLog(req *ExecutionRequest) bool {
 func stepSaveLog(req *ExecutionRequest) bool {