github.com/chrislusf/greenpack@v3.7.1-0.20170911073826-ad5bd10b7c47+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 }