github.com/al45tair/pkger@v0.15.0/pkging/pkgutil/stuff.go (about) 1 package pkgutil 2 3 import ( 4 "fmt" 5 "io" 6 "os" 7 "strings" 8 9 "github.com/gobuffalo/here" 10 "github.com/al45tair/pkger/parser" 11 "github.com/al45tair/pkger/pkging/embed" 12 "github.com/al45tair/pkger/pkging/mem" 13 ) 14 15 func Stuff(w io.Writer, c here.Info, decls parser.Decls) error { 16 pkg, err := mem.New(c) 17 if err != nil { 18 return err 19 } 20 21 files, err := decls.Files() 22 if err != nil { 23 return err 24 } 25 26 for _, pf := range files { 27 err = func() error { 28 if strings.HasSuffix(pf.Abs, ".tmp") { 29 return nil 30 } 31 df, err := os.Open(pf.Abs) 32 if err != nil { 33 return fmt.Errorf("could open stuff %s: %s", pf.Abs, err) 34 } 35 defer df.Close() 36 37 if err := pkg.Add(df); err != nil { 38 return err 39 } 40 41 return err 42 }() 43 44 if err != nil { 45 return err 46 } 47 } 48 49 b, err := pkg.MarshalJSON() 50 if err != nil { 51 return err 52 } 53 54 b, err = embed.Encode(b) 55 if err != nil { 56 return err 57 } 58 59 _, err = w.Write(b) 60 return nil 61 }