this repo has no description
at master 898 B view raw
1package main 2 3import ( 4 "bytes" 5 "fmt" 6 "io" 7 "os" 8 "path/filepath" 9 "time" 10 11 "github.com/briandowns/spinner" 12) 13 14func writeRendered(stdout io.Writer, dst string, rendered map[string]*bytes.Buffer) error { 15 spin := spinner.New(spinner.CharSets[39], 100*time.Millisecond, spinner.WithWriter(stdout)) 16 spin.FinalMSG = fmt.Sprintf("%3d/%3d written to dst %q\n", len(rendered), len(rendered), dst) 17 spin.Start() 18 defer spin.Stop() 19 var idx int 20 21 for p, buf := range rendered { 22 idx++ 23 spin.Suffix = fmt.Sprintf("%3d/%3d writing to dst %q", idx, len(rendered), p) 24 25 if p == singleKey { 26 p = dst 27 } else { 28 p = filepath.Join(dst, p) 29 } 30 31 dir := filepath.Dir(p) 32 err := os.MkdirAll(dir, 0o755) 33 if err != nil { 34 return fmt.Errorf("create parent dirs: %w", err) 35 } 36 err = os.WriteFile(p, buf.Bytes(), 0o644) 37 if err != nil { 38 return fmt.Errorf("write file: %w", err) 39 } 40 } 41 return nil 42}