@@ -21,6 +21,13 @@ const (
2121
2222var ErrArgsMismatched = errors .New ("mismatched argument count" )
2323
24+ type Compression string
25+
26+ const (
27+ None Compression = "none"
28+ Gzip Compression = "gzip"
29+ )
30+
2431// embedfs contains the embedded files for deployment, as a read-only FileSystem containing only "embedfs/".
2532//
2633//nolint:typecheck // dir is populated at build.
@@ -70,20 +77,25 @@ func (c *compoundReadCloser) Close() error {
7077 return nil
7178}
7279
73- func Extract (p string ) (* compoundReadCloser , error ) {
80+ func Extract (p string , compression Compression ) (* compoundReadCloser , error ) {
7481 f , err := embedfs .Open (path .Join (cwd , p ))
7582 if err != nil {
7683 return nil , errors .Wrapf (err , "failed to open file %s" , p )
7784 }
78- r , err := gzip .NewReader (bufio .NewReader (f ))
79- if err != nil {
80- return nil , errors .Wrap (err , "failed to build reader" )
85+ var rc io.ReadCloser = f
86+ switch compression {
87+ case Gzip :
88+ rc , err = gzip .NewReader (bufio .NewReader (f ))
89+ if err != nil {
90+ return nil , errors .Wrap (err , "failed to build reader" )
91+ }
92+ default :
8193 }
82- return & compoundReadCloser {closer : f , readcloser : r }, nil
94+ return & compoundReadCloser {closer : f , readcloser : rc }, nil
8395}
8496
85- func deploy (src , dest string ) error {
86- rc , err := Extract (src )
97+ func deploy (src , dest string , compression Compression ) error {
98+ rc , err := Extract (src , compression )
8799 if err != nil {
88100 return err
89101 }
@@ -104,14 +116,14 @@ func deploy(src, dest string) error {
104116 return errors .Wrapf (err , "failed to copy %s to %s" , src , dest )
105117}
106118
107- func Deploy (log * zap.Logger , srcs , dests []string ) error {
119+ func Deploy (log * zap.Logger , srcs , dests []string , compression Compression ) error {
108120 if len (srcs ) != len (dests ) {
109121 return errors .Wrapf (ErrArgsMismatched , "%d and %d" , len (srcs ), len (dests ))
110122 }
111123 for i := range srcs {
112124 src := srcs [i ]
113125 dest := dests [i ]
114- if err := deploy (src , dest ); err != nil {
126+ if err := deploy (src , dest , compression ); err != nil {
115127 return err
116128 }
117129 log .Info ("wrote file" , zap .String ("src" , src ), zap .String ("dest" , dest ))
0 commit comments