github.com/lheiskan/zebrapack@v4.1.1-0.20181107023619-e955d028f9bf+incompatible/cmd/addzid/diff.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"os"
     7  	"os/exec"
     8  )
     9  
    10  func Diffb(a string, b string) []byte {
    11  
    12  	dirpath := NewSimpleTempDir("diffdir_")
    13  	defer os.RemoveAll(dirpath)
    14  
    15  	fa := SimpleTempFile(dirpath)
    16  	fmt.Fprintf(fa, "%s\n", a)
    17  	fa.Close()
    18  
    19  	fb := SimpleTempFile(dirpath)
    20  	fmt.Fprintf(fb, "%s\n", b)
    21  	fb.Close()
    22  
    23  	co, err := exec.Command("diff", "-b", fa.Name(), fb.Name()).CombinedOutput()
    24  	if err != nil {
    25  		// don't panic, diff returns 2 on differences
    26  	}
    27  	return co
    28  }
    29  
    30  func NewSimpleTempDir(prefix string) string {
    31  	dirpath, err := ioutil.TempDir(".", prefix)
    32  	if err != nil {
    33  		panic(err)
    34  	}
    35  	return dirpath
    36  }
    37  
    38  func SimpleTempFile(dirpath string) *os.File {
    39  
    40  	f, err := ioutil.TempFile(dirpath, "diff_file_")
    41  	if err != nil {
    42  		panic(err)
    43  	}
    44  	return f
    45  }