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  }