github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/api.go (about) 1 package tiltfile 2 3 import ( 4 "bytes" 5 "embed" 6 "fmt" 7 "io/fs" 8 "os" 9 "path/filepath" 10 11 "github.com/tilt-dev/tilt/pkg/model" 12 ) 13 14 //go:embed api/*.py api/*/*.py 15 var api embed.FS 16 17 const autoGeneratedHeader = `### AUTO-GENERATED ### 18 # This file was auto-generated by 'tilt dump api-docs' as part of a Tilt release. 19 # To make changes, modify the following file in the Tilt repository: 20 # internal/tiltfile/%s 21 # Generated by Tilt version %s 22 ### AUTO-GENERATED ### 23 24 ` 25 26 func ApiStubs() fs.FS { 27 f, err := fs.Sub(api, "api") 28 if err != nil { 29 panic(err) 30 } 31 return f 32 } 33 34 func WalkApiStubs(fn fs.WalkDirFunc) error { 35 return fs.WalkDir(api, "api", fn) 36 } 37 38 func DumpApiStubs(dir string, info model.TiltBuild, callback func(string, error)) error { 39 return WalkApiStubs(func(path string, d fs.DirEntry, e error) error { 40 if e != nil { 41 return e 42 } 43 var err error 44 dest := filepath.Join(dir, path) 45 if d.IsDir() { 46 err = os.MkdirAll(dest, 0755) 47 } else { 48 buf := bytes.NewBufferString(fmt.Sprintf(autoGeneratedHeader, path, info.HumanBuildStamp())) 49 var bytes []byte 50 bytes, err = api.ReadFile(path) 51 if err != nil { 52 return err 53 } 54 buf.Write(bytes) 55 err = os.WriteFile(dest, buf.Bytes(), 0644) 56 } 57 callback(path, err) 58 return err 59 }) 60 }