github.com/bingoohuang/pkger@v0.0.0-20210127185155-a71b9df4c4c7/pkging/pkgutil/dump.go (about) 1 package pkgutil 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io" 7 "os" 8 9 "github.com/bingoohuang/pkger/here" 10 "github.com/bingoohuang/pkger/pkging" 11 ) 12 13 func Dump(w io.Writer, pkg pkging.Pkger) error { 14 d := struct { 15 Type string 16 Info here.Info 17 Paths map[string]os.FileInfo 18 }{ 19 Type: fmt.Sprintf("%T", pkg), 20 Paths: map[string]os.FileInfo{}, 21 } 22 23 info, err := pkg.Current() 24 if err != nil { 25 return err 26 } 27 d.Info = info 28 29 err = pkg.Walk("/", func(path string, info os.FileInfo, err error) error { 30 if err != nil { 31 return err 32 } 33 34 d.Paths[path] = info 35 return nil 36 }) 37 if err != nil { 38 return err 39 } 40 41 enc := json.NewEncoder(w) 42 enc.SetIndent("", " ") 43 44 if err := enc.Encode(d); err != nil { 45 return err 46 } 47 48 return nil 49 }