github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/imagetool/diffTriggersInImages.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io" 6 "os" 7 "os/exec" 8 9 "github.com/Cloud-Foundations/Dominator/lib/json" 10 "github.com/Cloud-Foundations/Dominator/lib/log" 11 "github.com/Cloud-Foundations/Dominator/lib/triggers" 12 ) 13 14 func diffTriggersInImagesSubcommand(args []string, 15 logger log.DebugLogger) error { 16 err := diffTriggersInImages(args[0], args[1], args[2]) 17 if err != nil { 18 return fmt.Errorf("error diffing triggers: %s", err) 19 } 20 return nil 21 } 22 23 func diffTriggersInImages(tool, leftName, rightName string) error { 24 leftTriggers, err := getTypedImageTriggers(leftName) 25 if err != nil { 26 return err 27 } 28 rightTriggers, err := getTypedImageTriggers(rightName) 29 if err != nil { 30 return err 31 } 32 leftFile, err := writeTriggersToTempfile(leftTriggers) 33 if err != nil { 34 return err 35 } 36 defer os.Remove(leftFile) 37 rightFile, err := writeTriggersToTempfile(rightTriggers) 38 if err != nil { 39 return err 40 } 41 defer os.Remove(rightFile) 42 cmd := exec.Command(tool, leftFile, rightFile) 43 cmd.Stdout = os.Stdout 44 return cmd.Run() 45 } 46 47 func writeTriggersToTempfile(trig *triggers.Triggers) (string, error) { 48 return writeToTempfile(func(writer io.Writer) error { 49 return json.WriteWithIndent(writer, " ", trig.Triggers) 50 }) 51 }