@@ -21,6 +21,13 @@ const (
21
21
22
22
var ErrArgsMismatched = errors .New ("mismatched argument count" )
23
23
24
+ type Compression string
25
+
26
+ const (
27
+ None Compression = "none"
28
+ Gzip Compression = "gzip"
29
+ )
30
+
24
31
// embedfs contains the embedded files for deployment, as a read-only FileSystem containing only "embedfs/".
25
32
//
26
33
//nolint:typecheck // dir is populated at build.
@@ -70,20 +77,25 @@ func (c *compoundReadCloser) Close() error {
70
77
return nil
71
78
}
72
79
73
- func Extract (p string ) (* compoundReadCloser , error ) {
80
+ func Extract (p string , compression Compression ) (* compoundReadCloser , error ) {
74
81
f , err := embedfs .Open (path .Join (cwd , p ))
75
82
if err != nil {
76
83
return nil , errors .Wrapf (err , "failed to open file %s" , p )
77
84
}
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 :
81
93
}
82
- return & compoundReadCloser {closer : f , readcloser : r }, nil
94
+ return & compoundReadCloser {closer : f , readcloser : rc }, nil
83
95
}
84
96
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 )
87
99
if err != nil {
88
100
return err
89
101
}
@@ -104,14 +116,14 @@ func deploy(src, dest string) error {
104
116
return errors .Wrapf (err , "failed to copy %s to %s" , src , dest )
105
117
}
106
118
107
- func Deploy (log * zap.Logger , srcs , dests []string ) error {
119
+ func Deploy (log * zap.Logger , srcs , dests []string , compression Compression ) error {
108
120
if len (srcs ) != len (dests ) {
109
121
return errors .Wrapf (ErrArgsMismatched , "%d and %d" , len (srcs ), len (dests ))
110
122
}
111
123
for i := range srcs {
112
124
src := srcs [i ]
113
125
dest := dests [i ]
114
- if err := deploy (src , dest ); err != nil {
126
+ if err := deploy (src , dest , compression ); err != nil {
115
127
return err
116
128
}
117
129
log .Info ("wrote file" , zap .String ("src" , src ), zap .String ("dest" , dest ))
0 commit comments