this repo has no description
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}