github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/sub/lib/api.go (about) 1 package lib 2 3 import ( 4 "time" 5 6 "github.com/Cloud-Foundations/Dominator/lib/filter" 7 "github.com/Cloud-Foundations/Dominator/lib/log" 8 "github.com/Cloud-Foundations/Dominator/lib/triggers" 9 "github.com/Cloud-Foundations/Dominator/proto/sub" 10 ) 11 12 type TriggersRunner func(triggers []*triggers.Trigger, action string, 13 logger log.Logger) bool 14 15 type uType struct { 16 rootDirectoryName string 17 objectsDir string 18 skipFilter *filter.Filter 19 runTriggers TriggersRunner 20 disableTriggers bool 21 logger log.Logger 22 lastError error 23 hadTriggerFailures bool 24 fsChangeDuration time.Duration 25 } 26 27 func Update(request sub.UpdateRequest, rootDirectoryName string, 28 objectsDir string, oldTriggers *triggers.Triggers, 29 skipFilter *filter.Filter, triggersRunner TriggersRunner, 30 logger log.Logger) ( 31 bool, time.Duration, error) { 32 if skipFilter == nil { 33 skipFilter = new(filter.Filter) 34 } 35 updateObj := &uType{ 36 rootDirectoryName: rootDirectoryName, 37 objectsDir: objectsDir, 38 skipFilter: skipFilter, 39 runTriggers: triggersRunner, 40 logger: logger, 41 } 42 err := updateObj.update(request, oldTriggers) 43 return updateObj.hadTriggerFailures, updateObj.fsChangeDuration, err 44 }