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  }