...
1
16
17 package utils
18
19 import (
20 "fmt"
21 "io/ioutil"
22 "os"
23 )
24
25
26 type TempFile struct {
27 filenames []string
28 }
29
30
31 func (tf *TempFile) WriteTemp(data []byte) (file string, err error) {
32 f, err := ioutil.TempFile("", "buildifier-tmp-")
33 if err != nil {
34 return "", fmt.Errorf("creating temporary file: %v", err)
35 }
36 defer func() {
37 e := f.Close()
38 if e != nil {
39 err = e
40 }
41 }()
42
43 name := f.Name()
44 if _, err := f.Write(data); err != nil {
45 return "", fmt.Errorf("writing temporary file: %v", err)
46 }
47 tf.filenames = append(tf.filenames, name)
48 return name, nil
49 }
50
51
52 func (tf *TempFile) Clean() error {
53 for _, file := range tf.filenames {
54 if err := os.Remove(file); err != nil {
55 return err
56 }
57 }
58 tf.filenames = []string{}
59 return nil
60 }
61
View as plain text